我们先来看看 iButton 是个什么东西,其实就是一个做的和纽扣电池外观一样的卡片
iButton 是 information button的缩写,即信息纽扣,信息纽扣是一个类似于智能卡中使用的微芯片,不过这个微芯片是放在的圆形不锈钢纽扣中,主要用于在恶劣苛酷的使用环境中工作的设备设施。
但是单独这么一个纽扣不太好携带,所以会有一个手柄,把 iButton 固定到上面
他的读卡器长这个样子
我从淘宝购买了一套,配套软件叫做 1990卡读写复制,开发软件的人图方便,固定使用 COM1 口不能修改,因此需要在设备管理器中修改读卡器的 COM 口
就通信来说,iButton 外面那一圈是 GND,里面那一面是传输数据的,把 iButton 直接怼到圆孔里就可以实现信息的读取
点击读取,读到的卡号就会出现在写入 ID 码这个框里
在 Flipper Zero 中,关于 iButton 的 APP 只有两个,一个是 iButton 一个是 iButton Fuzzer;先来看 iButton 这个 APP,有读取(Read)、保存(Saved)、手动添加(Add Manually)这些功能
读取的时候将 iButton 贴到 flipper 的读取接口,这里特意留出来一个圆形的缺口,正好可以放上去,注意 iButton 侧边要和 flipper 侧边的触点接触好
官方读写示意图
读取到的卡号可以保存,然后可以模拟或者修改卡号,但是我在模拟的时候遇到了一个问题,我买的读卡器下凹的太深了,flipper 的倾斜角度不够大,触点没法和读卡器接触,因此只能根据接口定义使用杜邦线连接了,根据官方图示可知,两个触点分别为 GPIO17 和 GND
因此直接将杜邦线插到 flipper 顶部的 GPIO 接口,另一端接触读卡器,就可以在软件中读取到这个 ID 了
在尝试手动添加(Add Manually)时发现卡号也是有格式的,第一个字节是 01 无法修改,最后一个字节是用来校验的位,flipper 会自动计算并帮你改好
用读卡器的软件随意修改卡号也会提示 CRC 校验错误
根据 Github 的源码,校验应该是:CRC-8/MAXIM 算法:
https://github.com/flipperdevices/flipperzero-firmware/blob/dev/lib/one_wire/maxim_crc.c
在线计算网站:https://crccalc.com/
iButton Fuzzer 这个 APP 和 RFID/NFC 的 Fuzzer 类似,就是个暴力跑卡号的功能,可以选择用默认的字典,也可以自己添加。项目地址:
https://github.com/xMasterX/ibutton-fuzzer
使用读卡器软件选择验证,软件就会不停地读取卡号
如图记录了 Fuzz 过的卡号