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


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

     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


  • 相关阅读:
    电脑页面放到手机显示时,遇到了一个奇怪的问题:字体的显示大小,与在CSS中指定的大小不一致
    Win 7 安装VMware Workstation Pro 14出现 “Intel VT-x禁用”问题以及“无法连接 MKS: 套接字连接尝试次数太多;正在放弃”问题的实质性解决
    linux下文件权限777了,file_put_contents()却不能写入,为什么?
    Linux常用命令版本CentOS7.x
    sqlserver阻塞
    深入理解sqlserver日志-01
    CentOS添加和删除用户
    root修改sudoers文件
    linux常用命令-持续更新
    CentOS虚拟机设置IP
  • 原文地址:https://www.cnblogs.com/techstone/p/3321290.html
Copyright © 2020-2023  润新知