APP下载

手机NFC交通卡刷卡记录提取方法与数据分析*

2019-10-09卢思佳王金铭

通信技术 2019年9期
关键词:原始数据刷卡编码

卢思佳,王金铭

(中国人民公安大学,北京 102623)

0 引 言

近场通信(Near Field Communication,NFC)技术是由非接触式射频识别RFID(Radio Frequency Identification)技术连同互联互通技术整合演变而来,可以在较短的距离范围内与兼容设备实现相互的识别以及数据的交换[1]。该方法如今已经成功演变成为短距离无线通信技术,发展十分迅速[2]。本文基于NFC相关技术,以手机“北京市政交通一卡通”即手机NFC交通卡为例,研究其数据存储位置、提取方法以及对数据的分析,并实现最终获得手机NFC交通卡内近10次乘坐记录的上下车位置、消费、时间、交通卡号等信息,为公安工作提供侦查线索。

1 手机NFC技术简介

1.1 手机NFC技术支持

将NFC芯片内置于手机中可实现支付和信息读取等功能。其硬件结构有NFC控制器、基带处理器、安全模块三部分[3]。NFC控制器主要负责调配信号,切换手动与自动模式。基带处理器是基础模块,提供应用程序的联系通路,具有NFC功能手机要求其基带处理器能够提供API,该API访问NFC控制器。

根据NFC硬件结构及相关技术支持,手机NFC支持读卡器模式、仿真卡模式、点对点通信3种模式。读卡器模式是通过支持NFC的手机从带有NFC芯片的媒介中读写信息,并遵行智能卡的标准 ISO/IEC 14443 Type A、 Type B 和 Felica[4]。仿真卡模式,是将NFC手机等电子设备当成公交卡、门禁卡等IC卡使用。点对点通信模式用于NFC的手机设备可以和同样具有该功能的其他设备建立起近距离通信链路,进行数据交换和信息互换等功能。

1.2 NFC近场支付与数据存储概述

使用手机NFC交通卡乘坐公交、地铁是近场支付的主要应用,移动终端系统、受理终端系统和支付平台系统是近场支付过程中主要涉及的三部分,在支付时移动终端系统和受理系统交互完成近场通信,受理和支付平台系统实现联网通信。同时,分别将移动终端系统和受理终端系统的通信称为通信前端,将受理和支付系统之间的通信称为通信后端。

2 手机NFC数据的提取方法

为探索NFC交通卡数据提取方法,首先要了解手机NFC功能的开启方式,选取市面主流品牌小米、三星、华为3种手机进行分析研究,经实验发现华为、小米可在不解锁情况下直接打开,而三星在点击NFC标识后提示需解锁手机后才能开启NFC功能。

根据对数据提取的进一步探究,我们发现仅开启NFC功能时,手机只处于被读设备模式,打开软件Nfcard后,读卡手机调整为识读设备,最后将卡贴取已解锁的检材手机,观察数据提取情况。实验发现Nfcard软件可以读取检材设备内NFC交通卡内信息,包括手机市政交通卡卡号、版本、生效日期、交易、余额以及10条交易记录明细。

综上,利用电子设备读卡模式可以读取到另一台被读设备的NFC交通卡信息,且实验发现如若在实际案件中所获检材手机品牌为华为或小米,可在未解锁状态下开启NFC功能,如若是三星手机则需解锁后可开启NFC功能,如若检材设备已开启NFC功能,那么在未解锁状态下也可完成对检材设备的数据提取。因手机NFC功能开启后耗电量非常小,所以许多人在日常生活中都是保持手机NFC功能的开启状态,这类习惯性行为提供了便利的侦查条件。

3 手机NFC数据提取与分析

3.1 交通卡内包含的基本数据

目前市面上发行许多读取NFC交通卡的软件,但各软件读取信息不尽相同,为此对常用的四款软件进行分析:小米钱包、Nfcard、北京一卡通、E卡贴软件。在小米3手机上安装软件并读取数据。

分析不同软件读取情况后发现手机NFC交通卡所包含的基本信息至少有交通卡类型、交通卡卡号、交通卡余额、交通卡有效期、10条交易记录,及其对应的消费金额、日期(精确到秒)。然而上述信息不能准确反映上下车的具体位置,不能满足侦查过程的需要,为此,还需对卡内的原始数据进行探索。

3.2 NFC原始数据的提取与分析

Nfcard软件解析出数据,说明具有相应API即可读取NFC交通卡的原始数据,之后,继续解析。Androids studio软件提供了集成Android开发工具用于开发和调试,该软件具有debug功能,可供开发者对应用进行测试。为此,将Nfcard源代码导入到Androids studio软件中,尝试提取原始数据。

制作名为“WJM”的原始数据读取软件,“WJM”发送指令00A0 0000 02 3F01到卡中,返回:

INFO->1000751123917598010200300000000000 0002016082520191130000000000007D091560000140 00000000000000000000000000000009000

其中[1000751123917598]代表卡号,[010200]代表版本,[2016082520191130]代表卡生效日期。发送805C 00 02 04,返回数据BALANCE->000012C09000,[12C0]为十六进制转化为十进制为4 800,其代表余额。随后输入00B2 01 C4 00,00B2 02 C4 00,00B2 03 C4 00…00B2 0A C4 00,测试发现最多可以读取10条交易记录,大于10条就会返回记录未找到(6A83),交易记录与Nfcard软件解析后比较:

根据所得数据,结合Nfcard信息分析,发现黄色代表消费金额,具体为-1—064、-2—0c8、-3—12c、-4—190、-5—1f4、-6—258、-7—2bc、-8—320、-9—384、-10—3e8,浅蓝色为Nfcard软件中的12位未知编码,深蓝色为刷卡时间,精确到秒。

由此,Nfcard内显示的12位未知编码即为卡内原始数据,且该编码很可能涉及到乘车方式、站点等信息。此外,原始数据与Nfcard对应的消费记录显示的时间都对应为下车或出站的时间,说明NFC卡原始数据中只包含消费信息;而不同卡有上下车的信息,说明上下车信息取决于交通卡种类。

3.3 12位未知编码的解析

为解析Nfcard软件12位编码,以NFC手机市政交通一卡通为研究对象,利用小米 Mix 2手机进行乘车刷卡,分别在相邻车站反复乘坐并记录数据。

根据表1、2、3,a与b为同车不同站、同刷卡机刷卡,编码相同,说明此编码与公交站无关;b与c为同站不同车,编码不同,说明此编码与具体车辆有关;c与d为同车不同站、前后刷卡机分别刷卡,编码值相邻,说明此编码与刷卡机有关,且相邻刷卡机编号相邻;此外,e与g为同闸口出站,编码相同,f与h为相邻闸口出站,编码相邻。

表1 乘坐954路,均从前门刷卡

表2 乘坐954路,前入后出

表3 乘坐4号线地铁

分析得以下规律:位置编码data[1]代表出行方式,如3为地铁,0为公交;data[4:6]代表乘坐线路,如939代表乘坐大兴线;data[8:12]为刷卡机编号,如高米店南站两刷卡机编号为75、76,公交954某车上下车刷卡机编号为14385、14386。这12位编码包含出行方式、出行线路及刷卡机编号等规律,为侦查工作的进一步开展提供行动指南。

3.4 数据库的获取及分析

原始编码中只有 data[4:6]和 data[8:12]区域,能够显示站点。若知悉刷卡机编码范围,利用编码数据中的刷卡机编号即可定位具体站点。

SQliteStudio是一种数据管理工具,将所获数据库导入,发现包含线路、站点位置等信息,为满足侦查需要,对卡内的原始数据进行进一步探索。

数据库内有“subway fees” “subway lines”“subway stations”及“subway code”等信息。其中,Lineid代表地铁线路,如1号线(1)、2号线(2)等;Stationid代表站点,如1号线共23站,站点编号 SQL显示到23号;此外1、2号线交叉站点跟随1号线站编号;最后,Exit代表出站口信息。

根据《公共交通NFC技术规范》,发送指令80 123 0xB0 0x7b ,对返回的最后一行数据进行解析:

1904051936,5D15,018C,0A00,0020,0304,190 4052124,020D,02000000,00F4,0105,1904051936,5D15,1904058403,00000000000000009000

数据1904051936代表上车时间19年4月5日19点36分,5D15十进制为23 829,在SQliteStudio数据库中查询该编码为新宫站,代表进站口;190405212402代表下车时间为19年4月5日21点24分,020D十进制为525,数据库中查询该编码代表东四十条,代表出站口。

为确证分析继续实验,得到的原始数据:

1904071530,043D,0184,0300,00200306,1904071 556,5D1B0200,0000,00F4,0107,1904071530,043D,190 404,E803,00000000000000009000

比对实际乘坐过程, 1904071530与对应进站时间相符,该编码代表进站时间;043D十进制为1 085,在SQliteStudio数据库中查询该编码为北京南站,与进站口相符,该编码代表进站口。1904071556与对应出站时间相符,该编码代表出站时间,5D1B十进制为23 835,在SQliteStudio数据库中该编码为高米店南,与出站口相符,该编码代表出站口;且均对应卡内最后一条消费记录。说明最后乘坐地铁会遗留包含进出站时间、站口等信息。

4 结 语

本文研究的手机NFC交通卡刷卡记录的提取方法与数据分析是国内还未探索的一个全新领域,通过一系列研究开发了能够读取原始数据的“WJM”软件,解析了12位未知编码并获取并分析出最后一次乘车的时间、地点等信息,为公安侦查提供指南。

首先,手机NFC交通卡内包含交通卡卡号、交通卡类型、版本、交通卡余额、最近充值、有效期、近10条交易记录、及其对应的消费金额、时间等信息。同时,NFC卡原始数据只包含消费信息,上下车信息取决于交通卡种类。此外,用Nfcard软件得到的12位编码包含乘坐方式、乘坐线路及刷卡机编号等信息,且该编号具有一定规律。最后,根据NFC使用规范,发送相应指令可以获取最后一次乘车记录,包含进出站时间、地点等信息,根据上述信息描绘犯罪嫌疑人作案线路,根据线路缩小侦查范围,推断犯罪嫌疑人刷卡站点,锁定犯罪的具体位置。

上述信息的获取在实际侦查过程中可遇而不可求,在得知犯罪嫌疑人的刷卡地点和刷卡时间后,我们可以通过刷卡地点的监控视频快速锁定犯罪嫌疑人,大大提升案件侦破的效率。

猜你喜欢

原始数据刷卡编码
生活中的编码
受特定变化趋势限制的传感器数据处理方法研究
《全元诗》未编码疑难字考辨十五则
子带编码在图像压缩编码中的应用
Genome and healthcare
全新Mentor DRS360 平台借助集中式原始数据融合及直接实时传感技术实现5 级自动驾驶
对物理实验测量仪器读数的思考
刷卡
刷脸就可以购物
宅急送开始推行终端POS机刷卡结算