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

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

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 代码编写的时候还需要建立一个文件系统吗?

推荐标签 标签

  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 399 关注
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 20 关注
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    5 引用 • 26 回帖 • 492 关注
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    17 引用 • 236 回帖 • 417 关注
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    3 引用 • 80 回帖 • 2 关注
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    7 引用 • 30 回帖 • 451 关注
  • WiFiDog

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

    1 引用 • 7 回帖 • 545 关注
  • 安装

    你若安好,便是晴天。

    128 引用 • 1184 回帖
  • 音乐

    你听到信仰的声音了么?

    59 引用 • 509 回帖
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖 • 13 关注
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    45 引用 • 113 回帖 • 315 关注
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    96 引用 • 155 回帖
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 626 关注
  • Vue.js

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

    261 引用 • 662 回帖
  • Webswing

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

    1 引用 • 15 回帖 • 636 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    941 引用 • 1458 回帖 • 150 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 427 关注
  • OAuth

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

    36 引用 • 103 回帖 • 10 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3168 引用 • 8207 回帖
  • 自由行
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 423 关注
  • Love2D

    Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。

    14 引用 • 53 回帖 • 513 关注
  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    96 引用 • 330 回帖
  • OnlyOffice
    4 引用 • 24 关注
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    76 引用 • 421 回帖