❶ 感应式读卡器,复制你的门禁卡、购物卡、饭卡,你的卡还安全么
看了这个,你的饭卡还安全吗?
仅供测试,请勿模仿。
//NFC是什么,肯德基吗,,,不。。。
近场通信(Near Field Communication,简称NFC),是一种新兴的技术,使用了NFC技术的设备
(例如移动电话)可以在彼此靠近的情况下进行数据交换,是由非接触式射频识别(RFID)及 互连 互通技术整合演变而来的,通过在单一芯片上集成感应式读卡器、感应式卡片和点对点通信的功能,利用移动终端实现移动支付、电子票务、门禁、移动身份识别、防伪等应用。由飞利浦公司和索尼公司共同开发的一种非接触式识别和互联技术,可以在移动设备、消费类电子产品、PC和智能控件工具间进行近距离无线通信。NFC功能提供了一种简单、触控式的解决方案,可以让消费者简单直观地交换信息、访问内容与服务。
借助CM9 rom的nfc读写标签功能,实现软件卡模拟。(之前的版本都没有,google官方版本没有开放此功能,目前从android 5.0起google开放了其他nfc api以进行卡模拟操作,)。
手机或手环等带有NFC功能的设备通过模拟IC卡的操作,把像小区门禁卡、饭卡等IC卡的数据复制到手机的NFC芯片上面,以后就可以用手机的NFC功能进行刷卡。
可以截获安卓手机支持的13.56hz nfc无线通讯协议的所有标签数据,nfc非接触黑盒测试一直没有太好的方案,要么太高端(需要专业的设备),要么不好用(proxmark3也不便宜,监听无线的方式导致截获数据不稳定,也没有现成儿的解决方案,操作的便捷性和交互性也好差)nfcproxy给我们这些偶尔用一用的测试狗提供了一种低成本高效率的解决方案,支持各种nfc标签,iso 14443标准,ap数据也是完整稳定的,基于安卓app源码的二次开发也非常简单,会java的随便改改基本都不是问题。基于这个 app可以以软件方式衍生出多种测试方式
1、 卡和终端之间数据的嗅探
2、 交互过程中的数据修改
3、 模拟卡
最关键的还是简单,买俩一百来块钱一个的二手手机就可以了。
硬件需求:
两个带nfc功能的android手机(咸鱼最便宜300块钱以内可以搞定)一个带非接触功能的POS或者读卡器(有个pos最省事,我有一个支持银联闪付的pos)自己的银行卡,支持非接触支付的,有银联quick pass标志的都可以
1、基于支持CM9 rom的安卓手机一个
我用的是谷歌亲儿子一代 nexus s,ROM是slim 4.3 build 2-OFFICIAL-1332 一个基于cm的定制版本
android版本 4.3.1。我买得早,略贵,现在闲鱼买二手的话没有必要买这个,后面几代也都便宜了,二儿子三儿子四儿子什么的,都可以考虑,一加一也可以考虑,略贵。理论上支持CM9的都可以,但由于
CM官网已经黄了老版本的rom不好找,所以尽量要先找到手机对应的老版本的rom再决定买啥。 2、带nfc功能的安卓手机一个(最好也支持cm9)
我用的是 三星 GALAXY S2的T版SGH-T989大力神,CM版本是11-20160815-NIGHTLY-hercules,
android版本4.4.4 ,cm11好像已经去掉软件卡模拟的功能了,我也没有去降rom版本,有一个能用行了。只要不是太奇葩的定制rom,理论上都可以。建议还是选择支持cm的,比较保险。硬件选择同上软件需求:
有完整的功能实现,大家可以直接打包使用我基于自己用着方
便,整合了emv-bertlv库,可以直接在app里把交互数据拆包。大家可以用着试试我的github地址:
本地app包下载:
使用方法
两个手机都安装nfcproxy都打开NFC功能连接到同一个wifi,两个手机之间可以相互访问
1、 proxy端设置
在支持cm9卡模拟的手机(我得是nexus s),打开nfcproxy软件,点设置,取消 relay mode 单选框IP 地址填另一个手机的wifi ip端口 填另一个手机的nfcproxy监听端口,默认9999encrypt
communications 不需要选,自己玩不用加密always keep screen on 随便debug logging 勾上,可以显示出卡号。然后退出设置。
2、 relay端的设置
在另外一个手机(我得是t989),打开nfcproxy软件,点设置,勾选 relay mode 单选框IP 地址 不用填
端口 填刚刚在另一个手机设置的nfcproxy监听端口,默认9999,两边一样就行encrypt
communications 不需要选,自己玩不用加密always keep screen on 随便debug logging 勾上,可以显示出卡号。然后退出设置。
3、 测试
1、 将用于relay端的手机,nfcproxy软件打开贴到银行卡上,这时status窗口应该提示
TechList:android.nfc.tech.IsoDepandroid.nfc.tech.NfcA,如果没反应请检查nfc是否打开,手机
NFC功能是否正常
2、 将POS机弄到选择消费,输入金额后,提示请刷卡的界面
3、 将用于proxy端的手机,nfcproxy软件打开,去贴到POS机上执行非接刷卡动作。
正常情况贴上去后nfcproxy的data窗口会提示:Reader
TAG:Tech[android.nfc.tech.Iso.PcdA]Connecting to NFCRelayConnected to NFCRelayTransaction
Complete!这说明已经已经连上了贴卡那台手机,POS机的请求已经转发到卡上了,并且卡的应答已经转发回来了,交易成了。这时候POS应该显示请输入密码了,输入密码交易成功。再看replay端的 nfcproxy的data窗口,就可以看到交互的数据了在数据上长按可以选择最右面的三个竖点,export to file将截取的数据保存到内部存储的/NfcProxy目录中
注1:如果帖POS的手机没反应,需要检查nfc功能是否正常
注2:status 提示 connection to NFCRelay failed 需要检查两台手机wifi是否联通,配置的ip和端口是否正常
祝好运。
btw: 这个方案15年我就在用,只是工作测试pos需要,偶尔用到感觉很方便,最近又用了一次,下决心整理一下。之前都看大神的文章,自己也为社区贡献一次。软件本身还有很大潜力可以挖,比如动态修改交互数据什么的。。。。。。 你们懂的,不要乱来哦,会查水表的。 另外也发现有一些终端读卡会采用一些奇怪的模式,导致软件报错,这时候只能再用proxmark3暴力监听了,但这个mitm的方式比 proxmark方便多了,也便宜的多了哈。最后附一张ppt里的图,我简单画了一下,方便大家理解
在复制IC卡这一块,我把IC卡分为加密卡和非加密卡两类,非加密卡请直接尝试复制,不行的话参照加密卡的教程。
工具:
1.硬件:PN532(初学者建议购买这个,某宝卖30RMB左右,一般的半加密卡用这个就能破解了,全加密卡需要用到PM3),USB转ttl线,小米手环NFC版(3代4代随意),cuid卡
2.软件:PN532的驱动(自己问卖家要,找对应的驱动,或看看我链接里的驱动适不适合)、winhex、
MifareOneTool(简称M1T)、NFC_READER_crack。
首先把USB转ttl线与PN532连接好(线序定义:黑GND, 红VCC,白SDA,绿SCL)。然后在电脑安装好
PN532的驱动,PN532连接到电脑,然后查看设备管理器,COM口那有设备证明已经成功安装好驱动了。
打开M1T软件,点击检测连接然后一键解原卡,有密钥的会尝试破解,破解成功后会导出一个.mp文件,我们把它保存。
用winhex打开该.mp文件,把AB密钥用FF填充,填充好了之后我们另存为一份,顺便把开头的卡号记下来(8位)
之后我们再次打开M1t,选择高级操作模式,打开Hex编辑器,把刚刚找的八位卡号复制下来,再打开工具,修改UID,把刚才复制的八位卡号粘贴到里面,点确定,然后点文件-另存为一个.mfd文件。
高级模式里选择cuid写,把刚刚的.mfd文件写入cuid卡里面,如果没写满64个块就再写一次。
小米手环选择门卡模拟,把刚刚写入了.mfd文件的cuid卡模拟到小米手环上,之后打开
NFC_READER_crack这个软件,选择写普通M1卡,把填充好密钥的饭卡数据写入手环中。如果只写入63个块,那也没关系,去试试能不能用。
然后就大功告成啦!!
本教程切勿用于非法用途,复制饭卡余额都是一样的,不存在修改余额这一说。饭卡原本余额是多少的,你用什么来打饭余额都是一样。复制到手环里只是为了方便打饭。
Q:为什么到了最后把数据写入手环时不用原来的M1T而是用NFC_READER_crack呢?
A:因为用M1T写入数据到手环会出现玄♂学问题,就是写不到63个块,用NFC_READER_crack就没有问题。如果是用cuid卡来复制门禁卡的话可以尝试用M1T。
Q:那如何复制门禁卡?
A:门禁卡如果是半加密卡的话可以参照本文来复制,如果是非加密卡的话试试直接模拟可不可以,如果不行的话按照读出数据(保存)–生成一个带有卡号的.mfd文件–复制到cuid卡–手环模拟该cuid卡–手环写入门禁卡数据这一步骤来复制。
生活中不乏其他案例,黑客破解NFC公交卡,可无限次乘车,甚至可以劫持带有NFC功能的手机,所以安全问题显而易见,毕竟防人之心不可无。