[Mailbox]SIM卡中Alpha Identifier域解析

简介:3GPP TS 11.11EFADN域详细介绍了手机SIM卡中Alpha Identifier域的组织方法,因为工作中使用到Mailbox name解析,而Mailbox name的解析方法是参考EFADN的Alpha Identifier域,所以在该文对此做出详细的解释。

 

1.       引子和定义

        CPHS Phase 2(Version Number:4.2)文档中,在Data field 6F17Mailbox Numbers的描述中,有用到Alpha Identifier域,而在一些平台中,为了兼容SIM卡设置,在NVRAM中保存Mailbox也会使用该域的组织方法。为了能正确的设置该域,则必须了解该域的组织方法。

       3GPP TS 11.11 10.5.1 EFADN (Abbreviated dialling numbers)中,定义了Alpha Identifier的编码方法:

       Coding:

               this alpha‑tagging shall use either

                       -     the SMS default 7‑bit coded alphabet as defined in TS 23.038 [12] with bit 8 set to 0. The alpha identifier shall be left justified. Unused bytes shall be set to 'FF'; or

                       -     one of the UCS2 coded options as defined in annex B.

 

       因为mailboxADN在这里的编码一致,所以本文根据便利性以mailbox为例。

 

2.      7bit编码Alphabet

       使用的字符请参考3G TS 23.038。在Alpha Identifier中,每个字节为一个最高bit位填充07bit字符,无用字节填充0xFF

       在设置Mailbox时,当你在名称域输入Mailbox作为Name,你可以看到SIM卡上6F17域的Alpha Identifier域为:

       4D 61 696C 62 6F 78 FF FF FF

       上面的域长度,根据SIM卡的不同而不同。

       3G TS 23.038 6.2.1 GSM 7 bit Default Alphabet可以查到,这些字符对应下面字符串:

       Mailbox

       之后没有用到的数据位用FF来填充。

 

       下面分别介绍Annex B中的808182编码。

3.      80编码

       参考3GPP TS 11.11 Annex B (normative): Coding of Alpha fields in the SIM for UCS2

 

       第一个字节为0x80,为80编码,则后面依次跟住UCS2MSOLSO,如下图所示:

Octet 1

Octet 2

Octet 3

Octet 4

Octet 5

Octet 6

Octet 7

Octet 8

Octet 9

'80'

Ch1MSO

Ch1LSO

Ch2MSO

Ch2LSO

Ch3MSO

Ch3LSO

'FF'

'FF'

       例如,我们在Mailbox李鸿章作为用户名,从SIM卡上6F17得到的信息为:

       80 67 4E 9E 3F7A E0 FF FF FF

       0x674EUCS2编码;

       0x9E3F鸿UCS2编码;

       0x7AE0UCS2编码。之后没有用到的数据位用FF来填充。

 

4.      81编码

       参考3GPP TS 11.11 Annex B (normative): Coding of Alpha fields in the SIM for UCS2

 

         第一个字节为0x81,即表示81编码。

         第二个字节表示字符的个数。

第三个字节是一个16位数字基准的158比特位,也就是说这个数字基准的bit16bit7bit10

         第四个字节如果bit80,则bit7bit1表示一个GSM Default Alphabet character,也就是一个7bit Default编码字符(可查看3G TS 23.038  6.2.1 GSM 7 bit Default Alphabet);如果bit81,则bit7bit1表示一个偏移值,该偏移值与上述的16位数字基准可构成一个UCS2编码。

         之后的有效字节和第四个字节的定义一致。

         举例如下:

Octet 1

Octet 2

Octet 3

Octet 4

Octet 5

Octet 6

Octet 7

Octet 8

Octet 9

'81'

'05'

'CE'

'B1'

'AB'

'AB'

'53'

'FF'

'FF'

         第二个字节为0x05,表示之后的字符为5个;

         第三个字节为0xCE,生成数字基准,二进制表示为0110 0111 0000 0000,即是0x6700

         第四个字节为0xB1bit810x6700+0x31=0x6731,为UCS2编码;

        第五个字节为0xABbit810x6700+0x2B=0x672B,为UCS2编码;

        第六个字节为0xABbit810x6700+0x2B=0x672B,为UCS2编码;

        第七个字节为0x53bit80,为7bit编码0x53,即是S

         第八个字节为0xFFbit810x6700+0x7F=0x677F,为UCS2编码。

         之后的字节不用关注。

         这里组成的字符串为:S

 

5.      82编码

        参考3GPP TS 11.11 Annex B (normative): Coding of Alpha fields in the SIM for UCS2

 

         第一个字节为0x82,即表示82编码。

        第二个字节表示字符的个数。

        第三个字节和第四个字节,组成一个16bit数字基准。

        第五个字节如果bit80,则bit7bit1表示一个GSM Default Alphabet character,也就是一个7bit Default编码字符;如果bit81,则bit7bit1表示一个偏移值,该偏移值与上述的16位数字基准可构成一个UCS2编码。

        之后的有效字节和第五个字节的定义一致。

        举例如下:

Octet 1

Octet 2

Octet 3

Octet 4

Octet 5

Octet 6

Octet 7

Octet 8

Octet 9

'82'

'05'

'51'

'B0'

'9C'

'80'

'80'

'2D'

'53'

         第二个字节为0x05,表示之后的字符为5个;

         第三、四个字节组成数字基准0x51B0

         第五个字节为0x9Cbit810x51B0+0x1C=0x51CC,为UCS2编码;

        第六个字节为0x80bit810x51B0+0x00=0x51B0,为UCS2编码;

        第七个字节为0x80bit810x51B0+0x00=0x51B0,为UCS2编码;

        第八个字节为0x2Dbit80,为7bit编码0x2D,即为-

         第九个字节为0x53bit81,为7bit编码0x53,即为S

         之后的字节不用关注。

         这里组成的字符串为:-S

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值