0

我正在使用 rs232 HID 阅读器。
它的手册说它的输出是

  CCDDDDDDDDDDXX     
where CC is reserved for HID    
      DDDDDDDDDD is the transponder (the card) data
      XX is a checksum    

校验和在这里得到了很好的解释并且无关紧要。关于 DDDDDDDDDD 只说有效值是 0000000000 到 1FFFFFFFFF,但没有说明它如何转换为卡正面印刷的内容。
我有 3 张样本卡,遗憾的是在短距离范围内(编辑加上额外的一张)。在这里,我向他们展示:

readed from rs232     shown on card    
 00000602031C27          00398    
 00000602031F2A          00399    
 0000060203202B          00400    
 00000601B535F1          55962       **new 

另外我有一个加载了 1000 张卡的数据库(前面印有什么),所以我需要从我在 rs232 上读取的内容到前面打印的内容的解码路径。

来自 DB 的一些值(我已经看到了这些卡片,但我现在无法访问它们)

55503
60237
00833

非常感谢每一个人。

4

1 回答 1

2

搜索字符串“CCDDDDDDDDDDXX”会返回http://www.rfideas.com/downloads/SerialAppNote8.pdf,它似乎描述了如何解码数字。我不保证这是否准确。

解码标准 26 位格式

读者发来的消息:

C C D D D D D D D D D D X X
---------------------------
0 0 0 0 0 6 0 2 0 3 1 C 2 7
0 0 0 0 0 6 0 2 0 3 1 F 2 A
0 0 0 0 0 6 0 2 0 3 2 0 2 B
0 0 0 0 0 6 0 1 B 5 3 5 F 1

剥离校验和 X,并将数据简化为二进制给出:

  C    C    D    D    D    D    D    D    D    D    D    D
cccc cccc zzzz zzzz zzzz zspf ffff fffn nnnn nnnn nnnn nnnp
-----------------------------------------------------------
0000 0000 0000 0000 0000 0110 0000 0010 0000 0011 0001 1100
0000 0000 0000 0000 0000 0110 0000 0010 0000 0011 0001 1111
0000 0000 0000 0000 0000 0110 0000 0010 0000 0011 0010 0000
0000 0000 0000 0000 0000 0110 0000 0001 1011 0101 0011 0101

7号左边的所有卡片数据字符都可以忽略。

  • c = HID 特定代码。
  • z = 前导零
  • s = start sentinel (它总是一个 1)
  • p = 奇偶校验(每个 12 位)。
  • f = 设备代码 8 位
  • n = 卡号 16 位

由此我们可以看出

  • 00000602031C27 → n = 0b0000000110001110 = 398
  • 00000602031F2A → n = 0b0000000110001111 = 399
  • 0000060203202B → n = 0b0000000110010000 = 400
  • 00000601B535F1 → n = 0b1101101010011010 = 55962

因此,对于您的示例,我们可能会得到:

  • 55503
  • (f, n) = 0b0000_0001__1101_1000_1100_1111
  • 前 12 位奇校验 = 0
  • 最后 12 位的偶校验 = 0
  • 结果 = 00000403b19e56
于 2012-09-28T12:03:34.593 回答