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

1.       引子和定义

CPHS Phase 2(Version Number:4.2)文档中,在Data field 6F17:Mailbox 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.

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

2.       7bit编码Alphabet

使用的字符请参考3G TS 23.038。在Alpha Identifier中,每个字节为一个最高bit位填充0的7bit字符,无用字节填充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中的80、81、82编码。

3.       80编码

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

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

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

0x674E为李的UCS2编码;

0x9E3F为鸿的UCS2编码;

0x7AE0为章的UCS2编码。之后没有用到的数据位用FF来填充。

4.       81编码

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

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

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

第三个字节是一个16位数字基准的15到8比特位,也就是说这个数字基准的bit16和bit7到bit1为0。

第四个字节如果bit8为0,则bit7到bit1表示一个GSM Default Alphabet character,也就是一个7bit Default编码字符(可查看3G TS 23.038 6.2.1 GSM 7 bit Default Alphabet);如果bit8为1,则bit7到bit1表示一个偏移值,该偏移值与上述的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;

第四个字节为0xB1,bit8为1,0x6700+0x31=0x6731,为朱的UCS2编码;

第五个字节为0xAB,bit8为1,0x6700+0x2B=0x672B,为末的UCS2编码;

第六个字节为0xAB,bit8为1,0x6700+0x2B=0x672B,为末的UCS2编码;

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

第八个字节为0xFF,bit8为1,0x6700+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数字基准。

第五个字节如果bit8为0,则bit7到bit1表示一个GSM Default Alphabet character,也就是一个7bit Default编码字符;如果bit8为1,则bit7到bit1表示一个偏移值,该偏移值与上述的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;

第五个字节为0x9C,bit8为1,0x51B0+0x1C=0x51CC,为凌的UCS2编码;

第六个字节为0x80,bit8为1,0x51B0+0x00=0x51B0,为冰的UCS2编码;

第七个字节为0x80,bit8为1,0x51B0+0x00=0x51B0,为冰的UCS2编码;

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

第九个字节为0x53,bit8为1,为7bit编码0x53,即为S。

之后的字节不用关注。

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

[Mailbox]SIM卡中Alpha Identifier域解析相关推荐

  1. SIM卡中UCS2编码的三种格式(80,81,82)分析

    为什么手机短信长度限制70个中文.160个英文??? (2012-04-15 00:15:26) 转载▼ 标签: 杂谈 分类:Android 手机短信的长度是由编码决定的,根据国际标准,每条短信最多发 ...

  2. 移动支付NFC-SWP方案在SIM卡中的实现方法

    [导读] 本文提出移动支付NFC-SWP连接方案,并使用大容量SIM卡中加以实现.文中,NFC芯片提供射频接口,负责转发射频数据给SIM卡.SIM卡则使用SWP接口实现与NFC芯片的连接. 引言 近几 ...

  3. SIM卡中的ef文件介绍

    SIM卡里的所有文件按树来组织: 主文件MF(Master File)--每一块SIM卡只有一个唯一的主文件, 其他所有文件都是它的子孙, 主文件只有文件头,里面存放着整个SIM卡的控制和管理信息 专 ...

  4. android 怎样删除sim卡中的联系人

    这个功能我看了不少的资料,但总是删除不成功,我是在mtk 6.0上进行开发的.首先是通过"content://icc/adn/"来进行删除的,我发现这个根本就不行, public ...

  5. MTK平台获取本机的SIM卡中IMSI号

    要求在MTK的代码上获得本机上SIM卡的手机号码,查了很多资料后,结果是无法获得,原因是手机号码不是直接存储在SIM卡的,而是信号通过移动商(移动.联通或电信)时绑定的:IMSI是sim卡的一个属性号 ...

  6. MTK平台 获取本机的SIM卡中IMSI号

    公司MTK平台做开发,老板要求在MTK的代码上获得本机上SIM卡的手机号码,查了很多资料后,结果是无法获得,原因是手机号码不是直接存储在SIM卡的,而是信号通过移动商(移动.联通或电信)时绑定的:IM ...

  7. 读取SIM卡中联系人流程

    本文主要讲USIM卡插入手机后读取卡中contacts信息的流程. 整体流程总结 每次插拔SIM卡都会将联系人数据库中关于SIM卡的联系人删除 SimStateReceiver 通过接收 RIL 上报 ...

  8. 获取手机通讯录 (含SIM卡中的联系人)

    sim卡UIR content://icc/fdn content://sim/fdn MOTO XT800比较异常,通讯录在: content://contacts/phones 1.使用andro ...

  9. android+已移除sim卡,如何从Android SIM卡中删除/删除/擦除联系人

    作者:Selena Komez11月更新了20,2017 "我的兄弟是一个空白的经理,他在他的Android SIM卡上保存了数千个客户名称和电话号码.但是,现在为了保护客户的隐私,他需要将 ...

最新文章

  1. 关于Redis缓存,这3个问题一定要知道!
  2. Cannot open D:\Program Files\Anaconda3\Scripts\pip-script.py
  3. textField textView输入限制
  4. python结合c语言能干啥_第9p,Python是什么?学了Python能干什么?
  5. 函数⑥作用域与命名空间
  6. Polynomial(HDU-6668)
  7. 照片解锁手机不能忍?教你用OpenCV做活体检测 | 有代码
  8. JAVA大数据-Week4-DAY6-JDBC
  9. 基于扩展性考虑,不同场景选择的不同方案
  10. 宜信正式开源其 AIOps 落地三大利器
  11. MyBatis简介及下载地址
  12. docker复习:CVE-2016-10033验证
  13. python 华氏度转换摄氏度
  14. c语言上机调试步骤,C语言上机环境与上机调试.ppt
  15. 【安全系列】beef-xss攻击示例
  16. springboot农机装备生产车间物料配送车辆调度管理系统毕业设计源码181710
  17. Springboot实现拦截器功能
  18. 2022年中国现制咖啡行业市场规模及重点企业经营现状分析:市场规模达89.7亿元[图]
  19. PK61键盘使用说明
  20. 初见Manjaro:Manjaro 安装配置流程

热门文章

  1. Devops实现之jenkins (二)
  2. 「星火计划沙龙视频」Angel核心推荐算法及其应用探秘
  3. C#等语言、反射机制实现简单 智能语音人机交互(2)-- 皓月
  4. 企业内部DNS从服务器架构的步骤
  5. python手机壁纸_利用Appium Python测试爱壁纸的登录和设置壁纸
  6. ICNS格式文件用途及分析
  7. 来吧,我是BOSS!
  8. 美团赴抖音之“约”:让本地生活补贴大战来得更猛烈些?
  9. C语言三个点“...“符号含义之数组批量赋相同值
  10. java aspose 导出word_aspose.words导出html 转word文档带图片,(无网络也可以看图)