前一段时间看了一点点的3GPP short message 的相关协议, 尝试着自己手动解析了抓取的pdu数据, 觉得挺好玩, 当然, 现在网络上已经有很多很好的解析工具(Pduspy等), 但这里主要是结合一些协议的东东。参考的协议 3GPPTS 23.040.
抓取的Gsm网络下接收短信的pdu包, 具体数据如下:
0891683110104105f0240d91688108014216f400001101912120342307d47c3d9d7ebf01
参考协议里定义:
解析结果如下:
SCA = 08 91 68 3110104105f0 “+86 13010114500” 短信中心号码
PDUType = 24 二进制:0010 0100 “deliver”
OA = 0d 91 688108014216f4 “+8618801024614” 发送端地址
PID = 00 短信中心以何种方式处理SM
DCS = 00 UD采用的编码方式 “7 bit”
SCTS = 11019121203423 短信中心时间戳
UDL = 07 用户数据段长度
UD = d47c3d9d7ebf01 “Tyuiioo” 用户数据(短信内容)
其中,
PDUType 的组成如下:(1个字节, 8位)
每个参数的意义:(参考协议翻译的)
RP
:ReplyPath,
应答路径, 0–
未设置;1–
设置
UDHI:UserData
Header Indicator,
用户数据头标识
0–
用户数据(UD)部分不包含头信息;
1– 用户数据(UD)开始部分包含用户头信息;
SRI:StatusReport Indication,
状态报告指示,该值仅被短消息服务中心(SMSC)设置
0–
状态报告将不会返回给短消息实体(SME)
1– 状态报告将返回给短消息实体(SME)
MMS:MoreMessages to Send,是否有更多信息需要发送,
该值仅被SMSC设置
0–
在SMSC中有更多的信息等待MS
1– 在SMSC中没有更多的信息等待MS
MTI:MessageType Indicator, 信息类型指示
00– SMS-DELIVER (接收)
01– SMS-SUBMIT (发送)