问题描述
我正在处理从 EEPROM 芯片转储的数据块。我正在做一些逆向工程。我将它作为数组读入 python(这是一个示例片段):
my_array = [63,67,62,127,106,241,65,219,249,02,03,05,255,01,03]
例如我知道:
- 前 3 个字节是带有设备序列号的 ASCII 字符串 [63,62]
- 以下 4 个字节是一个 32 位整数(小端!)[127,65]
- 以下2个字节是两个8位变量[219] [249]
- 以下 4 个字节是 BCD 固定十进制 [02,03](即 23.53)
- 以下2个字节为空[255,255]
- 以下 3 个字节是 8 位变量,带有单个位标志设置 [01,03]
现在...其中一些我知道,一些是猜测,在我的情况下这并不重要,因为我总共只寻找 3 个变量。这个想法是我转储内存芯片,修改值并上传回来。
不得不处理像这样混乱的字节很烦人。不同的数据类型、长度、字节序等。我想要的是某种映射类,我可以在其中放入数组,然后定义内存空间到 python 变量的映射。我可能需要为一些奇怪的函数添加 get/set 函数,比如带小数点的 BDC,但没关系。
我想象这看起来像这样(更改前 3 个字节中的串行代码):
my_array = [63,03]
my_map = {### some mapping of variable names,their length,type,etc###}
data_block = mapper(my_array,my_map)
data_block.serial = 'abc'
print(data_block)
[61,63,03]
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)