[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.

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

 

2.       7bit编码Alphabet

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

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

4D 61 69 6C 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 3F 7A 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

posted @ 2012-12-22 10:53  洁静精微  阅读(1246)  评论(0编辑  收藏  举报