短信PDU编码解析

短信PDU编码解析

==============================================================

GS270-pdu短信解析过程分析
发送“中国”后上报如下:
+CMT: ,24
089168  3108705505F0   040D   9168 3136628397F2  0008  31809101427323    04   4E2D56FD
                 主机号码             ...        ...          目标号码       . ..        服务时间戳         长度     内容
       
       
08 SMSC 地址信息的长度共8 个八位字节(包括91)
91 SMSC 地址格式(TON/NPI) 用国际格式号码(在前面加‘+’)
68 31 08 10 00 05 F0 SMSC 地址8613800100500,补‘F’凑成偶数个

0D 目标地址数字个数共13 个十进制数
-------------------
00 :协议标识TP-PID:普通GSM,点到点方式
08 :编码方式TP-DCS:三种:00表示7-bit编码(英文)、04表示8-bit编码(图片和铃声)、08表示UCS2编码(汉字)
31809101427323:服务时间戳 13081901243732
04:长度
4E2D56FD:短信内容:“中国”===具体解码查看:Unicode中文编码表


 总结:1.f2后10个字节后是短信内容

            

==============================================================

一 概述

  问题:接收飞信或者配合终端发送的长短信(两三百个字)或者接收运营商发送的话费信息,长短信总是接收不完整。其中会有某些段有丢失。

原因分析:

1 手机接收到了,但是拼接错误

         这样的结果是多条接收不完整的信息,基本上是可以排除的

2 网络发送了,手机信号问题或者繁忙,碰巧处理不过来

         网络端会收不到反馈信息,网络端会再发一条。

3 发送方的信息没全部发送

         通过确认发送成功。

4 网络根本就只发送此短信的某一段

         无法得知,但此原因的概率最高。

 

  此环境中此问题出现:拔打10086查询话费通话过程中,通过辅助机连续发送了5条长短信和飞信连续发送多条到测试机,

通话结束后查看,有一条手机发的短信显示不完整。

  网络出现问题的概率较高,连续性不断发送,造成网络出现问题。

但是仍然要明确确定是不是手机上仅仅接收到此条短信的其中的某几段。通过测试log分析PDU编码。

 

二 短信PDU编码分析

1 PDU内容:

a0 00 02 00 10 00 00 00 - 19 01 ad 01 09 08 91 68

31 08 70 75 15 f0 00 a0 - 60 0d 91 68 31 62 98 83

25 f4 00 08 21 20 30 61 - 04 25 23 8c 05 00 03 6c

03 01 54 68 5e fa 5e 73 - 00 3a 00 20 30 00 00 32

……

从从第14个字节看起:

08:SMSC地址长度

91:地址类型,国际格式号码(号码前加“+”)

68:中国的国际区号,号码前加 +86

31 08 70 75 15 f0:短信中心地址/号码:字节内反转,13800775510,F补齐长度为偶数。

00 a0 - 60 0d:通常接下来这里都是两个字节,这里怎么是四个??

应该标识以下位:这是条长短信,应该是60标识

其中0d:发送方地址/号码长度 00 a0是干什么的呢?

Bit7

Bit 6

Bit 5

Bit 4

Bit 3

Bit 2

Bit 1

Bit 0

TP-RP

TP-UDHI

TP-SRR

未用

TP-MMS

TP-MTI

0

1

1

00

0

00

                




    注:TP-UDHI :TP-User-Data-Header-Indicator(用户数据头标示)

     0:没有头信息;1:有头信息,头信息格式(在用户数据前面的6个字节)

91 68 31 62 98 83 25 f4:91,86作用同前面,发送方地址/号码:+8613268938524

00 :协议标识TP-PID:普通GSM,点到点方式

08 :编码方式TP-DCS:三种:00表示7-bit编码(英文)、04表示8-bit编码(图片和铃声)、08表示UCS2编码(汉字)

21 20 30 61 - 04 25 23:时间戳TP-SCTS:12/02/03/16:40:52 32时区

8c :短信长度 140 短信内容字节长度,UCS2编码

05 00 03 6c 03 01:记录长短信的标识  非长短信则不带有此信息头

    05- 协议长度(后面占5位)

    00 表示拆分短信

    03 拆分数据的长度(后面的3位)

    6c 唯一标识(用于把多条短信合并)

    03 共被拆分3条短信

    01 序号,这是其中的第1条短信

其余字节:…… 短信内容

上面这个是正常电话号码发送的!

 

2 10086发送

66 00 02 00 10 00 00 00 - 09 01 73 01 01 08 91 68

31 08 70 75 15 f1 00 66 - 64 05 a1 01 80 f6 00 08     01 80 f6 号码:10086

21 20 30 61 73 33 23 56 - 05 00 03 18 02 02 00 33

5e 74 00 30 00 35 67 08 - 00 30 00 37 65 e5 ff 0c

67 08 7e d3 65 e5 4e 3a - 00 32 00 32 65 e5 ff 0c

60 a8 76 84 20 1c 00 31 - 00 30 52 06 20 1d 6e e1

61 0f ff 0c 62 11 4e ec - 76 84 65 e0 96 50 52 a8

52 9b 30 02 4e 2d 56 fd - 79 fb 52 a8 30 02

……

 

3 飞信发送

a1 00 02 00 10 00 00 00 - 19 01 ae 01 02 08 91 68

31 08 20 00 75 f1 00 a1 - 60 10 a8 21 25 10 53 29   刚好凑偶数 不用F补齐  号码:1252013592767045

67 07 54 00 08 21 20 30 - 61 24 40 23 8c 05 00 03

78 05 02 80 0c 88 68 73 - b0 51 fa 67 65 76 84 30

02 54 0c 65 f6 ff 0c 51 - 85 57 28 4e 0e 59 16 57

28 76 84 59 51 54 08 4e - 0e 54 8c 8c 10 65 e2 66

……

 

不同平台发送的信息,PDU编码会有一些不同。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值