深入分析IC卡的工作原理与破解方法


IC卡工作原理

IC卡的工作原理可以简单概括为:读卡器(设备)发送指令给IC卡,IC卡执行指令并返回结果。通过这种方式,IC卡可以实现各种功能,如身份验证、支付、存储数据等。

前面

正好手上有一个在小区办的电动车充电IC卡,一直想要好好研究一下,以为很复杂就迟迟没有做这件事,直到最近有空,兴趣一下就来了,花了点时间研究了一下。

首先通过IC卡读卡器获取到卡的信息,我用的是PM3读卡器


这张卡实际有效数据到01区05块截止

分析数据

如果只有这一组数据很难判断这些16进制的值代表什么,我其实最关心的是金额的数据,那就先从金额入手,为了快一点的定位,我决定消费一下。

可以看到消费后在01区05块最后两个数值发生了变化,原来是11 94,现在是0E 4F
通过计算器将这个16进制的值转换成10进制的值后,得到
4500和3663,为什么十进制的是4位数呢,经过简单的分析,后面两位代表小数点后两位即45.00 和36.63


这样金额这块就搞定了。

其它数据

这个卡的其它比较重要数据是卡号和个人信息,因为这些数据是固定的不会变的,通过对比两组数据完全看不出来,所以需要转换一下。我这里用Uedit32这款软件打开dump格式文件,dump格式文件是通过读卡器软件导出的。

这样就很直观了,0区4块的BD F5 B0 B2代表的是小区的名称,0区5块的D6 DC C3 C7代表的是姓名。
具体这个16进制的是怎么对应到相应的中文的,经过查询后了解到这是 简体中文 GB2312 编码的16进制。
通过https://www.haomeili.net 这个网站可以查询到汉字对应的16进制编码,只需要修改这个值就可以修改姓名。
还有一个卡号,我一直在算,在找这个卡号,发现怎么都找不到。最后仔细核对数据后发现是我想复杂了,虽然在这个数据表里它是以16进制的方式存在的,但是充电设备读取数据时,其实是直接以10进制的方式读取的,所以这个卡号就这么赤裸裸的
显示,完全不需要任何的转换。
它是在0区5块前面两个数值

对应充电设备上显示的

到此这张IC卡的主要数据就分析完了,总体还是挺简单的。

声明:I.KA的个人空间|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 深入分析IC卡的工作原理与破解方法


🧨🏮🎉