感谢评论区
月光
交流:方法一,上电后验证通过不用拔掉 I/O、RST 和 CLK,保持加电就行了。
SLE4442卡,在学校被拿来用作取电卡。在我拥有的所有卡中,电玩城的储值卡也是SLE4442卡。这种卡算是比较老的卡,一般来说越容易破解的卡片,年代也就越久远。
首图是按照SLE 4442 密码破解方法一文做的,文章年代有点久,但依然管用。值得一提的是淘宝上居然有人根据这个做出了成品,卖1.6k。
图上方法一原理很简单,卡上电验证通过以后一直处于开放状态,这个时候插上电脑读卡器,读错误计数,返回的2-4字节就是卡口令。但是在没有金手指电路板的情况下,实现起来较为困难。
图上的方法二在没有金手指电路板的情况下还是可以实现的,具体参考用逻辑嗅探破解接触式IC卡口令。用导线碰触卡上的触点I/O(文中叫DATA)、CLK和GND并想办法固定住,另一头引到逻辑分析仪,调整逻辑分析仪的采样时间为10s(不同机器的采样时间可能需要调整),开始采样后迅速将卡插入机器进行采样。
但现在电路板制作门槛越来越低,只要有一定的电路知识,再看看软件教程,做一块普通的板子还是没问题的。下面是做出来的板子。Vpp即是SW。
根据 Nyquist 采样定理,采样频率应是信号频率的两倍以上才能恢复实际波形。根据 SLE4442 文档,CLK Frequency 的范围是 7kHz - 50 kHz,为保证能恢复波形,采样率应该在 100 kHz 以上。当然采样率不是越高越好,因为一般来说信号分析仪一次能采样的数据是有限的,如果采样率太高,得到的实际数据就会很短,也许还没等到校验密码出来就采样完了。
按照既定的方法进行监听,找到命令字为 0x33 的数据,读取密码电平就可以了。需要注意的是字节中位出现的顺序是从低位到高位的,找的时候从低位找起,比如 0x33 你应该找 1100 1100
,紧接着的是地址字,然后就是密码字了。按此方法监听到三个字节,即是密码。
如上图,需要注意的有几点:
- CLK 的脉冲在数据读写进行时一般都很规律,虽然偶尔会出现周期拉长/缩短,但不影响卡片读写。
- CLK 下降沿以后,机具开始准备数据,当下个 CLK 上升沿时,读该上升沿位置对应的 I/O 高低电平即可知道数据。
- 校验密码的过程并不一定马上出现,机具可能会先读取卡片公共区域的数据,当需要读写卡片保护区之前,才进行密码校验。所以需要耐心分析结果。
- 图上地址字是 0x03,意味着这已经是第三个密码字了,前面还有两个。
- 该热心网友使用的是 2MHz 的采样率。
好想認識二狗~(再看了這整個blog之後
目前是台灣某大學大一的學生
想要深入瞭解接觸式IC卡
但看完整篇,沒幾個字能看懂
更甭說實現文內的方法
希望能提供些入門的文章(搜了好久,都看不太懂,嘆
讓我摸索學習學習~
我回复的可能会有些晚,同时我也不常用 Telegram。回复有些长,耐心看一下,我相信一定会有帮助的
SLE4442 主要还是看官方的说明书(SIEMENS),但是中文说明书可能少一些。
我大概找了下,可以看下 这篇文章 。
然后大陆这边出了仿卡,复旦大学的FM4442,和 SLE4442 的通信协议基本全兼容的,所以你转个方向去找 FM4442 的资料可能会方便一些
除此之外,你需要了解什么是字节(byte),什么是位(bit),以及十六进制和二进制。因为这是数据的基本格式。
我可以大概说一下
首先要了解加密卡的原理,无论是接触式还是非接触式,都大致一样的
这个卡片里面的芯片,你把它当成一个小的计算机,平时不通电,只有在读卡器上才会通电
接触式就是直接给触点上电,非接触式就是通过电磁感应,给卡里面的线圈激励一个磁场产生电流,芯片就上电了
你可以找几张非接触式的卡,拿手机补光灯从背面照一下看看,可以看到里面的线圈和芯片的
扯远了,回到卡片上来,继续拿 SLE4442 举例
VCC 和 GND 这两个触点就是这个计算机的插头
你上电以后,卡片里面的小计算机就开始随时准备着你给它发送数据了
但是它毕竟不够智能,只能说按照一定的规则给它发
也就是说,你给它发的数据,要告诉它你要干什么,以及准备怎么干
比如你要验证密码,那你得先告诉它:我要验证密码啦;然后它说可以;然后你才把密码发过去给它;它会告诉你验证通过还是失败。
如果验证通过了,那么在卡片下电之前,你都可以随便对卡片里面存储的数据做任何事,只要它支持这些功能。如果验证失败了,卡片会记住失败的次数,超过3次,这张卡就锁死了!(不同卡允许的错误计数不一样,比如非接触式的M1卡错误计数最高是16次)
然后读写数据也一样,你告诉它你要开始读啦,他说你读吧,我说我要读你存储区域里面从哪里到哪里的数据,它就会传这些数据给你。
告诉卡片你要干什么,其实就是命令的某种标志,称为“命令字”,比如文中说的
0x33
就是验证密码的命令字。根据命令字我们可以对照文档,知道通讯过程中某段数据的意义。好了,大概知道通讯的流程了,但是具体到电气上面要怎么实现呢,答案是:高电平和低电平。
前面有说到,数据都是字节,一个字节又可以分成 8 位,每一位只有 2 种状态,那就是 0 和 1(二进制)
比如十六进制字节
AC
,转成二进制就是1010 1101
但是你给卡片发过去的时候,是从低位开始发的,也就是从右到左一位一位发,发过去就是
10110101
那具体到卡片上,我们约定 1 就是高电平,0 就是低电平。我给你上个高电平,再给你个低电平,就相当于我给你说了:10
卡片上的I/O(或者叫DATA)触点就是干这个的。
但是问题来了,要是连续要给卡片发好几个 1 怎么办,卡片怎么区分出来是几个 1,这时候就要涉及到第三个东西:时钟频率。
我这边一直给卡片发一个固定间隔的高电平低电平交替,比如 01010101,假设一秒一个,那一个周期就是两秒,频率是0.5Hz
卡片这边跟着我的节奏一起摇摆,就知道我的时钟频率是 0.5Hz 了,也就是两秒一个 I/O 数据
卡片上的 CLK 触点就是干这个的。
然后我给卡片发
AC
这个字节,就简单了:首先
AC
转成二进制10101101
,逆序一下:10110101
,然后我给 I/O 加上 2s 高,2s 低,4s 高,2s 低,2s 高,2s 低,2s 高卡片就收到了
10110101
,也就是说我的AC
这个字节已经发过去了实际上通讯会更加复杂一点,因为每次发数据之前都要等我这边和卡片时钟同步完成才会发
而且卡片的频率肯定更加高,不然两秒一个bit实在是太慢了
至于为什么转成二进制之后逆序发过去,这个和计算机底层的实现有关,这个叫栈(Stack),一个后进先出的数据结构,这里不展开讲了
好了,既然数据归根结底是高电平和低电平,那要是我们有了一个超级灵敏的电压表,通过测量通信过程中 I/O 口上面是高电平还是低电平,不就可以记录下来读卡器给卡片发了什么数据了吗?
我是不知道密码是多少,但是那些合法的设备,比如电表、电玩城充值机知道呀,每次插卡进去它们肯定都会先给卡验证密码,不然卡肯定是六亲不认的
那好办,我把这个超灵敏的电压表往卡片和设备中间一加,就可以读出密码到底是多少了
这个超灵敏的电压表,就是逻辑分析仪。只要分析逻辑分析仪采集到的高低电平的波形,就能够反推出密码来了!
大概原理是这样。不懂再问我噢。
@Meow 哎呀媽呀,真的回了,好感動
二狗人好好
我終於獨懂電平的意思了!!!
大陸用法跟台灣不太一樣
Q1:鎖卡的機制是採硬體熔斷嗎?
準備剁手邏輯分析儀一枚,慢慢摸索
另外FM4442的中文資料真的好找很多~
不是看不懂英文,只是每天寫報告跟讀期刊看英文就夠煩的了,哈
再次感謝二狗大人
是否是熔断不太记得,有印象的确是熔断,需要你确认一下。
逻辑分析仪有便宜的,大陆淘宝上有8通道24M的逻辑分析仪,才20几元人民币,我用的就是这款,分析SLE4442完全足够。
地址在这里 https://item.taobao.com/item.htm?id=44646837717
不知道现在支不支持发港澳台,或者当地有没有这种卖,你可以找一下。
博主有没有qq群或者电报群交流交流,分析了半年小区的电卡数据,没看懂校验位是怎么算的
TG Group invite link base64:aHR0cHM6Ly90Lm1lL2pvaW5jaGF0L2IwNGNmaEJuVFdBMU5HWTk=
@Doghole 已申请
請求加入telegram群組
若採用方法一,是不是只要想辦法保持5V供電就行
若成功保持供電,又如何能以電腦發送命令
FF B1 00 00 04
呢?謝謝!FF B1 00 00 04
是支持 APDU 的读卡器命令,我这边通过 ACR 配套软件发送。其他读卡器可能不适用该命令,以具体读卡器配套软件为准。老哥是否还看?,能否分享我一份4442 pcb电路图,万分感谢!
已发到你留的邮箱。
@Doghole 您好,pcb文件麻烦发我一份,万分感谢!我已加入tg群组,希望多多交流!
不好意思现在才看到……你应该也拿到了