本帖最后由 瘦网虫 于 2013-4-9 09:21 编辑
【注】此帖有片面性,仅做入门学习,针对频率为125Khz的卡。
原帖在这里,试试看翻译成能看懂的。。。
http://www.instructables.com/id/A-Universal-RFID-Key/step2/Whats-stored-on-the-card/
好奇下图中的数据是怎么传输的?请继续阅读。
一般我们手上的卡都是这种卡,上面印有数字,这是这个卡的身份。
图中卡上印了 0007820706 119,21922,传输的时候是下面这样:
1111111110010111000000000000001111011110101001010101000010101100
不着急,慢慢来解释:
第一个111111111是开始传输的信号,告诉读卡器“后面跟着来的数据是卡的id,睁大钛合金狗眼看好了”。
数据每4位(bits)一组(上面的黄绿色字),传输一次,每组后面跟着一个校验位(上面加粗体的字)。
忽略上面的校验位(粗体字)和前面的传输信号,我们就能得到下面的序列:
0010 1100 0000 0000 0111 0111 0101 0101 1010 0010 0110 0
2 C 0 0 7 7 5 5 A 2 CHECKSUM STOP
快了,数据就要出来了:
如果把上面的数据分成3组,我们就得到了 2c 0077 55a2。 先是2c, 后面的是 0077 (十进制的119!抓到你了!), 后面的 55A2, 十进制的 21922。对应了卡上的 119,21922.
那前面的奇怪数字呢?
把刚得到的7755A2转成10进制看看,是不是0007820706?
这下我们知道卡片上的数字是什么意思了!
好奇那个2C是什么?2C可不是2B的升级,2C是一个常量,所有的卡都是2C,可以算作RFID系统的识别码吧。
修改:2C是厂家识别码。
扩展阅读:
校验码怎么生成的?
简单的说,是把传输的数据中的1凑成双数(偶校验,对应的还有奇校验,自己琢磨)。
举例:
传输2,要发送0010,中间只有1个“1”,不能让它“单着”,校验位凑个1上去,传输内容变成00101
传输C,要发送1100,中间2个“1”,已经是成双入对了,校验位不是小三,传输内容变成11000
00101 2
11000 C
00000 0
00000 0
01111 7
01111 7
01010 5
01010 5
10100 A
00101 2
0110 checksum + 0 停止位
最后的校验位是纵向校验,看看纵向有没有1单着。上面加粗的凑凑已经是双的了,所以校验位为0。
如果校验失败,读卡器会怎么做,你懂的。
|