串行通信的 2 字节校验和

逆向工程 串行通讯
2021-07-02 15:24:45

我正在研究一种 RFID 阅读器,该阅读器部分符合 ISO/IEC 14443-4,但并非特别符合。我可以解码很多字符串并理解命令库,但我无法破解校验和。

读取命令的格式为 4 个字节

0x82 Read Chunk
0xYY Chunk Number
2 Byte checksum

响应是回显读取命令、块 ID、32 字节数据和 2 字节校验和。

我已经用一堆标准校验和计算器尝试过十六进制字符串,并寻找诸如逻辑和之类的东西,但找不到关于它们如何生成的任何规则。这种校验和风格是否有其他一些技术?

样本数据:

8208942d
82081101004049424d2020202020363831303232393437310004000d1f0e000d220a273b
82091d3c
8209000d2591000e8521000e8521000e881d363955320000000000000000386c1940c1a4
821b8e0f
821b00000000000000000000000000000000000000000000000000000000000000008ca8
821c317b
821c0000000000000000000000000000000000000000000000000000000000000000b461
821db86a
821d0000000000000000000000000000000000000000000000000000000000000000d721
1个回答

它是一个 CRC-A 校验和。16 位。前言:根据我的研究,这是该标准的 crc。

它从数据包的开始计算到校验和

https://crccalc.com 输入 8209,查看结果:3C1D。由于字节序,这是字节交换。可能是你没找到的原因。

如果您需要帮助,请告诉我,很乐意帮助编写代码。下面是计算的c++实现:https : //github.com/pkourany/MFRC522_RFID_Library/blob/master/src/MFRC522.cpp 这是NFC芯片的Arduino库。

干杯