python rfid读卡器,RFID卡的读取方式

  python rfid读卡器,RFID卡的读取方式

  RFID的发展与应用(下)最后的RFID章节,从9月到12月,终于全部完成((*))。文章开始前我先说一下,如果你开发的系统只能用卡的卡号,比如门禁系统,你只需要看中篇小说就可以了。但是如果想增加扣费充值的功能,就需要非常详细的商品。(S50手动)。文末放了RC522和S52卡的中文说明书。

  S50卡读写流程:

  插件0X26是必需的;获取防撞卡ID 0X93 0X20;可选卡0X93 0X20 ID*4防碰撞返回值CRC;三轮认证(硬件完成)0x 60/0x 61;…(操作).存储器结构

  在了解读写过程之后,你需要了解S50卡的内部结构,S50卡存储的数据以及数据的存储方式。

  S50卡分为16个扇区,每个扇区分为4个块),每个块有16个字节。3358www.Sina.com/仅用于存储每个扇区的块-3密码A和B,其他块-0到-2通常称为区域。

  但是,扇区-0与其他扇区不同,扇区-0的block -0是一个工厂区,其中存储了S50卡的ID和制造商信息。

  现在,具体地,块地址是连续的,即扇区-0的块-0地址是0,扇区-15的块-3地址是63。

  接下来,我们来看看block -3控制区(访问位)中的控制内容。

  首先,控制内容用于控制扇区内每个块(包括数据块和控制块)的访问权限,要知道每个块的访问权限有三个定义:

  C10、C20等。图中是控制区中几个字节的位。如何分配它们?别急,接着往下看。

  控制区有4个字节,其中最后一个字节是无用的,其余3个字节定义如下:

  不需要太在意图4中C23_b的反向操作,只需重点关注C10、C20等即可。结合图3和图4,仅仅知道块的控制走向是不够的。了解了控制区的结构后,我们会问这些位是如何控制其他块的。控制什么?

  首先,我们在读写卡的时候,需要传递密码。卡上有密码A或密码B。该区域确定需要传递哪个密码集才能读取或写入它。此外,控制区控制该块是可读的还是未写的。一般来说,在控制区,控制块是否可以读写,可以读写的时候要通过哪个密码集来操作。这一系列复杂的操作,其实是为了提高安全系数。

  那么,当前的问题只是控制区的位如何控制其他块。请不要担心。下面还有一个手表。

  图5该表显示了每个扇区块-3的控制内容的控制模式。你怎么想呢?第一个行为例子:虽然不能读密码A,但是可以写。发送密码A的前提是能写过去,控制区域的前提是能读不能写。能读的前提是发送密码a,虽然密码B能读,但前提是发送密码a。

  剩下的台词我就不解释了。这里可以使用密钥A B、密码A和密码B。而且,看到密码A的区域,就知道密码A是永远读不出来的。如果你读它,读的值全是零。

  接下来,我们来看看数据块的访问控制。

  块表类似于控制块表,但理解方式相同。这里只提到了左边三列的C1X、C2X和C3X中的x=1、2和3。

  看到这里,我们停下来举个例子,把前面提到的事情联系起来。首先S50卡必须知道各个控制块的出厂设置如下。(实际上密码A和密码B都设置为FF FF FF FF FF FF FF。)

  现在以sector -1为例,将默认block -3的内容设置为出厂设置,并分析其他block的权限。

  根据block -3 FF 07 80 69的控制内容,C13=0,C23=1,C33=0。请看图5,密码A既不能读也不能写。密码b和控制内容不能写,但可以读。如果需要读取,需要通过密码A或者密码b。

  接下来以block -0为例,来看看block的控制内容的控制。从C10=0,C20=0,C30=0,从图6可以看出,block -0可以读写,可以加减,密码A和密码B不受限制。Block -1和Block -2的出厂设置与Block -0相同。感兴趣的朋友可以试着列举一下。

  控制内容

  防碰撞0x930x70;可选卡0X93 0X70 ID1 ID2 ID3 ID4检测CRC8;身份验证0x60 addr keyA ID;读卡0x30地址CRC16。其中addr是块的地址,步骤3验证密码a,如果要验证密码B,请将0x60更改为0x61。

  在解释这个命令之前,让我们回顾一下上一章提到的整个RFID过程。

  上述读卡命令的流程对应上图。命令通常是transceive(0x0c),但是认证命令是特殊的,并且使用mfautent (0x0e),所以整个认证是

  命令:MFAUTENT(0x0E)0x60 addr keyA ID。

  然后就是读卡命令,没什么特别的,还是用了收发(0x0C),整个读卡命令是:收发(0x0C)0x30 addr CRC16。请注意,CRC是16位的。

  S50写卡命令流程:

  防碰撞0x930x70选择卡0X93 0X70 ID1 ID2 ID3 ID4验证CRC8身份验证0x60 addr keyA ID写卡0xA0地址CRC16写入16字节CRC16的过程。S50卡和读卡差不多,这里就不多解释了。只需提到最后一步是发送写卡命令后立即发送要写入的16位CRC16数据。

  最后,上一章提到的选卡命令返回0x08,在S50卡手册中有定义。也就是说,只要选卡命令执行正确,这张卡是S50卡,就会返回0x08。至于这个0x08是什么意思,手册上指的是代表卡的容量码,具体是什么我也无法给出准确的答案。

  在这里一直看到朋友不容易。我想我的陈述不是很清楚。如果真的能把三篇都看完,真的很不容易。

  RFID很实用,但是开发一个完整的系统并不那么容易。如果要自己开发,需要细化下两本手册。

  但是如果你想站在巨人的肩膀上,那么你可以去GitHub。

  RFID的发展与应用(上)

  RFID的发展与应用(下)

  RC522和S52卡的中文手册:

  链接:https://pan.baidu.com/s/158-U4fnIRKuRB5twWYPoZg

  提货代码:z7od

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: