随着Redmi Note 8Pro的发布,小米将NFC功能下探到了千元机行列,那么如何玩转NFC?如何利用NFC实现加密IC卡的复制功能呢?那么本篇文章就对于NFC复制加密IC卡的过程有一个详细的介绍。
随着NFC的普及,有越来越多的身份认证场景使用了IC卡,而厂商为了用户的信息不被轻易泄露,而对IC进行了加密,一般的手机NFC无法直接复制加密的IC卡,但可以借助第三方工具进行对加密IC的复制。
那么如何完整复制加密IC卡实现支付功能呢?本教程就以某校园的校园卡进行复制测试。
1. 查看此IC卡是否可以进行复制首先在手机上下载TagInfo软件并安装:
将IC卡贴于手机NFC感应区,稍等片刻
进入"技术"一栏,查看SAK是否为0x08,如果是0x20 或者0x28的话,则说明此卡为银行卡同类型的cpu卡,无法进行复制(0x20可以利用pm3嗅探方式解密,此处不再阐述)。
然后查看下面的数据,如果存在FF:FF:FF:FF:FF:FF的话就是可以利用pn532进行解密,
而如果全部都是xx:xx:xx:xx:xx:xx的话,就需要更贵的硬件设备进行解密,这里不再阐述。
2. 准备硬件设备· 准备RMB约33元左右,一台有USB插口的Windows系统电脑
然后在某宝买以下物品:
· pn532(一定要问卖家是否可以帮忙焊接,一定要焊接过得),USB-TTL转接线(两者通常打包出售)--30元
· CUID水滴卡(非买pn532送的UID卡) --3元
3. 准备相关软件PC软件:
· USB-TTL驱动
· MifareOneTool
项目地址:
下载地址:
手机端应用:
· MIFARE Classic Tool(可选)
项目地址:
下载地址:
官方无中文翻译,如有需求可以网上自行找汉化版
4. 硬件安装并连接到PC首先pn532背面有接口说明:
USB-TTL上也有接口说明:
按照以下接口连接:
GND——GND
VCC——5V
TXD——RXD
RXD——TXD
然后将USB-TTL连接到PC的USB端口,此时,pn532芯片红色LED灯会常亮
接着打开MifareOneTool软件
点击"检测连接",如果检测到pn532芯片,则有相关信息提示:
如果没有识别到设备,请确保驱动已经进行安装,或者更换驱动再次尝试
5. 利用nested authentication攻击解密IC卡将要解密的IC卡放置于pn532芯片上,在MifareOneTool中点击"一键解原卡",此时,会利用nested authentication攻击的方式对key的解密,耗时将会在几分钟左右。成功解密后将数据保存一下。
我们平日用的都是S50的Mi类型的IC卡,此卡共有16个扇区,每个扇区有4个区块,其中每个扇区的前三个区块放置数据,最后一个区块为放置keyA 访问条件 keyB,每个扇区的数据有key才可以访问(第一个扇区的第一个块除外)。
第一个扇区的第一个区块放置卡的UID与厂商出厂代码,90%的门禁都是通过获取到UID来识别身份的,而UID的获取不需要key即可访问,所以仅复制UID即可通过绝大多数的门禁的验证,而本文的目的是在于支付功能的实现,而支付功能一般储存在加密扇区,所以加密数据均要进行复制。
首先先绕过手机NFC的加密检测,此时我们用到了水滴卡(CUID)卡,此卡为国内某厂商的神卡,可以多次读写所有扇区的所有区块包括厂商代码,将CUID卡放在pn532上,在MifareOneTool.exe高级操作模式中,打开Hex编辑器
打开之前保存的IC卡数据
选择扇区0,复制上面第0块的值,然后点击左上角的文件选项
点击新建,然后先点击扇区1,再点扇区0
然后将将值复制到第0块,然后点击修改扇区,接着点左上角文件,点击另存为
然后点"CUID写"
选中card_unlock.dump
写入成功后,即可使用手机NFC复制此CUID卡
然后将手机NFC刷卡打开,并放置于pn532上
点击写M1,选择card.dump
成功写入,最后再查看一下写入的数据是否正确
点击加载密钥,选择card.dump,然后点击已知密钥读
读取结果保存到tmp.dump
点击差异比较
只有第一个块的后面的厂商代码不同,其余的加密块的数据全部一致,至此,模拟加密卡到Redmi Note 8Pro NFC完成,现在你可以愉快的拿着手机去刷卡消费去了。