Wiegand 26 reader 可以从 NFC 卡读取什么样的数据?

What kind of data can a Wiegand 26 reader read from an NFC card?

我可以用我的 phone 的 NFC reader 读取 13.56 MHz NFC 卡,我得到一个十六进制值,如:

1BF52327

这表示卡的 UID 或序列号。

我可以从 Wiegand reader 获得哪些数据?是否可以读取相同的序列号?

由于 Wiegand reader 只能读取 26 位,它会读取什么数据?


更新

我能够测试以上内容。我用过 HID SE r10 reader 和非品牌 reader.

结果如下。

这是我的 phone 的 NFC 准备好的上述卡 (1BF52327) 的二进制值:

11011111101010010001100100111

接下来这是我从同一张卡的 HID reader 获得的值:

1101100011011100000010101110010000000000

这是我从非品牌 reader 获得的同一张卡的价值:

1101110000001010111001000

我可以很快找到HID和非品牌之间的相关性reader,最后它们几乎是一样的。

但我无法将 Wiegand readers 读取的值与 NFC 读取的原始值相关联。

对我做错了什么有什么想法吗?我在 RPI 和 arduino 上使用了几个库 Joan, Wiegand-Protocol-Library-for-Arduino,我从 Wiegand readers

得到了相同的值

Wiegand reader 能否读取与 phone 相同的序列号?

Wiegand readers for 13.56 MHz(更具体地说 ISO/IEC 14443 A 型)通常读取 cards/tags 的防冲突标识符。 phone 似乎还会向您显示防冲突标识符 (UID)。所以,是的,两个设备读取相同的数据元素。

但是,正如您正确发现的那样,reader 仅通过 Wiegand 接口传输 26 位值(实际上只有 24 位,因为其中两个是奇偶校验位)。由于 UID 有 4 个字节、7 个字节或 10 个字节,因此需要将 UID 截断为 3 个字节的值才能通过 Wiegand 接口传输。

我可以从 Wiegand 获得哪些数据 reader?

Wiegand 接口上的帧如下所示:

b0  b1  b2  b3  b4  b5  b6  b7  b8  b9  b10 b11 b12 b13 b14 b15 b16 b17 b18 b19 b20 b21 b22 b23 b24 b25
PE  D23 D22 D21 D20 D19 D18 D17 D16 D15 D14 D13 D12 D11 D10 D9  D8  D7  D6  D5  D4  D3  D2  D1  D0  PO

第一行是通过韦根线到达时编号的位。第二行是与接收器解释的相同的位,其中 PE (b0) 是 D23..D12 (b1..b12) 上的偶校验位,PO (b25) 是 D11.. 上的奇校验位。 D0 (b13..b24), D23..D0 是表示无符号整数的数据位(实际上是两个,因为高 8 位是站点代码,低 16 位是标签 ID)。

即使站点代码和标签 ID 逻辑上分开,这些 reader 通常只使用截断形式的标签 ID 作为 24 位值。

此值如何映射到您在 phone 上收到的十六进制值在很大程度上取决于该十六进制表示的创建方式(特别是其字节顺序)。它可能就像只取最后 3 个字节 (F52327) 一样简单,但它也可能是 1BF523(或任何字节反转(甚至位反转)的变体) ).


更新:关于您为 reader 获得的值...

首先,您似乎从值中删除了前导零。例如,1BF52327 是一个 4 字节的值,因此有 32 位:

   1    B     F    5     2    3     2    7
0001 1011  1111 0101  0010 0011  0010 0111

从 readers 接收到的值似乎也是如此(要么是那个,要么是库自动丢弃了前导奇偶校验位或丢弃了两个奇偶校验位并添加了任意数量(?)的值末尾的零)。

所以你的价值观是: 1101 1000 1101 1100 0000 1010 1110 0100 0000 0000 1101 1100 0000 1010 1110 0100 0

正如您自己发现的那样,这些明显相关,因为开头缺少一个字节,HID reader 中的值最后填充了更多的零。

仔细观察,这些值也与第一个二进制值相关。诀窍是先反转值。因此,值

1101 1000  1101 1100  0000 1010  1110 0100  0000 0000
           1101 1100  0000 1010  1110 0100  0

成为

0010 0111  0010 0011  1111 0101  0001 1011  1111 1111
           0010 0011  1111 0101  0001 1011  1

对于 Wiegand 的值 reader,这也将修复尾随的奇校验位 (PO),因为现在有 7 个“1”位(包括 PO)(尽管这可能只是巧合) .

您现在可以看到这些值恰好代表了颠倒字节顺序中的第一个值。如果你反转

的字节顺序
   1    B     F    5     2    3     2    7
0001 1011  1111 0101  0010 0011  0010 0111

你得到

   2    7     2    3     F    5     1    B
0010 0111  0010 0011  1111 0101  0001 1011

将其与其他两个值进行比较,您会发现它们匹配:

0010 0111  0010 0011  1111 0101  0001 1011
0010 0111  0010 0011  1111 0101  0001 1011  1111 1111
           0010 0011  1111 0101  0001 1011  1

因此,您从 HID reader 收到的值代表 2723F51B,您从 Wiegand reader 收到的值代表 23F51B。因此,字节 27 被截断。