【发布时间】:2012-09-16 18:21:34
【问题描述】:
我想查找一些 CRC-24 算法的参数。
我只知道:
来源 1
-
生成多项式为 1010111010110110111001011 = 0x15D6DCB,即
5D6DCB在正常表示中(MSB 优先代码)
-
数据(十六进制)
00 40 00 01 09 01 01 B0 A0 0C 0A 01 00 04 07 A0 05 A5 03 80 01 02 00 00 00 00 00 00 00 00 00给予
99 84 62
生成器多项式与CRC-24/FLEXRAY 中使用的相同,但都是关于查找其他参数的。我使用灵活的jacksum 工具做了一些测试,但到目前为止没有成功。
BYTES="00 40 00 01 09 01 01 B0 A0 0C 0A 01 00 04 07 A0 05 A5 03 80 01 02 00 00 00 00 00 00 00 00 00"
jacksum -s '\t' -a 'crc:24,5D6DCB,000000,fals,fals,000000+crc:24,5D6DCB,000000,true,true,000000+crc:24,5D6DCB,abcdef,fals,fals,000000+crc:24,5D6DCB,abcdef,true,true,000000+crc:24,5D6DCB,fedcba,fals,fals,000000+crc:24,5D6DCB,fedcba,true,true,000000+crc:24,5D6DCB,ffffff,fals,fals,ffffff+crc:24,5D6DCB,ffffff,true,true,ffffff' -F '#FILESIZE #ALGONAME{i}#SEPARATOR#CHECKSUM{i}' -E hex -q "hex:$(echo $BYTES | sed 's/ //g')"
31 crc:24,5d6dcb,000000,fals,fals,000000 6579ac
31 crc:24,5d6dcb,000000,true,true,000000 b17f3a
31 crc:24,5d6dcb,abcdef,fals,fals,000000 fd794d # CRC-24/FLEXRAY-B
31 crc:24,5d6dcb,abcdef,true,true,000000 367f23
31 crc:24,5d6dcb,fedcba,fals,fals,000000 e8a75b # CRC-24/FLEXRAY-A
31 crc:24,5d6dcb,fedcba,true,true,000000 5e048b
31 crc:24,5d6dcb,ffffff,fals,fals,ffffff a408f7
31 crc:24,5d6dcb,ffffff,true,true,ffffff 6bf1b9
以防万一我也尝试了反转字节顺序和反转输入数据的半字节顺序,但那里没有 99 84 62 或 62 84 99。
我认为是refIn=false refOut=false xorOut=0,但不确定。
来源 2
DATA + CRC(十六进制) - 每行一个条目:
00C01FFF057EA013CEFFCD1361D5E6E6001D64001400002C667E0000000000329BEA
00FFEC01007EA018CDCE2313BB18E6E7001E0149534B050000000100B3017E38CD0F
00C01FFF1B7EA021CEFFCD133817E6E6001CFEFEFEFEFEFEFEFE0149534B050000000100100CE67E00000000000000000000000000000000000000000000000000000054F223
00C01010107EA0080223C993E4437E000000000000000000000000000000003F96F1
00010C011D7EA01FC9022373B49681801205017E06017E0704000000010804000000015F757E0000000000000000000000000000000000000000000000000000000000723D01
00C010101B7EA0450223C9102148E6E6006036A1090607608574050801018A0207808B0760857405080201AC0A80083132333435363738BE10040E01000000065F1F0400007E1FFFFF83D77E0000000000000000000000000000000000000000000000000000009BFF67
00010C01037EA039C902233022BDE6E700612AA109060760857405080101A203020100A305A103020100BE11040F080100065F1F0400007C1F04000007194A7E00000010E99A
00C01010227EA01A0223C932AF55E6E600C0014000080000010000FF0200EADD7E00000000000000000000000000000000000000000000000000000000000000000000C22B4A
00010C011D7EA01FC90223523FA6E6E700C4014000090C07D201070101231A00FFC40080EC7E0000000000000000000000000000000000000000000000000000000000C162A6
00010C011D7EA01FC9022373B49681801205017E06017E0704000000010804000000015F757E0000000000000000000000000000000000000000000000000000000000723D01
运行reveng -w 24 -F -s ... 会得到no models found。这是否意味着上述某些示例可能已损坏?不幸的是,我不能 100% 确定它们都是正确的......
是否有任何理智的方法可以在不使用蛮力的情况下找到 init、refIn、refOut 和 xorOut?
【问题讨论】:
-
你怎么知道 CRC 结束了哪些字节?
-
仅供参考,您的 Source 2 中的第五行和第十行是相同的。
-
@Mark 我根据来源 1 的描述知道。在这两个集合中,我给出的数据(据称)完全被 CRC 覆盖。不幸的是,它不是公开的文档。
-
描述结果不正确,或者被误解了。 crc 之前的最后三个字节不是 crc 计算的一部分。