zoukankan      html  css  js  c++  java
  • 拉卡拉手机刷卡器音频通讯技术原理初步分析

    拉卡拉手机刷卡器音频通讯技术原理初步分析

     kimmking@163.com

    http://blog.csdn.net/kimmking/article/details/8712161

    1.       拉卡拉刷卡器


    大家都知道,拉卡拉就是一个手机刷卡器。拉卡卡、智能手机、拉卡拉软件、网络,构成了一个完整的、更强大的POS系统。为什么说更强大呢?因为在手机应用app的这一层,拉卡拉可以做很多很多方便的功能,这样借助于类似传统的刷卡服务,提供一系列现在支付宝也正在大力发展的生活服务等功能。而这个是银联的POS所严重缺乏的。目前来说,移动支付里,最方便的肯定是支付宝的快捷支付;但考虑国内目前的安全环境,用户把银行卡和密码托管给一个网站来管理,明显不如用的时候输入一下的方式更能被接受。相对于更安全的支付宝加网银的方式,拉卡拉做到了与发卡行无关,这样也不需要手机上安装各种不同的银行的网银客户端。所以,显然拉卡拉在某些应用场景比一些其他的移动支付方式更有优势。下面我们就来看看拉卡拉的技术原理是怎么回事。

    2.       内部结构

      
      上面左右是一个常见的拉卡拉设备,挺好看的。如果我们把它拆开来看,就如右图所示,当然除了这个东西,下面还有个耳机插头、侧面还有一个刷卡的槽。

    总体来说,这个电路板很简单。

    2.1    一个电池就占了绝大部分地方,导致整个拉卡拉个头偏大,可供刷卡万次以上(见参考资料1)。

    2.2    左边的四根引线,对应于耳机插头上的4个区域。分别是左声道(Left)、右声道(Right)、麦克风(Mic)和接地线(Gnd)。其中L和R是接收手机往外输出信号的接口,M是输出信号到手机的接口。需要注意的是并不是所有的顺序都想右图所示。因为存在两个不一样的标准,国际标准和国家标准。像联想、中兴等大部分国产手机都是国家标准,跟右侧的图一样的顺序。而iphone、htc、三星、小米等手机都是国际标准,M和Gnd的顺序是反向的。拉卡拉的某些版本可以自动识别M和G的正反向。(见参考资料2)

    2.3    电路板最右面的芯片处理输入信号和转换刷卡数据的A\D(音频\数字)处理模块,它是整个系统的核心。在手机应用里点击刷卡时,音频信号通过L或R从手机发送到电路板,通过A\D模块转换成数据信号。刷卡时电路板拿到银行卡信息,再通过A\D模块转换成音频传输给手机。当然手机APP应用里在信号出入的时候,也需要做相应的A\D编解码工作,这个也是手机APP里最重要的工作。

    3.       刷卡支付流程

     

                                                                   手机与拉卡拉音频通讯示意图

    手机与拉卡拉的音频通讯大概结构见上图,大概的流程是:

    3.1    先在手机上打开拉卡拉的应用。点击刷卡。

    3.2    手机应用会调用android api的AudioTrack,通过L和R线路给拉卡拉手机刷卡设备发送一段通知信号(L和R表达的信息是一样的,只是波形是反相的,L的高电平对应于R的低电平,还没搞清楚拉卡拉为什么这么设计)。

    3.3    芯片上的通讯模块拿到音频信号,解码后发现是刷卡通知,就等待刷卡层传来刷卡信息。

    3.4    在刷卡槽刷卡后,卡的信息传递给芯片。

    3.5    芯片拿到卡的信息,编码成音频信号,同M线路发送给手机。

    3.6    手机APP通过AudioRecord对音频信号进行采样,拿到数字信号。

    3.7    手机APP程序通过对数据信号进行解码,拿到实际的数据信息,即卡的信息。

    3.8    如果刷卡失败,则手机APP拿到的是一段失败提示信息。

    3.9    至此手机与刷卡器的通讯完成,手机APP再使用此卡的信息与拉卡拉的服务器端后台通讯,处理后续支付操作。

    其中的技术关键点是(细节本文暂不讨论):

    a)        传输上使用什么样的调制方式,采用什么样的波特率、频率。

    b)        通讯上如何制定合适的协议,包括如何判断信号开始、如何握手建立连接。

    c)        编码上如何编码表示数据,如何校验和纠错,如何滤波和解码数据。

    4.       相关的一些技术问题

    4.1    A/D转换的问题

    耳机线传输一般是1250HZ~9600HZ之间的交流音频信号。信号的调制解调有3种方式,调幅(AM)、调频(FM)和调相(PM)三种。根据对拉卡拉的输入输出信号的分析,我们发现拉卡拉使用的是调幅方式,频率为9600HZ和4800HZ的音频信号。

    4.2    耳机接口标准的问题

    两种标准见2.2中所描述的。

    4.3    不同android手机的问题

    a)        我们发现,在个别手机上,接收到的音频波形跟其他手机相比,是反相的。即高电平的波峰变成了低电平的波谷。这个问题可以在解码的时候,根据特定的前导码来判断。

    b)        手机Mic采样到的音频信号电平可能会不一样。例如同一段音频信号,使用A手机AudioRecord采样出来,波峰的值大概是32000;另外找一个手机可能是3200,根据我们的多种不同手机测试,发现可以相差10倍。处理方法是,可以额外的进行一次处理,先归一化;或者是滤波的时候,动态的根据峰值来调整阈值。

    c)        有些手机的Mic不认非标准的采样率。比如三星的I9308,如果使用9600*4的采样率初始化AudioRecord,就会报错;改成44100就没有问题。

    4.4    数据传输的效率

    每次通讯报文在100字节左右(50个汉字左右)(见参考资料1)。因此,拉卡拉的传输效率看来不是问题。

    4.5    数据传输的准确性

    拉卡拉用了一个取巧的方式。其先发送一段9600HZ的音频信号,紧接着再发送一段表示同样数据的4800HZ的音频信号。如果手机能处理高频率的信号,后面的低频率信号就可以用来校验前面的数据。如果前面的处理有问题,直接从后面拿低频率的信号来处理也一样可以保证拿到完整的数据。当然,我们还可以在数据本身叫上校验和纠错。

    4.6    数据的安全性

    官方说“拉卡拉手机刷卡器内置有安全芯片,每一台刷卡器对应有唯一的银行卡磁条信息保护密钥。使用专用安全算法,保证一机一密,一次一密。用户的个人密码,采用RSA非对称加密方法进行加密”。(见参考资料1)

    但是根据我们观察,貌似拉卡拉的电路板上并没有特殊的安全相关模块。整个体系也没有使用CA证书做相关的电子签名和身份认证。所以,其安全性还有待研究。

    5.       更多的可能性

    拉卡拉的使用场景还是太简单了。其基本上仅仅使用了一个刷卡后的信号通过音频MIC线路传输给手机APP的功能。传输的数据也很简单。其实相当于将数据从电路板发送到手机APP,通过L/R将数据从手机发送到电路板要更简单、更高效,这一块拉卡拉几乎没怎么用上。我们可以在这个系统结构上做更多双向的数据通讯,把一些安全性要求更高的操作放到硬件上来完成,从而实现更高的安全保障,提供更多的功能,适用更多的应用场景。

     

    6.       2012年手机刷卡器的一些数据

    最后贴一下2012年手机刷卡器的市场交易规模和手机APP下载数据。

     

    7.       参考资料

    1)        http://m.lakala.com/answer.html

    2)        http://m.lakala.com/adapt.html

    3)        http://blog.csdn.net/xl19862005/article/details/8522869

    4)        http://www.9mcu.com/9mcubbs/forum.php?mod=viewthread&tid=956073

    5)        http://it.21cn.com/prnews/a/2013/0320/00/20729935.shtml


  • 相关阅读:
    卡特兰数
    hdu 1023 Train Problem II
    hdu 1022 Train Problem
    hdu 1021 Fibonacci Again 找规律
    java大数模板
    gcd
    object dection资源
    Rich feature hierarchies for accurate object detection and semantic segmentation(RCNN)
    softmax sigmoid
    凸优化
  • 原文地址:https://www.cnblogs.com/techstone/p/3321290.html
Copyright © 2011-2022 走看看