PDU结构分析在手机短信检验鉴定中的应用

2014-10-26 05:51胡颖
中国司法鉴定 2014年4期
关键词:字节号码数据包

胡颖

(湖南省公安厅物证鉴定中心 电子物证实验室,湖南 长沙410001)

1 引言

目前,GSM(Global System for Mobile communication,全球移动通信系统)手机发送和接收短信息时经常采用三种模式:Block模式、Text模式和PDU模式(Protocol Data Unit,即协议数据单元)。Block模式现在基本很少使用;Text模式十分简单,实现起来也十分容易,但是不能收发中文信息,经常在发送英文或者数字短信息时使用;PDU模式较前两者复杂,可以同时支持中文短信息和英文短信息,因此其被国内手机默认作为收发短信息的编码方式。

2 PDU结构分析[1]

PDU模式收发短信息时,可以使用7-bit、8-bit和UCS2三种编码格式。其中,7-bit编码主要用于发送普通的ASCII字符,最大长度为160个字符;8-bit编码主要用于发送数据信息,如图片和铃声等,最大长度为140个字符;UCS2编码则用于发送Unicode字符,最大长度为70个字符。

2.1 发送数据包结构

我们首先介绍发送格式,PDU模式下发送数据包一般是由13部分组成,具体结构见表1。

表1 PDU模式发送数据结构

(1)短信息服务中心地址长度L:其等于短信息服务中心地址格式(TON/NPI)的长度加上短信息服务中心地址的长度。

(2)短信息服务中心地址格式(TON/NPI):是以位图形式表示,一般将Bit7至Bit0分为3个部分(见表2)。 最高位 Bit7始终置 1,Bit6至Bit4(共3位)则用于表示号码类型,Bit3至Bit0(共4位)则用于表示号码鉴别,号码类型和号码鉴别位图表(见表3~4)。

表2 短信息服务中心地址格式位图表

(3)目标地址数字个数M:指的是目标地址(TPDA)以十进制表示时的长度,即目标地址的数字个数,不包括目标地址格式(TON/NPI)。不管是短信息服务中心地址,还是目标地址,都是采用字节内反转,即当号码位数是奇数时,会自动补‘F’凑成偶数再发送。比如电话号码为8613907312345,转换后的格式为“68 31 09 37 21 43 F5”。

(4)基本参数(TP-MTI/VFP):以位图形式表示,共分为6部分(见表5)。

①应答路径,TP-Reply-Path,置0表示不设置应答路径;置1表示设置。

②用户数据头标识,TP-User-Data-Header-Indicator,置0表示不包含任何用户数据头信息;置1表示包含头信息。这个标识一般在增强消息业务中需要设置,图片铃声包含有头部信息,文本则不包含头部信息。

③状态报告要求,TP-Status-Report-Request,置0表示需要报告;置1表示不需要报告。

④有效期格式,TP-Validity-Period-Format,置00时表示TP-VP项无效;置10时表示TP-VP项有效,整型;置01时表示预留;置11时表示TP-VP项有效,半字节反转格式(Semi-Octet Represented)。

表3 号码类型位图表

表4 号码鉴别位图表

表5 基本参数位图表

⑤拒绝复制,TP-Reject-Duplicates,置0时表示接受复制;置1时表示拒绝复制。

⑥信息类型提示,TP-Message-Type-Indicator,置00 时表示读取(Deliver);置 01 时表示发送(Submit)。

(5)消息基准值(TP-MR):表示当前短消息重复发送的次数,置00时表示让电话自己设置消息基准值。

(6)协议标识(TP-PID)[2]:位图形式表示,分为 3部分。Bit7和Bit6默认置00,具体参见GSM 03.40协议标识完全定义;置11时表示为服务中心特殊用途分配。Bit5置0时表示不使用远程网络,只是短消息设备之间的协议;置1时表示使用远程网络。Bit4至Bit0表示协议种类,详细信息见表6。

表6 协议种类位图表

(7)数据编码方案(TP-DCS)[3]:位图形式表示,分为5部分。Bit7和Bit6一般默认设置为00。Bit5置0时表示文本未压缩;置1时表示文本用GSM标准压缩算法压缩。Bit4置0表示Bit0为保留位,不含信息类型信息;置1表示Bit1和Bit0含有信息类型信息。Bit3和Bit2置00时表示7-bit编码;置01时表示8-bit编码;置10时表示USC2编码;置11时表示保留。Bit1和Bit0置00时表示Class0;置01时表示Class1,默认ME特定;置10时表示Class2,SIM卡特定信息;置11时表示Class3,默认TE特定,详情参见GSM 03.38。

(8)有效期(TP-VP):用来表示短信有效时间,由前面的TP-VPF来决定。当TP-VPF为0x10时,表示相对当前的时间,参数表见表7;当TP-VPF为0x11时,表示为绝对时间,即时间戳(TP-SCTS),用 7个Byte表示年月日时分秒时区信息,每个Byte采用高位和低位反转的方式存储,即Semi-Octet Represented,比如,“2013年01月23日04时05分06秒08时区”则编码为“31 10 32 40 50 60 23”。注意,时区00表示GMT+0,增加间隔为15min,字节反转前的第1位为符号位,置 0表示“+”,置1表示“-”,所以 GMT+8 为“32”,反转后为“23”。

表7 TP-VP相对时间参数表

2.2 接收数据包结构

在PDU模式下接收短信息时,其数据包结构与发送相类似,主要区别是数据包中不包含消息基准值(TP-MR)和有效期(TP-VR),增加了7个字节的时间戳(TP-SCTS)(见表8)。 TP-SCTS结构在前面 TP-VR中已有介绍。

表8 PDU模式接收数据结构

3 案例应用

2013年,某市发生一起凶杀案,几部涉案的手机被送检,其中一部山寨手机通过手机检验分析系统镜像后,系统无法自动解析其镜像文件。现需对该镜像文件进行手工分析,对其存储的短信息进行查找和恢复。

3.1 方法

(1)首先使用Cellebrite手机检验分析系统对检材进行物理镜像,得到检材的BIN镜像文件。

(2)然后对BIN镜像文件进行十六进制关键字搜索。由于中国的区号为“86”,在短信息服务中心地址和目标地址前面都会加“86”,并且短信息服务中心地址格式一般采用国际号码格式,即TON/NPI为“91”,转换成PDU格式为“91 68”,这就是我们要搜索的十六进制。

(3)最后对每条搜索中的记录,按照PDU模式的数据包结构进行筛选和手工分析,即可得到检材中的所有短信息内容。

3.2 分析

下面以其中一条搜索记录为例进行分析,该记录位于镜像文件偏移016CE5D1处(见图1)。

从图1中可以发现,PDU数据包为 “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个字节。

图1 PDU数据包

其中,“08”表示短信息服务中心地址长度为8个字节,即“91 68 31 08 90 17 05 F0”。 “91”表示短信息服务中心地址格式,二进制为“1001 0001”,即国际电话号码格式。“68 31 08 90 17 05 F0”表示短信息服务中心地址,高低位反转即“8613800971500F”,“F”为补充位。 “24”表示基本参数,二进制为“0010 0100”(见表 9)。

表9 基本参数详情表

“0D”表示回复地址数字个数,即回复号码为13位数字。“91”表示回复地址格式,二进制为“1001 0001”,即国际电话号码格式。

“68 81 99 37 86 13 F6”表示回复地址,高低位反转转换后,即发送方号码为“8618997368316F”,“F”为补充位。 “00”表示协议标识,二进制为“0000 0000”,详细参数(见表10)。

表10 协议标识参数表

“08”表示用户数据编码方案,二进制为“0000 1000”,详细参数(见表 11)。

表11 数据编码方案参数表

“31 50 13 81 80 33 23”表示时间戳,半字节反转得到“13 05 31 18 08 33 32”,即“2013年05月31日18时08分33秒”,“32”表示32/4=8h,“32”的二进制为“00110010”,Bit7=0,属于“+”,所以32表示时区GMT+8。

“22”表示用户数据长度为34个字节,“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”则表示用户数据,采用USC2编码,即17个Unicode字符:“希望你说的懂是真的[空格][空格]我做饭了[空格][空格]”,详情参见Unicode转换表,这里不再赘述。

4 结论

通过对PDU模式的结构分析,本案成功恢复出检材中的所有短信息,包括删除未覆盖的短信息内容,可见这种检验分析的思路和方法在手机检验鉴定中是可行的,并且只需要普通的十六进制编辑软件就可以做到,技巧很容易掌握,实用性很强。另外,当我们需要快速检出某个手机号码或者某个时间内的短信息,则可以根据上述编码方式,更改十六进制关键字搜索,比如需要检出手机号码为“13973123456”的短信息,那我们将十六进制关键字更改为“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 协议 03.40[EB/OL].(1995-12-23)[2014-01-15].http://download.csdn.net/detail/zhjweizhjwei/2309514.

[3]ETSI.GSM 协议 03.38[EB/OL].(1994-09-05)[2014-01-11].http://download.csdn.net/download/samlei/1619647.

猜你喜欢
字节号码数据包
二维隐蔽时间信道构建的研究*
No.8 字节跳动将推出独立出口电商APP
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
说号码 知颜色
一个号码,一个故事
猜出新号码
No.10 “字节跳动手机”要来了?
C#串口高效可靠的接收方案设计
轻量级分组密码Midori64的积分攻击
这个号码很吉祥