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 ...
随机推荐
- JAVA_SE基础——48.多态
面向对象程序设计的三个特点是封装.继承和多态.前面已经学习了前两个特点.本章节将介绍多态性. 多态:一个对象具备多种形态.(父类的引用类型变量指向了子类的对象)或者是接口 的引用类型变量指向了接口实现 ...
- Mego开发文档 - 处理并发冲突
处理并发冲突 数据库并发是指多个进程或用户同时访问或更改数据库中的相同数据的情况.并发控制是指用于确保存在并发更改时数据一致性的特定机制. Mego实现了乐观并发控制,这意味着它可以让多个进程或用户独 ...
- java基础总结(1)安装jdk
卸载java java -version yum remove java yum groupjava java 安装java tar -zxvf jdk-8u60-linu ...
- YML(2)yml 语法
YAML 语法 来源:yaml 这个页面提供一个正确的 YAML 语法的基本概述, 它被用来描述一个 playbooks(我们的配置管理语言). 我们使用 YAML 是因为它像 XML 或 JSON ...
- ASP.NET CORE系列【二】使用Entity Framework Core进行增删改查
介绍 EntityFrameworkCore EF core 是一个轻量级的,可扩展的EF的跨平台版本.对于EF而言 EF core 包含许多提升和新特性,同时 EF core 是一个全新的代码库,并 ...
- 论文泛读·Adversarial Learning for Neural Dialogue Generation
原文翻译 导读 这篇文章的主要工作在于应用了对抗训练(adversarial training)的思路来解决开放式对话生成(open-domain dialogue generation)这样一个无监 ...
- python—-模块与包1
模块与包 1 什么是模块? 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀 2 为何要使用模块? 如果你对出python解释器然后重新进入,那么你之前定义的函数 ...
- POJ-2240 Arbitrage---判断正环+枚举
题目链接: https://vjudge.net/problem/POJ-2240 题目大意: 已知n种货币,以及m种货币汇率及方式,问能否通过货币转换,使得财富增加. 思路: 由于这里问的是财富有没 ...
- ECSHOP模板 蘑菇街2018广告楼层设置说明
楼层广告以及说明 图1 ------------------ 设置,通过,后台,模板设置,分类下的商品,选用需要显示的商品分类 图2------------------ 后台,编辑商品分类的广告链接. ...
- 图片处理之 Base64
网页上的图片资源如果采用 http 形式的 url 的话都会额外发送一次请求,网页发送的 http 请求次数越多,会造成页面加载速度越慢.而采用Base64格式的编码,将图片转化为字符串后,图片文件会 ...