盧思佳,王金銘
(中國人民公安大學,北京 102623)
近場通信(Near Field Communication,NFC)技術是由非接觸式射頻識別RFID(Radio Frequency Identification)技術連同互聯互通技術整合演變而來,可以在較短的距離范圍內與兼容設備實現相互的識別以及數據的交換[1]。該方法如今已經成功演變成為短距離無線通信技術,發展十分迅速[2]。本文基于NFC相關技術,以手機“北京市政交通一卡通”即手機NFC交通卡為例,研究其數據存儲位置、提取方法以及對數據的分析,并實現最終獲得手機NFC交通卡內近10次乘坐記錄的上下車位置、消費、時間、交通卡號等信息,為公安工作提供偵查線索。
將NFC芯片內置于手機中可實現支付和信息讀取等功能。其硬件結構有NFC控制器、基帶處理器、安全模塊三部分[3]。NFC控制器主要負責調配信號,切換手動與自動模式?;鶐幚砥魇腔A模塊,提供應用程序的聯系通路,具有NFC功能手機要求其基帶處理器能夠提供API,該API訪問NFC控制器。
根據NFC硬件結構及相關技術支持,手機NFC支持讀卡器模式、仿真卡模式、點對點通信3種模式。讀卡器模式是通過支持NFC的手機從帶有NFC芯片的媒介中讀寫信息,并遵行智能卡的標準 ISO/IEC 14443 Type A、 Type B 和 Felica[4]。仿真卡模式,是將NFC手機等電子設備當成公交卡、門禁卡等IC卡使用。點對點通信模式用于NFC的手機設備可以和同樣具有該功能的其他設備建立起近距離通信鏈路,進行數據交換和信息互換等功能。
使用手機NFC交通卡乘坐公交、地鐵是近場支付的主要應用,移動終端系統、受理終端系統和支付平臺系統是近場支付過程中主要涉及的三部分,在支付時移動終端系統和受理系統交互完成近場通信,受理和支付平臺系統實現聯網通信。同時,分別將移動終端系統和受理終端系統的通信稱為通信前端,將受理和支付系統之間的通信稱為通信后端。
為探索NFC交通卡數據提取方法,首先要了解手機NFC功能的開啟方式,選取市面主流品牌小米、三星、華為3種手機進行分析研究,經實驗發現華為、小米可在不解鎖情況下直接打開,而三星在點擊NFC標識后提示需解鎖手機后才能開啟NFC功能。
根據對數據提取的進一步探究,我們發現僅開啟NFC功能時,手機只處于被讀設備模式,打開軟件Nfcard后,讀卡手機調整為識讀設備,最后將卡貼取已解鎖的檢材手機,觀察數據提取情況。實驗發現Nfcard軟件可以讀取檢材設備內NFC交通卡內信息,包括手機市政交通卡卡號、版本、生效日期、交易、余額以及10條交易記錄明細。
綜上,利用電子設備讀卡模式可以讀取到另一臺被讀設備的NFC交通卡信息,且實驗發現如若在實際案件中所獲檢材手機品牌為華為或小米,可在未解鎖狀態下開啟NFC功能,如若是三星手機則需解鎖后可開啟NFC功能,如若檢材設備已開啟NFC功能,那么在未解鎖狀態下也可完成對檢材設備的數據提取。因手機NFC功能開啟后耗電量非常小,所以許多人在日常生活中都是保持手機NFC功能的開啟狀態,這類習慣性行為提供了便利的偵查條件。
目前市面上發行許多讀取NFC交通卡的軟件,但各軟件讀取信息不盡相同,為此對常用的四款軟件進行分析:小米錢包、Nfcard、北京一卡通、E卡貼軟件。在小米3手機上安裝軟件并讀取數據。
分析不同軟件讀取情況后發現手機NFC交通卡所包含的基本信息至少有交通卡類型、交通卡卡號、交通卡余額、交通卡有效期、10條交易記錄,及其對應的消費金額、日期(精確到秒)。然而上述信息不能準確反映上下車的具體位置,不能滿足偵查過程的需要,為此,還需對卡內的原始數據進行探索。
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卡原始數據中只包含消費信息;而不同卡有上下車的信息,說明上下車信息取決于交通卡種類。
為解析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位編碼包含出行方式、出行線路及刷卡機編號等規律,為偵查工作的進一步開展提供行動指南。
原始編碼中只有 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數據庫中該編碼為高米店南,與出站口相符,該編碼代表出站口;且均對應卡內最后一條消費記錄。說明最后乘坐地鐵會遺留包含進出站時間、站口等信息。
本文研究的手機NFC交通卡刷卡記錄的提取方法與數據分析是國內還未探索的一個全新領域,通過一系列研究開發了能夠讀取原始數據的“WJM”軟件,解析了12位未知編碼并獲取并分析出最后一次乘車的時間、地點等信息,為公安偵查提供指南。
首先,手機NFC交通卡內包含交通卡卡號、交通卡類型、版本、交通卡余額、最近充值、有效期、近10條交易記錄、及其對應的消費金額、時間等信息。同時,NFC卡原始數據只包含消費信息,上下車信息取決于交通卡種類。此外,用Nfcard軟件得到的12位編碼包含乘坐方式、乘坐線路及刷卡機編號等信息,且該編號具有一定規律。最后,根據NFC使用規范,發送相應指令可以獲取最后一次乘車記錄,包含進出站時間、地點等信息,根據上述信息描繪犯罪嫌疑人作案線路,根據線路縮小偵查范圍,推斷犯罪嫌疑人刷卡站點,鎖定犯罪的具體位置。
上述信息的獲取在實際偵查過程中可遇而不可求,在得知犯罪嫌疑人的刷卡地點和刷卡時間后,我們可以通過刷卡地點的監控視頻快速鎖定犯罪嫌疑人,大大提升案件偵破的效率。