2010-04-16 71 views
3

我需要與RS232設備進行通信,我沒有可用的規格或信息。找出RS232數據的CRC或CHECKSUM

我發送一個16字節的命令,並返回一個16字節的結果。最後一個字節看起來像某種crc或校驗和,我試過用這個http://miscel.dk/MiscEl/miscelCRCandChecksum.html沒有運氣。

任何人都可以逆向工程crc /校驗和算法?這裏是具有一個RS-232監控程序捕獲一些數據:

01 80 42 00 00 00 00 00 00 00 00 00 00 00 01 B3 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 02 51 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 03 0F 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 04 8C 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 05 D2 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 06 30 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 07 6E 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 08 2F 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 09 71 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 0A 93 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 0B CD 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 0C 4E 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 0D 10 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 0E F2 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 0F AC 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 10 70 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 11 2E 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 12 CC 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 13 92 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 14 11 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 15 4F 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 16 AD 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 17 F3 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 18 B2 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 19 EC 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 1A 0E 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 1B 50 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 1C D3 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 1D 8D 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 1E 6F 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 1F 31 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 20 CE 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 21 90 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 22 72 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 23 2C 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 24 AF 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 25 F1 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 26 13 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 27 4D 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 28 0C 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 29 52 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 2A B0 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 2B EE 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 2C 6D 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 2D 33 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 2E D1 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 2F 8F 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 30 53 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 31 0D 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 32 EF 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 33 B1 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 34 32 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 35 6C 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 36 8E 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 37 D0 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 38 91 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 39 CF 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 3A 2D 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 3B 73 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 3C F0 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 3D AE 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 3E 4C 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 3F 12 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 40 AB 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 41 F5 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 42 17 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 43 49 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 44 CA 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 45 94 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 46 76 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 47 28 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 48 69 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 49 37 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 4A D5 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 4B 8B 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 4C 08 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 4D 56 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 4E B4 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 4F EA 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 50 36 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 51 68 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 52 8A 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 53 D4 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 54 57 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 55 09 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 56 EB 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 57 B5 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 58 F4 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 59 AA 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 5A 48 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 5B 16 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 5C 95 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 5D CB 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 5E 29 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 5F 77 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 60 88 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 61 D6 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 62 34 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 63 6A 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 64 E9 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 65 B7 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 66 55 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 67 0B 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 68 4A 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 69 14 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 6A F6 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 6B A8 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 6C 2B 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 6D 75 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 6E 97 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 6F C9 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 70 15 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 71 4B 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 72 A9 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 73 F7 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 74 74 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 75 2A 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 76 C8 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 77 96 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 78 D7 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 79 89 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 7A 6B 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 7B 35 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 7C B6 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 7D E8 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 7E 0A 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 7F 54 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 80 61 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 81 3F 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 82 DD 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 83 83 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 84 00 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 85 5E 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 86 BC 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 87 E2 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 88 A3 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 89 FD 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 8A 1F 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 8B 41 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 8C C2 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 8D 9C 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 8E 7E 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 8F 20 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 90 FC 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 91 A2 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 92 40 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 93 1E 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 94 9D 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 95 C3 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 96 21 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 97 7F 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 98 3E 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 99 60 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 9A 82 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 9B DC 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 9C 5F 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 9D 01 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 9E E3 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 9F BD 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 A0 42 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 A1 1C 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 A2 FE 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 A3 A0 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 A4 23 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 A5 7D 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 A6 9F 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 A7 C1 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 A8 80 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 A9 DE 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 AA 3C 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 AB 62 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 AC E1 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 AD BF 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 AE 5D 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 AF 03 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 B0 DF 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 B1 81 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 B2 63 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 B3 3D 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 B4 BE 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 B5 E0 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 B6 02 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 B7 5C 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 B8 1D 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 B9 43 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 BA A1 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 BB FF 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 BC 7C 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 BD 22 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 BE C0 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 BF 9E 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 C0 27 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 C1 79 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 C2 9B 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 C3 C5 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 C4 46 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 C5 18 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 C6 FA 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 C7 A4 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 C8 E5 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 C9 BB 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 CA 59 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 CB 07 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 CC 84 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 CD DA 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 CE 38 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 CF 66 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 D0 BA 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 D1 E4 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 D2 06 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 D3 58 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 D4 DB 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 D5 85 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 D6 67 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 D7 39 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 D8 78 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 D9 26 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 DA C4 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 DB 9A 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 DC 19 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 DD 47 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 DE A5 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 DF FB 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 E0 04 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 E1 5A 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 E2 B8 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 E3 E6 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 E4 65 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 E5 3B 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 E6 D9 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 E7 87 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 E8 C6 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 E9 98 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 EA 7A 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 EB 24 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 EC A7 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 ED F9 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 EE 1B 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 EF 45 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 F0 99 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 F1 C7 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 F2 25 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 F3 7B 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 F4 F8 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 F5 A6 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 F6 44 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 F7 1A 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 F8 5B 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 F9 05 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 FA E7 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 FB B9 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 FC 3A 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 FD 64 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 FE 86 
01 80 42 00 00 00 00 00 00 00 00 00 00 00 FF D8 

第二至最後一個字節似乎是,在00重新開始,當它到達FF的序號。我已經包括從00到FF的整個範圍,以便更容易猜測crc /校驗和方法。

廣東話添加評論,所以我會在這裏補充信息:

最後一個字節是一樣的,當所有的前15個字節是相等的。 這是設備:http://www.intelektron.com/productos/tya_rei4000.htm

修正 (我想我發現了軟件的一個bug)的設備本身在00秒到最後一個字節到達FF後重新開始,但將命令發送給軟件設備在達到FF時從01開始。無論如何,我認爲這倒數第二個序列字節與crc /校驗和問題無關。

CLARIFICATION 列出的數據是軟件發送的命令,設備的回覆沒有列出。該裝置響應於每個像發送所存儲的數據的一個行上述命令的:

80 01 C2 80 85 01 25 65 57 37 19 32 01 04 76 17 

此行包含一個4字節的卡數,時間和日期,等等,無關我想到CRC /校驗問題。

附加信息:

我一直在關注着該軟件的VB6 OCX控件和得到這個:

Object: clsCRC8 
Object: basComunicaciones2 
Private sub Proc_1_0_30305330 
    loc_30305352: var_8 = 30301198h 
    loc_30305373: call basComunicaciones2.SetPropA(edi, arg_8, ebx) 
    loc_30305376: var_4 = 0 
End Sub 

Private sub Proc_1_1_303053A0 
    loc_303053C2: var_8 = 303011A0h 
    loc_303053E2: call MSVBVM60.DLL.__vbaBoolVarNull(basComunicaciones2.Caption = %x1, arg_8, ebx) 
    loc_303053EB: If MSVBVM60.DLL.__vbaBoolVarNull(basComunicaciones2.Caption <> %x1 <> arg_8 Then GoTo loc_303054B8 
    loc_303053F7: var_24 = FFFFFFFFh 
    loc_303053FE: var_2C = 11 
    loc_30305405: ecx = True 
    loc_3030540D: call MSVBVM60.DLL.__vbaUI1I2 
    loc_3030541C: edx = edx - 0001h 
    loc_30305429: If edx-0001h < 0 Then GoTo loc_30305499 
    loc_3030542B: 
    loc_30305443: di = di - basComunicaciones2.%x1 = GetIDsOfNames(%x2) 'Ignore this 
    loc_30305447: If di < Me.GetTypeInfo Then GoTo loc_3030544F 
    loc_30305449: Err.Raise 
    loc_3030544F: 
    loc_30305451: GoTo loc_30305459 
    loc_30305453: Err.Raise 
    loc_30305459: 
    loc_3030546B: eax = "" And 000000FFh 
    loc_30305478: If ecx+eax xor eax < 257 Then GoTo loc_30305480 
    loc_3030547A: Err.Raise 
    loc_30305480: 
    loc_30305492: var_18 = Var_Ret_1 
    loc_30305495: If edi <= Me = %x1 Then GoTo loc_3030542B 
    loc_30305499: 
    loc_3030549F: not al 
    loc_303054A1: var_18 = Var_Ret_1 
    loc_303054A4: var_24 = 0 
    loc_303054AB: var_2C = 11 
    loc_303054B2: ecx = 
    loc_303054B8: 
    loc_303054DC: Exit Sub 
End Sub 

Private sub Proc_1_2_30306410 
    loc_30306432: var_8 = 303011A8h 
    loc_3030644F: var_38 = &H4011 
    loc_30306489: If Len(Hex()) >= 2 Then GoTo loc_303064A1 
    loc_3030649F: var_18 = 808463756 & var_18 
    loc_303064A1: 
    loc_303064A6: GoTo loc_303064C1 
    loc_303064C0: Exit Sub 
    loc_303064C1: 
End Sub 

我很舒爾這個計算數據的CRC8:

方法Calcular(Paquete As,CantidadDeBytes As Integer)As Unsigned Small Integer vbpComunicaciones2(cached).clsCRC8的成員 定義於接口_clsCRC8

任何人都可以從中得到一些感覺?可悲的是,我不能。

+0

在倒數第二個字節從00開始後,您是否看到最後一個字節(校驗和)的相同值序列? – 2010-04-16 05:16:36

+1

命名設備。 – paxdiablo 2010-04-16 05:23:17

+0

我有一個100KB的DOS可執行文件,可以用來下載設備數據,我必須有crc算法。我不知道反編譯或反向工程這個exe文件。 – 2010-04-16 06:27:35

回答

3

答案在這裏:http://blog.sina.com.cn/s/blog_5a1d5bca0100bjvx.html

0xFF的 - 從算法結果從上面的鏈接,一切都相匹配。帶了我兩個下午和我來到這裏的幫助,但終於釘上了它。

當然,由於Gerhard發佈的鏈接,我或多或少地理解了代碼的作用。謝謝。

+0

我也試圖扭轉CRC-8。我已經捕獲了整個序列0x00到0x0F(它環繞)。您的答案中的鏈接不適用於我。你最終是否使用了暴力破解,或者博客文章是否提供了一些方法來反向修改CRC? – Snooze 2012-11-26 23:36:58

+0

稍遲,但由於鏈接關閉,下面的答案是Visual Foxpro中的代碼 – 2013-07-07 23:26:08

3

這不是校驗和或數據異或。
有幾個CRC選項,你可以嘗試。您提供的數據不會對任何簡單的crc解決方案產生積極的結果。

Commmon 8位CRC是:
名稱:聚:倒數
CRC-8-CCITT的正常/反向/反向:位於0x8 + X2 + X + 1:0×07 /取0xE0/0×83
CRC-8- Dallas Semiconductor/Maxim(1-Wire總線):x8 + x5 + x4 + 1:0x31/0x8C/0x98
CRC-8:x8 + x7 + x6 + x4 + x2 + 1:0xD5/0xAB/0xEA
CRC- 8-SAE:X8 + X4 + X3 + X2 + 1:0x1D/0xB8 /爲0x8E
CRC-8-WCDMA:X8 + X7 + X4 + X3 + X + 1 0x9B/0xD9/0XCD

執行運將其混合:
正常或反向數據字節,初始值(0xff或0x00),最終XOR未定義,以及Final XOR之前的反向CRC結果。

對於CRC來說,除非他們自己推出,否則必須使用這些選項。

瞭解更多A Painless Guide to CRC Error Detection Algorithms

+0

感謝您的答案,閱讀整個事情,但對我來說有點太複雜。 – 2010-04-17 00:09:18

+0

花了相當長的一段時間,事情開始有意義,終於解決了。謝謝! – 2010-04-17 03:52:35

0
#Define CRCTBL1 0h005EBCE2613FDD83C29C7E20A3FD1F419DC3217FFCA2401E5F01E3BD3E6082DC 
#Define CRCTBL2 0h237D9FC1421CFEA0E1BF5D0380DE3C62BEE0025CDF81633D7C22C09E1D43A1FF 
#Define CRCTBL3 0h4618FAA427799BC584DA3866E5BB5907DB856739BAE406581947A5FB7826C49A 
#Define CRCTBL4 0h653BD987045AB8E6A7F91B45C6987A24F8A6441A99C7257B3A6486D85B05E7B9 
#Define CRCTBL5 0h8CD2306EEDB3510F4E10F2AC2F7193CD114FADF3702ECC92D38D6F31B2EC0E50 
#Define CRCTBL6 0hAFF1134DCE90722C6D33D18F0C52B0EE326C8ED0530DEFB1F0AE4C1291CF2D73 
#Define CRCTBL7 0hCA947628ABF517490856B4EA6937D58B5709EBB536688AD495CB2977F4AA4816 
#Define CRCTBL8 0hE9B7550B88D6346A2B7597C94A14F6A8742AC896154BA9F7B6E80A54D7896B35 
#Define CRCTBL0 CRCTBL1+CRCTBL2+CRCTBL3+CRCTBL4+CRCTBL5+CRCTBL6+CRCTBL7+CRCTBL8 


Lparameters pcString 

Local ; 
    lnCRC8, ; 
    lnIndex, ; 
    lnx, ; 
    lnByte 

m.lnCRC8 = 0 

For lnx = 1 To Len(m.pcString) 
    m.lnByte = Asc(Substr(m.pcString, m.lnx, 1)) 
    m.lnIndex = Bitxor(m.lnCRC8, m.lnByte) 
    m.lnCRC8 = Asc(Substr(CRCTBL0, m.lnIndex + 1, 1)) 
Endfor 

m.lnCRC8 = 0xff - m.lnCRC8 

Return m.pcString + Chr(m.lnCRC8)