IoT(二)NFC
整理补充点RFID射频入门知识,方便以后使用:
NFC技术基于RFID,其工作频率为13.56MHz。
可以参考ISF这篇ppt:RFID-ISF2014-杨旭-中文.pdf
另外补充一本NFC方面经典书籍:Near Field Communication
RF卡也称非接触IC卡、射频卡,基于电磁感应原理
当RF卡靠近电磁场时,线圈从电磁场中吸收能量,能力聚集足够时卡中微电路开始工作
微电路工作并不发射数据,而是利用消耗电磁能量使电磁信号发生变化,该电磁场变化即对应卡中的数据
IC卡存储区分配表:
RFID将整个存储区划分为多个扇区(一般16个),每个扇区4个块,每块16字节,其中每个扇区03块用来存放密钥。
扇区00的块00是特殊块,一般存储制造商代码:
• 第0~4字节为IC卡的序列号
• 第5字节为序列号的CRC校验码
• 第6字节为IC卡的容量“SIZE”字节
• 第7、8字节为IC卡的类型编码字节
• 第5字节为序列号的CRC校验码
• 第6字节为IC卡的容量“SIZE”字节
• 第7、8字节为IC卡的类型编码字节
其他字节由厂商自行定义。
存储区数据访问条件:
各扇区03块为控制位,前后各6B存储KeyA和B,Key不可读
中间AccessBits为访问控制设置,用于设置该分区四个存储块的访问条件和数据块类型
每个块有三个控制位,如块0:C10,C20,C30,访问条件如下:
块0、1、2有读、写、加值Increment、减值Decrement、传送transfer、恢复Restore,共六种操作
块03只有读写两种操作
IC卡内数据金额算法:
对比上图,60h即上图第01扇区第01块
我们只看选中的这两行就行,也就是
我们暂且把这行数据分成四段来看
第四段是地址位,所以我们可以忽略不看,但是写卡的时候也不要动它,就让它保持原来的样子就行。第1和第3段是一样的。中间的FFFF也不要管了。
我们接下来开始计算其中的数据,先看第1段是1027,因为它是十六进制的,所以1027先倒序之后就是2710,然后再转换成二进制就是10011100010000,在计算的时候大家要记好一个十六进制数对应的是4个二进制数,所以前面转换的二进制其实应该是0010 0111 0001 0000,如果位数不够的话就在前边补零,然后再转换成十进制就是10000,因为保留两位小数,所以10000在刷卡时候就是100.00也就是100块。
再来看第二段EFD8,EFD8倒序一次是D8EF,然后转换成二进制就是1101 1000 1110 1111,然后再取这个二进制的反码,就是0010 0111 0001 0000,取反之后再转换成10进制就是10000,还是100块,只是这两个存储的方式不一样罢了,第3段和第1段是一样的,所以在计算方面,只计算第1段和第2段就行了。现在我们计算的是倒着来的,也就是从卡内的数据转换成具体金额的方法。也就是逆向计算的。
下面我们把这个具体的思路再整理一下:
1段数据算法(非逆向):十进制金额→转二进制→转十六进制→倒序。
2段数据算法(非逆向):十进制金额→转二进制→取反码→转十六进制→倒序。
下面是逆向计算数据的算法,其实就是把上面的反过来罢了,逆向计算的通常是为了验 证一下计算的数据有没有出错,算法如下:
1段数据算法(逆向):十六进制倒序→转二进制→转十进制。
2段数据算法(逆向):十六进制倒序→转二进制→取反码→转十进制。
我们接下来开始计算其中的数据,先看第1段是1027,因为它是十六进制的,所以1027先倒序之后就是2710,然后再转换成二进制就是10011100010000,在计算的时候大家要记好一个十六进制数对应的是4个二进制数,所以前面转换的二进制其实应该是0010 0111 0001 0000,如果位数不够的话就在前边补零,然后再转换成十进制就是10000,因为保留两位小数,所以10000在刷卡时候就是100.00也就是100块。
再来看第二段EFD8,EFD8倒序一次是D8EF,然后转换成二进制就是1101 1000 1110 1111,然后再取这个二进制的反码,就是0010 0111 0001 0000,取反之后再转换成10进制就是10000,还是100块,只是这两个存储的方式不一样罢了,第3段和第1段是一样的,所以在计算方面,只计算第1段和第2段就行了。现在我们计算的是倒着来的,也就是从卡内的数据转换成具体金额的方法。也就是逆向计算的。
下面我们把这个具体的思路再整理一下:
1段数据算法(非逆向):十进制金额→转二进制→转十六进制→倒序。
2段数据算法(非逆向):十进制金额→转二进制→取反码→转十六进制→倒序。
下面是逆向计算数据的算法,其实就是把上面的反过来罢了,逆向计算的通常是为了验 证一下计算的数据有没有出错,算法如下:
1段数据算法(逆向):十六进制倒序→转二进制→转十进制。
2段数据算法(逆向):十六进制倒序→转二进制→取反码→转十进制。
有兴趣可以对这篇blog里的数据算一下:
其他:
通常一个密码系统只要密钥未泄露,它也应该是安全的。
RF卡虽然数据存储在本地,但一般RF卡支付系统都会有后台审计的,只是时间未知。
也有一些RF卡只做身份识别,数据则在云端。
所以本地修改RF卡可以玩玩,不过不要太投入,毕竟有过前车之鉴(360员工被捕)。
武汉交通卡:
一般交通卡都可以使用NFC来识别,比如使用通用工具”NFCard“就可以读取余额和记录。
北京卡可以直接读取余额和记录:
武汉卡由于对余额做过处理,通用工具只能识别记录:
但若使用”武汉通行“官方充值工具则可以读取:
银行卡:
通用工具”NFCard“可以读取卡号、有效时间、ATM终端交易记录,余额信息本地应该没有:
0 评论:
发表评论