[原创]用逻辑嗅探破解接触式IC卡口令

最近两周对接触型IC卡很感兴趣,就动手实践了一下,最终实现的效果是通过破解IC卡口令实现对数据修改,然后就可以随意洗衣服喽~
IC卡从数据传递方式上划分为接触型和非接触型两种。接触型的卡片表面有金属贴片,用于连接卡内芯片和外界器具(洗衣机,电表,打水器)。而非接触性的卡片则是通过射频信号与器具进行信息传递。IC卡本身是无源的,需要依靠外部器具提供的能量驱动内部电路。
时下更流行是非接触型的IC卡或称射频卡,如公交一卡通、校园一卡通。从时间上来说射频卡出现的更迟,常搭载CPU使得其更为智能,拥有更复杂的数据处理能力。随着M1破解的新闻,有关于射频卡的破解讨论就遍地开花了。不过现实中,射频卡的破解要考虑的不仅仅是卡片自身,比如校园一卡通的数据在服务端也有记录,单方面的数据修改可能使卡被锁

接触型的IC卡经历了从单纯的数据存取卡,加密卡,CPU卡的演变,其应用范围也很广,至今一些单位,校园,小区的洗衣卡,电卡仍沿用着接触型IC卡,只是被掩盖在射频卡的光芒之中,变得不那么起眼了而已。直观上感觉由于其出现的较早,安全性缺陷可能更为显著,所以对于IC卡的DIY活动就从接触型IC入手了。
为此,首先要入手的就是读卡器:查看卡内数据是了解IC卡信息最直观的桥梁(我使用的是ACR38读卡器,这类使用U口连接电脑的读卡器免去了笔记本没有串口滋生的烦恼)。读卡器配套的软件和SDK实例代码很多,但尝试了一圈觉得CardTool是最靠谱的一个工具。接触式IC卡有很多种,他们的存储空间不尽相同,控制指令各有千秋,加密与否不能一概而论,时序逻辑千差万别,读卡器也只能兼容常见的类型的IC卡,难免有漏网之鱼。读卡器能够产生操作IC卡所需要的时序逻辑电平(发出IC卡所需要的控制字)以读取或修改卡内数据。
电脑操作读卡器需要控制字,读卡器操作IC卡也需要控制字,这一前一后的两种控制字要区分开来加以看待。读卡器的控制字只有一套,写在读卡器配套的手册中,并在SDK中实现了通过U口发送这些控制字的函数。而IC卡的控制字有很多套,因卡而异,需要到该种类型IC卡的手册中查询(这部分对用户透明,属于读卡器操心的事儿)。本次操刀的IC卡类型是SLE4442,西门子公司的加密卡产品,该类型的卡片还算比较常见,我用的洗衣卡,电卡,打电动的会员卡都属于此类型。
如何判断IC卡类型是眼下亟待解决的事儿,我认为可以有三种方法:
1.使用CardTool时,类型挨个试,看哪个能正常操作卡片,最初对IC卡了解有限,所以就用此法土法校验了一下。随便选择一种类型,然后点击重置,根据返回的标识信息,就能判断选择是否正确了,选择正确时,重置操作会返回卡片类型标识特征字。

 
2.如果没有读卡器,仅根据外观判断也是可行的,taobao上各商家销售的接触式IC卡样图是主要的参考依据,比对金属片的花纹划痕就很容易确定卡类型。
3.幸运的话,有些卡背面就有写自己的类型
一旦确定了类型,就可以使用CardTool配合读卡器对卡片进行操作了。在此之前先介绍一下我使用SLE4442的加密卡,所谓加密是指卡片的写操作权限受口令保护。卡片存储区域包含3个部分,应用存储区,口令存储区,和写保护控制区,前两个区域是要重点关注的。
应用存储区大小为256字节,其中前32个字节存放西门子的厂商信息,我手头的这些SLE4442的该区域数据内容完全相同。下图表示在重置后发出读指令(FF B0 00 00 00 20,这是读卡器的控制字),读取卡片前32个字节的内容,返回了32个字节和9000(表示操作未产生错误)。
 
前32个字节受写保护,一次写入无法修改(从硬件上烧断熔丝来阻止重写操作)。应用存储区的33-256字节就是不同单位使用卡片时自行定制的了,通常包含的数据可以有:卡标识(说明卡的用途),余额,次数,身份ID,校验值…随卡使用者所需功能变化万象。
口令存储区包含卡片三个字节的口令,以及一个字节口令尝试次数计数器(允许最多错误3次,超过就锁卡)。每次口令尝试失败都会导致计数器数值减少,口令校验成功会把计数器恢复初始最大次数。
卡片应用区的数据可以被任意读取,不受限制,但修改数据的操作前需要先通过口令验证,否则写操作是无效的。SLE4442默认口令是FF FF FF(不过你放心,卡片使用者都会更改的)。口令校验成功前如果发出读命令去读口令存储区,返回当前计数器的数值和三个零,校验过后读出来的内容是计数器数值和三个字节的口令值。
在刚拿到读卡器的时折腾半天并读出来卡数据时就已经很兴奋了~终于窥探到这个小片子里面的东西了哈。读洗衣卡的内容如下:

  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值