hce—运用nfc的卡模拟技术进行通信-android

本贴最后更新于 3311 天前,其中的信息可能已经事过景迁

2015年在研究近场支付的时候,apple pay还未出来,招商银行的nfc支付也没有出来,应该算得上吃鲜肉吧!!!哈哈!!!至于apple pay在之后的文章中发布出来。敬请期待(最近忙完了该忙完了,抽出了一点空闲的时间将之前的研究分享给大家。)。

当时遇到了非常多的问题,涉及到了与硬件的通信,需要用到十六进制数据,以及二进制的数据进行转换,转换成硬件可以理解的数据。当整个流程理清的时候,你会觉得非常的简单,因为一条直线走到底。但是之前研究的时候却是不知道如何通信,通信协议又是怎么样的,如何驱动nfc模块-===等等。。一头雾水,最后摸索成功。

容我上面发一下牢骚,下面开始内容部分。

 转载请附上本博客连接http://www.junwen1992.com//admin-index.do#article/article-list

在hce技术用到的是NFC近场通信,以下为NFC近场通信的技术原理。具体细节请参考:ISO 7816-4

手机贴近card Reader(小米平板+NFC读卡模块,这里我采用了android系统的小米平板,以及nfc读卡模块,nfc读卡模块是在淘宝选购的,然后提供开发包进行二次开发,这样,修改和封装一下发送的指令就可以连接平板了),发生了NFC之间的通信。其过程如下

关于手机部分的解释:手机接收到指令成功返回9000这里是需要android操作系统来管理的。android系统必须是4.4以上的操作系统。至于其原理,上android developer就可以看到。

我简单的说一下:app程序在需要向android系统注册一个id。然后手机遇到nfc读卡器发出的指令后,系统获得指令,得到读卡器发过来的id,然后去调用以这个id注册的应用程序。完成唤醒。

这就意味着,你只要屏幕亮着,那么就可以唤醒应用。

 转载请附上本博客连接http://www.junwen1992.com//admin-index.do#article/article-list

APDU指令集解释:

 如上表所示:

00A4040005F222222222分别对应的是:

CLA     : 00

INS      : A4 选择文件

P1       : 04

p2       : 00

Lc       : 05 发送数据的长度

Data   : F222222222 发送的数据

LE      : 无数据

下图为 INS指令的含义

1. 这是一条选择指令,选择了一个应用,这个应用之前向系统注册了一个相同的id,这样就可以找到这个应用了。相信之前研究过ic卡的同学就知道。要读一张卡首先也是需要发送一个选择指令吧。

2.然后手机就会返回了一个9000的成功状态码,如果返回其他的,应该是错误状态码吧,具体看ISO 7816-4文档吧。

3.选择了这个应用程序后就可以建立连接了,发送数据了。这个数据会是16进制的。

转载请附上本博客连接http://www.junwen1992.com//admin-index.do#article/article-list

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • zempty

    楼主好人。社区有你更美好~💞

  • wuym

    我目前用的是 android 官网的 HCEdemo,但是和读卡器通信时读卡器这边的状态码是找不到文件,请问 HCE 代码编写的时候还需要建立一个文件系统吗?

推荐标签 标签

  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    184 引用 • 1020 回帖 • 1 关注
  • Unity

    Unity 是由 Unity Technologies 开发的一个让开发者可以轻松创建诸如 2D、3D 多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    25 引用 • 7 回帖 • 122 关注
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    54 引用 • 44 回帖 • 1 关注
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 391 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    175 引用 • 3857 回帖
  • RemNote
    2 引用 • 16 回帖 • 14 关注
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 29 关注
  • 印象笔记
    3 引用 • 16 回帖
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    182 引用 • 408 回帖 • 490 关注
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 610 关注
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    589 引用 • 3538 回帖
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 60 关注
  • OneDrive
    2 引用
  • 一些有用的避坑指南。

    69 引用 • 93 回帖
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 706 关注
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖 • 2 关注
  • 自由行
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 562 关注
  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 688 关注
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    733 引用 • 1280 回帖
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    952 引用 • 944 回帖
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    268 引用 • 666 回帖 • 1 关注
  • Access
    1 引用 • 3 回帖 • 1 关注
  • 创业

    你比 99% 的人都优秀么?

    82 引用 • 1395 回帖 • 1 关注
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 638 关注
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 67 回帖 • 451 关注
  • Scala

    Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。

    13 引用 • 11 回帖 • 158 关注