胡穎
(湖南省公安廳物證鑒定中心 電子物證實(shí)驗(yàn)室,湖南 長沙410001)
目前,GSM(Global System for Mobile communication,全球移動通信系統(tǒng))手機(jī)發(fā)送和接收短信息時經(jīng)常采用三種模式:Block模式、Text模式和PDU模式(Protocol Data Unit,即協(xié)議數(shù)據(jù)單元)。Block模式現(xiàn)在基本很少使用;Text模式十分簡單,實(shí)現(xiàn)起來也十分容易,但是不能收發(fā)中文信息,經(jīng)常在發(fā)送英文或者數(shù)字短信息時使用;PDU模式較前兩者復(fù)雜,可以同時支持中文短信息和英文短信息,因此其被國內(nèi)手機(jī)默認(rèn)作為收發(fā)短信息的編碼方式。
PDU模式收發(fā)短信息時,可以使用7-bit、8-bit和UCS2三種編碼格式。其中,7-bit編碼主要用于發(fā)送普通的ASCII字符,最大長度為160個字符;8-bit編碼主要用于發(fā)送數(shù)據(jù)信息,如圖片和鈴聲等,最大長度為140個字符;UCS2編碼則用于發(fā)送Unicode字符,最大長度為70個字符。
我們首先介紹發(fā)送格式,PDU模式下發(fā)送數(shù)據(jù)包一般是由13部分組成,具體結(jié)構(gòu)見表1。
表1 PDU模式發(fā)送數(shù)據(jù)結(jié)構(gòu)
(1)短信息服務(wù)中心地址長度L:其等于短信息服務(wù)中心地址格式(TON/NPI)的長度加上短信息服務(wù)中心地址的長度。
(2)短信息服務(wù)中心地址格式(TON/NPI):是以位圖形式表示,一般將Bit7至Bit0分為3個部分(見表2)。 最高位 Bit7始終置 1,Bit6至Bit4(共3位)則用于表示號碼類型,Bit3至Bit0(共4位)則用于表示號碼鑒別,號碼類型和號碼鑒別位圖表(見表3~4)。
表2 短信息服務(wù)中心地址格式位圖表
(3)目標(biāo)地址數(shù)字個數(shù)M:指的是目標(biāo)地址(TPDA)以十進(jìn)制表示時的長度,即目標(biāo)地址的數(shù)字個數(shù),不包括目標(biāo)地址格式(TON/NPI)。不管是短信息服務(wù)中心地址,還是目標(biāo)地址,都是采用字節(jié)內(nèi)反轉(zhuǎn),即當(dāng)號碼位數(shù)是奇數(shù)時,會自動補(bǔ)‘F’湊成偶數(shù)再發(fā)送。比如電話號碼為8613907312345,轉(zhuǎn)換后的格式為“68 31 09 37 21 43 F5”。
(4)基本參數(shù)(TP-MTI/VFP):以位圖形式表示,共分為6部分(見表5)。
①應(yīng)答路徑,TP-Reply-Path,置0表示不設(shè)置應(yīng)答路徑;置1表示設(shè)置。
②用戶數(shù)據(jù)頭標(biāo)識,TP-User-Data-Header-Indicator,置0表示不包含任何用戶數(shù)據(jù)頭信息;置1表示包含頭信息。這個標(biāo)識一般在增強(qiáng)消息業(yè)務(wù)中需要設(shè)置,圖片鈴聲包含有頭部信息,文本則不包含頭部信息。
③狀態(tài)報告要求,TP-Status-Report-Request,置0表示需要報告;置1表示不需要報告。
④有效期格式,TP-Validity-Period-Format,置00時表示TP-VP項(xiàng)無效;置10時表示TP-VP項(xiàng)有效,整型;置01時表示預(yù)留;置11時表示TP-VP項(xiàng)有效,半字節(jié)反轉(zhuǎn)格式(Semi-Octet Represented)。
表3 號碼類型位圖表
表4 號碼鑒別位圖表
表5 基本參數(shù)位圖表
⑤拒絕復(fù)制,TP-Reject-Duplicates,置0時表示接受復(fù)制;置1時表示拒絕復(fù)制。
⑥信息類型提示,TP-Message-Type-Indicator,置00 時表示讀取(Deliver);置 01 時表示發(fā)送(Submit)。
(5)消息基準(zhǔn)值(TP-MR):表示當(dāng)前短消息重復(fù)發(fā)送的次數(shù),置00時表示讓電話自己設(shè)置消息基準(zhǔn)值。
(6)協(xié)議標(biāo)識(TP-PID)[2]:位圖形式表示,分為 3部分。Bit7和Bit6默認(rèn)置00,具體參見GSM 03.40協(xié)議標(biāo)識完全定義;置11時表示為服務(wù)中心特殊用途分配。Bit5置0時表示不使用遠(yuǎn)程網(wǎng)絡(luò),只是短消息設(shè)備之間的協(xié)議;置1時表示使用遠(yuǎn)程網(wǎng)絡(luò)。Bit4至Bit0表示協(xié)議種類,詳細(xì)信息見表6。
表6 協(xié)議種類位圖表
(7)數(shù)據(jù)編碼方案(TP-DCS)[3]:位圖形式表示,分為5部分。Bit7和Bit6一般默認(rèn)設(shè)置為00。Bit5置0時表示文本未壓縮;置1時表示文本用GSM標(biāo)準(zhǔn)壓縮算法壓縮。Bit4置0表示Bit0為保留位,不含信息類型信息;置1表示Bit1和Bit0含有信息類型信息。Bit3和Bit2置00時表示7-bit編碼;置01時表示8-bit編碼;置10時表示USC2編碼;置11時表示保留。Bit1和Bit0置00時表示Class0;置01時表示Class1,默認(rèn)ME特定;置10時表示Class2,SIM卡特定信息;置11時表示Class3,默認(rèn)TE特定,詳情參見GSM 03.38。
(8)有效期(TP-VP):用來表示短信有效時間,由前面的TP-VPF來決定。當(dāng)TP-VPF為0x10時,表示相對當(dāng)前的時間,參數(shù)表見表7;當(dāng)TP-VPF為0x11時,表示為絕對時間,即時間戳(TP-SCTS),用 7個Byte表示年月日時分秒時區(qū)信息,每個Byte采用高位和低位反轉(zhuǎn)的方式存儲,即Semi-Octet Represented,比如,“2013年01月23日04時05分06秒08時區(qū)”則編碼為“31 10 32 40 50 60 23”。注意,時區(qū)00表示GMT+0,增加間隔為15min,字節(jié)反轉(zhuǎn)前的第1位為符號位,置 0表示“+”,置1表示“-”,所以 GMT+8 為“32”,反轉(zhuǎn)后為“23”。
表7 TP-VP相對時間參數(shù)表
在PDU模式下接收短信息時,其數(shù)據(jù)包結(jié)構(gòu)與發(fā)送相類似,主要區(qū)別是數(shù)據(jù)包中不包含消息基準(zhǔn)值(TP-MR)和有效期(TP-VR),增加了7個字節(jié)的時間戳(TP-SCTS)(見表8)。 TP-SCTS結(jié)構(gòu)在前面 TP-VR中已有介紹。
表8 PDU模式接收數(shù)據(jù)結(jié)構(gòu)
2013年,某市發(fā)生一起兇殺案,幾部涉案的手機(jī)被送檢,其中一部山寨手機(jī)通過手機(jī)檢驗(yàn)分析系統(tǒng)鏡像后,系統(tǒng)無法自動解析其鏡像文件?,F(xiàn)需對該鏡像文件進(jìn)行手工分析,對其存儲的短信息進(jìn)行查找和恢復(fù)。
(1)首先使用Cellebrite手機(jī)檢驗(yàn)分析系統(tǒng)對檢材進(jìn)行物理鏡像,得到檢材的BIN鏡像文件。
(2)然后對BIN鏡像文件進(jìn)行十六進(jìn)制關(guān)鍵字搜索。由于中國的區(qū)號為“86”,在短信息服務(wù)中心地址和目標(biāo)地址前面都會加“86”,并且短信息服務(wù)中心地址格式一般采用國際號碼格式,即TON/NPI為“91”,轉(zhuǎn)換成PDU格式為“91 68”,這就是我們要搜索的十六進(jìn)制。
(3)最后對每條搜索中的記錄,按照PDU模式的數(shù)據(jù)包結(jié)構(gòu)進(jìn)行篩選和手工分析,即可得到檢材中的所有短信息內(nèi)容。
下面以其中一條搜索記錄為例進(jìn)行分析,該記錄位于鏡像文件偏移016CE5D1處(見圖1)。
從圖1中可以發(fā)現(xiàn),PDU數(shù)據(jù)包為 “08 91 68 31 08 90 17 05 F0 24 0D 91 68 81 99 37 86 13 F6 00 08 31 50 13 81 80 33 23 22 5E 0C 67 1B 4F 60 8B F4 76 84 61 C2 66 2F 77 1F 76 84 00 20 00 20 62 11 50 5A 99 6D 4E 86 00 20 00 20”,長度為63個字節(jié)。
圖1 PDU數(shù)據(jù)包
其中,“08”表示短信息服務(wù)中心地址長度為8個字節(jié),即“91 68 31 08 90 17 05 F0”。 “91”表示短信息服務(wù)中心地址格式,二進(jìn)制為“1001 0001”,即國際電話號碼格式?!?8 31 08 90 17 05 F0”表示短信息服務(wù)中心地址,高低位反轉(zhuǎn)即“8613800971500F”,“F”為補(bǔ)充位。 “24”表示基本參數(shù),二進(jìn)制為“0010 0100”(見表 9)。
表9 基本參數(shù)詳情表
“0D”表示回復(fù)地址數(shù)字個數(shù),即回復(fù)號碼為13位數(shù)字?!?1”表示回復(fù)地址格式,二進(jìn)制為“1001 0001”,即國際電話號碼格式。
“68 81 99 37 86 13 F6”表示回復(fù)地址,高低位反轉(zhuǎn)轉(zhuǎn)換后,即發(fā)送方號碼為“8618997368316F”,“F”為補(bǔ)充位。 “00”表示協(xié)議標(biāo)識,二進(jìn)制為“0000 0000”,詳細(xì)參數(shù)(見表10)。
表10 協(xié)議標(biāo)識參數(shù)表
“08”表示用戶數(shù)據(jù)編碼方案,二進(jìn)制為“0000 1000”,詳細(xì)參數(shù)(見表 11)。
表11 數(shù)據(jù)編碼方案參數(shù)表
“31 50 13 81 80 33 23”表示時間戳,半字節(jié)反轉(zhuǎn)得到“13 05 31 18 08 33 32”,即“2013年05月31日18時08分33秒”,“32”表示32/4=8h,“32”的二進(jìn)制為“00110010”,Bit7=0,屬于“+”,所以32表示時區(qū)GMT+8。
“22”表示用戶數(shù)據(jù)長度為34個字節(jié),“5E 0C 67 1B 4F 60 8B F4 76 84 61 C2 66 2F 77 1F 76 84 00 20 00 20 62 11 50 5A 99 6D 4E 86 00 20 00 20”則表示用戶數(shù)據(jù),采用USC2編碼,即17個Unicode字符:“希望你說的懂是真的[空格][空格]我做飯了[空格][空格]”,詳情參見Unicode轉(zhuǎn)換表,這里不再贅述。
通過對PDU模式的結(jié)構(gòu)分析,本案成功恢復(fù)出檢材中的所有短信息,包括刪除未覆蓋的短信息內(nèi)容,可見這種檢驗(yàn)分析的思路和方法在手機(jī)檢驗(yàn)鑒定中是可行的,并且只需要普通的十六進(jìn)制編輯軟件就可以做到,技巧很容易掌握,實(shí)用性很強(qiáng)。另外,當(dāng)我們需要快速檢出某個手機(jī)號碼或者某個時間內(nèi)的短信息,則可以根據(jù)上述編碼方式,更改十六進(jìn)制關(guān)鍵字搜索,比如需要檢出手機(jī)號碼為“13973123456”的短信息,那我們將十六進(jìn)制關(guān)鍵字更改為“91 68 31 79 13 32 54 F6”,便可以篩選出所有“13973123456”號碼的短信息,簡單快捷。
[1]PDU 編碼 [EB/OL].(2011-12-29)[2014-01-15].http://blog.csdn.net/linux_xiaomugua/article/details/7085374.
[2]ETSI.GSM 協(xié)議 03.40[EB/OL].(1995-12-23)[2014-01-15].http://download.csdn.net/detail/zhjweizhjwei/2309514.
[3]ETSI.GSM 協(xié)議 03.38[EB/OL].(1994-09-05)[2014-01-11].http://download.csdn.net/download/samlei/1619647.