NFC Spy:基于Android 4.4及以上手机的非接智能卡跟踪仪
NFC Spy 用来查看读卡器和智能卡之间的指令、数据的交互传输过程,以便 NFC/HCE 开发者分析研究底层通讯协议,定位错误指令。
本程序要使用两部带有 NFC 硬件的 Android 手机,并且要求其中至少一部运行4.4或更高版本的系统(因为需要支持 HCE)。
两部手机中一部处于主机卡模拟(HCE)模式,另一部处于一般的 NFC 读卡器模式,他们之间通过 WLAN 直连(WiFi-P2P)互相连接。
当第一部模拟卡片的手机靠近一个真实读卡器(POS机,柜员机,公交地铁站点闸机等)时,会接收读卡器发来的 APDU,并通过 WLAN 直连的 Socket 链路一并发给第二部手机,第二部手机事先已经靠近一张智能卡处于 NFC 读卡状态,它将转发过来的 APDU 发给智能卡,并将智能卡的响应 APDU 再发回第一部手机,进而由第一部手机发给真实的读卡器。
最终的效果是真实读卡器会认为自己在直接读卡,而本程序会记录下所有的往来 APDU。以上是本程序的工作方式,也是叫做“NFC Spy”的原因。
NFC Spy 是开源软件,可以在 https://github.com/sinpolib/nfcspy/ 下载最新代码。





注意:
请不要用于非法途径,否则一切后果由当事者本人独自承担。另外有些情况下需要ROOT或修改系统文件,请务必小心!由此产生的风险和损失 NFC Spy 开发者也不承担任何责任。
如果你同时安装了其他 HCE 应用,在系统“触碰付款”设置页面中可能会看到多个模拟卡片,使用本程序前请先选中 NFC Spy 卡。
Android HCE 架构使用 HCE Service 来实现卡模拟,每个 Service 需要向系统注册一个 AID 列表,每当外部读卡器开始读卡时会进行应用(AID)选择,系统会根据 AID 注册信息决定启动哪个 Service 接手后续读卡过程。
这样会产生三个问题。首先,主机卡模拟目前只支持符合 ISO14443-A/ISO7816 规范的智能卡,其他诸如M1,Felica,电子标签等都无法模拟;其次 NFC Spy 只能支持有限的 AID 类型;最后, HCE 只接受标准的ISO7816 SELECT NAME/AID 指令作为第一条指令,如果读卡器开始没有发这类指令的 APDU 则无法继续。
第一个问题现在无法解决,除非改用其他方式实现卡片模拟,比如 CyanogenMod 的某些版本;为解决第二个问题,你需要ROOT过的手机,安装 Xposed 框架,激活 NFC Spy 或者 'NFC Card-Emulation Catch-All Routing' 模块,它们都会将所有的 AID 选择都交给特定的 Service 处理;最后那个问题,可以通过修改系统运行库解决。
NFC Spy:基于Android 4.4及以上手机的非接智能卡跟踪仪的更多相关文章
- 基于android平台的斗地主AI
本软件是基于android平台的斗地主AI,我们在源代码的基础之上,旨在改进AI的算法,使玩家具有更丰富的体验感,让NPC可以更为智能. (一)玩法解析: (1)发牌和叫牌:一副扑克54张,先为每个人 ...
- NFC(13)使用Android Beam技术传输文件
注意 Android Beam技术传输文件时nfc只负责连接两个手机,而传输文件实际是用蓝牙模块.且目前接收文件功能只是系统完成,不用自写个接收程序. 传输文件相关的重要api 从Android4.1 ...
- NFC(12)使用Android Beam技术传输文本数据及它是什么
Android Beam技术是什么 Android Beam的基本理念就是两部(只能是1对1,不可像蓝牙那样1对多)NFC设备靠近时(一般是背靠背),通过触摸一部NFC设备的屏幕,将数据推向另外一部N ...
- NFC(7)向NFC硬件写入数据的两个示例(nfc硬件启动android应用,nfc硬件打开uri)
向NFC标签写入数据基本步骤 1,获取Tag对象 Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); 2,判断NFC标签的数据类型(通 ...
- 基于Android Studio搭建hello world工程
基于Android Studio搭建hello world工程 版本:ANDROID STUDIO V0.4.6 This download includes: · Android St ...
- 基于Android 平台简易即时通讯的研究与设计[转]
摘要:论文简单介绍Android 平台的特性,主要阐述了基于Android 平台简易即时通讯(IM)的作用和功能以及实现方法.(复杂的通讯如引入视频音频等可以考虑AnyChat SDK~)关键词:An ...
- 基于Android 4.4 开发的多窗体系统 开放源代码
Hi, 这是我基于Android 4.4开发的多窗体系统,还有非常多不足,还请多多不吝赐教啊,代码已经所有开源. 视频地址 源代码地址 Done: 1. APP以窗体化显示 在 PhoneWindow ...
- 【转】基于 Android NDK 的学习之旅-----数据传输(引用数据类型)
原文网址:http://www.cnblogs.com/luxiaofeng54/archive/2011/08/20/2147086.html 基于 Android NDK 的学习之旅-----数据 ...
- 基于Android Volley的网络请求工具
基于Android Volley的网络请求工具. 一.说明 AndroidVolley,Android Volley核心库及扩展工程.AndroidVolleySample,网络请求工具示例工程.Re ...
随机推荐
- raid5 / raid5e / raid5ee的性能对比及其数据恢复原理
RAID 5 是一种存储性能.数据安全和存储成本兼顾的存储解决方案. RAID 5可以理解为是RAID 0和RAID 1的折中方案.RAID 5可以为系统提供数据安全保障,但保障程度要比Mirror低 ...
- JS判断不同操作系统显示不同样式css
<script type="text/javascript"> var system ={}; var p = navigator.platform; //判断是否为P ...
- mosquitto安装和测试
一.安装 1.windows安装 安装完毕,更新安装目录的dll文件 2.linux安装 编译保存用户数据到数据库的插件 安装 3.启动 mosquitto mosquitto mosquitto_p ...
- ELK学习总结(4-1)elasticsearch更改mapping(不停服务重建索引)
elasticsearch更改mapping(不停服务重建索引)原文 http://donlianli.iteye.com/blog/1924721Elasticsearch的mapping一旦创建, ...
- PHP7链接MySQL
1 <?php $mysqli = new mysqli("localhost", "root", "123"); if($mysql ...
- Django form表单
Form介绍 之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来.与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入, ...
- vue组件详解(五)——组件高级用法
一.递归组件 组件在它的模板内可以递归地调用自己, 只要给组件设置name 的选项就可以了. 示例如下: <div id="app19"> <my-compone ...
- Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数
本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================ ...
- 安装shellinabox-master
安装shellinabox-master 1 插件介绍:通过web页面管理linux主机(电脑版) a. 安装 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...
- asp.net core 三 Nuget包管理
参考连接:http://www.cnblogs.com/netcore2/p/7412891.html 这里的说明,基本就是学习了别人的文章,自己做了个备份 asp.net c ...