CRC计算结果与CRC RevEng推导结果不匹配问题咨询
问题分析与解决
你的核心问题是混淆了RevEng的参数含义,错误地使用-i指定初始值,而实际上-i是控制输入字节的位读取顺序,初始值需要用-n参数指定。
1. 推导参数时的命令错误
你使用的推导命令中,-i 10是无效设置:
-i(--input-order)参数用于指定每个输入字节的位读取顺序,有效值仅为1(低位优先)或8(高位优先,默认值),10是非法值。- 你需要指定的初始值
0x10,对应的RevEng参数是-n(--init),而非-i。
正确的CRC参数推导命令应为:
reveng -w 10 -n 0x10 -s 010000FF0300005A 00F87F000000033D 00000000000003E3 0000FFFFFFFF012D
2. 计算CRC时的命令错误
你后续计算CRC的命令同样错误地使用了-i 10,导致计算逻辑偏离预期。基于你推导得到的参数(width=10, poly=0x08f, init=0x010, refin=false, refout=false, xorout=0x000),正确的计算命令应为:
reveng -w 10 -p 0x08f -n 0x010 -c 010000FF0300 00F87F000000 000000000000 0000FFFFFFFF
3. 额外验证点
由于你的CRC是10位,样本中末尾的2字节(如005A)是将10位CRC高位补0扩展为16位存储的。计算得到的10位CRC结果需要高位补0到16位,再与样本中的CRC值对比,确保格式一致。
执行上述修正后的命令后,你应该能得到与原始样本匹配的CRC值。
内容的提问来源于stack exchange,提问作者Eloi Sanchez
相关产品推荐
相关产品推荐

