码迷,mamicode.com
首页 > 其他好文 > 详细

RFID开发之圣诞老人无稽之谈

时间:2014-05-05 10:33:18      阅读:392      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   java   tar   

0X01圣诞节的由来

因为个人爱好对智能卡有一点点皮毛的学习。年初的时候有个做智能卡黑产的朋友找到我,说他接了一个学校的单子,让我帮他写个可以Modify Data的程序(他手上的软件只可以复制卡),年初的时候需要做毕业设计,没空没帮他看。过了几个月,他把读卡器(0FC3读卡器。支持mifare1、S50、S70、SHC1102、mifare Ultralight、mifare light,具有二次开发功能)寄给了我,这样我不帮他也不好推辞了。。。

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣

0X02收集孩子们的需求

工具:一个读卡器,说明书、还有几张激活了的可以正常使用的Mifare 1 S50卡(非接触式卡,IC卡,高频卡,工作频率13.56MHZ),OFC3读卡器的二次开发接口(ICCard_Seat.ocx)。

拿到手上首先连接PC接通读卡器,USB接口,有报警灯/声,接通电源会DI一声。
进入RFID开发正题!
开发环境:Winxp+VS2010+c#+.NET框架

0X03开始准备圣诞礼物

开发步骤:将ICCard_Seat.ocx和MSCOMM32.OCX拷贝到C:\WINDOWS\system32,CMD命令运行注册COM组件。

bubuko.com,布布扣
regsvr32.exe "C:\WINDOWS\system32\ICCard_Seat.ocx"
regsvr32.exe "C:\WINDOWS\system32\MSCOMM32.OCX"
bubuko.com,布布扣

 

bubuko.com,布布扣

bubuko.com,布布扣

注册完COM组件后,新建Winfrom项目,添加引用COM组件,即可在项目中引用封装好的方法,实现方法即可。
首先测试读卡器是否正常连接串口。

接下来测试读卡器的最基本功能,看看是否能正确读取卡内数据。以此开发的S50此卡为例,S50共有16个扇区,第 0 扇区中只用到块0,用于准确读取卡号。

我在这里使用了北京市政公交卡,在没有Key验证的情况下还是可以正常读取到卡号,卡号区一般不加密!
卡的第一道安全防护为卡得验证密码:如果验证密码不匹配,那么接下来的所有操作都不会进行,也不可进行。

验证卡密码:卡密码是大家最为关注的,如何得到,或者解开卡得密码是所有的关键,因为朋友已经用ACR122U自行解开了卡得Key,我这里就不再赘述。

对于RFID安全性感兴趣的请移驾radiowar wiki自行阅读增长姿势。

几乎每次对卡的读写操作都必须先验证卡密码,才可以进行下一步操作。S50有16个扇区(0-15扇区),每个扇区有4块(0-3块),每块16个字节,每个扇区的块0、1、2为数据块,用于存储数据。
每个扇区的块3也就是第四块为本区的控制块,前6个字节用于保存KeyA,后6个字节用于保存KeyB,中间剩下的字节用于存取控制。
每个扇区的密码和存取控制都是独立的,如果你想对此区做读写操作就需要先验证该区的密码。密码长度为12个字符。
将整个卡得结构分析为64块,例:0区0块即为块1,4区3块,即为块16.大概初步了解S50卡得结构,那么我们进行“详细”的数据分析。

以下的数据是基于多张S50卡,同样结构,不同数据的分析而得出的。

朋友告诉我卡内的余额为100元,12年7月13日开的卡,个人密码为888888
以我的S50卡为例,读出块22的数据为1207132207136C696C69616E88888800
我们不难发现120713,220713这个为日期格式。:(-所以对于数据要敏感。
经过多次刷卡变化的数据,发现了块28一直变化,即第7扇区的块0

bubuko.com,布布扣
E803000000000000EB00640001003B02
bubuko.com,布布扣

 

E8030000  这里涉及到网络传输字节序,即字节在电脑中存放时的序列与输入(输出)时的序列是先到的在前还是后到的在前。
关于高低位字节序,这里不多啰嗦。E8 03 00 00倒序为00 00 03 E8,转成10进制即为1000,通过对比另外几张卡发现这里的金额精确到0.1。
所以,所有的金额都是比原来的大10倍即个位数是 0.1元这个位置即角。十位才是1元,

所以 100元,我们的数据表示是 1000。这时候心血来潮了,让朋友更改了金额为

bubuko.com,布布扣
DC05000000000000EB00640001003B02
bubuko.com,布布扣

 

(150元),然后去刷卡试验。结果得到的是:卡上还是100元,并且消费机会报警声。那究竟会是什么原因导致此次实验失败呢(此处为智能卡的第二道防护)?

天色已晚,今天是圣诞节,老夫得赶紧为孩儿们准备圣诞礼物。这究竟是圣诞老人的有Ji之谈还是无Ji之谈?各位看官尽情发表观点。  
未完待续
本次项目Demo下载地址:下载地址

以上纯属是圣诞老人无稽之谈,不具有导向性,代表性。仅为个人学习日志!欢迎交流,互相学习!

祝大家圣诞快乐!                                                

RFID开发之圣诞老人无稽之谈,布布扣,bubuko.com

RFID开发之圣诞老人无稽之谈

标签:style   blog   class   code   java   tar   

原文地址:http://www.cnblogs.com/heiyue/p/3707821.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!