sim卡中电话本(ADN)的简要格式
入门好文章,要转
http://blog.csdn.net/huaciom/article/details/6097272
ADN的格式
ADN存放于sim卡下面3f00/7f10/6f3a,记录文件格式,其最小记录格式为14,最长为255,
其后数14个字节是必有的,其前12个字节是电话号码
如果长度超过14个,则前面的存储的用户的姓名,如果以80,81,82开头,存放的是ucs2格式的姓名,否则是英文格式的串。
示例如下。
// Reset
3B 7B 11 22 33 00 01 02 03 04 05 06 07 08 09 0A
// SELECT
A0 A4 00 00 02 3F 00
9F 17
// A0 A4 00 00 02 是命令头,CLA = A0 表示GSM应用,INS = A4 表示 SELECT ,P1 P2 = 00 00 是参数,P3 =02 是数据的长度(或返回数据的长度)表示( 2 )
// 选择文件,选中文件为 3F 00 代表 MF
// 9F 17 是返回状态,表示--- 成功,有 23 个字节的信息等待GET RESPONSE
// SELECT
A0 A4 00 00 02 7F 10
9F 17
// A0 A4 00 00 02 是命令头,CLA = A0 表示GSM应用,INS = A4 表示 SELECT ,P1 P2 = 00 00 是参数,P3 =02 是数据的长度(或返回数据的长度)表示( 2 )
// 选择文件,选中文件为 7F 10 代表 TELECOM
// 9F 17 是返回状态,表示--- 成功,有 23 个字节的信息等待GET RESPONSE
// SELECT
A0 A4 00 00 02 6F 3A
9F 0F
// A0 A4 00 00 02 是命令头,CLA = A0 表示GSM应用,INS = A4 表示 SELECT ,P1 P2 = 00 00 是参数,P3 =02 是数据的长度(或返回数据的长度)表示( 2 )
// 选择文件,选中文件为 6F 3A 代表 ADN[CDMA-PL]
// 9F 0F 是返回状态,表示--- 成功,有 15 个字节的信息等待GET RESPONSE
// GET RESPONSE
A0 C0 00 00 0F
00 00 1B 58 6F 3A 04 00 11 FF 22 01 02 01 1C
90 00
// A0 C0 00 00 0F 是命令头,CLA = A0 表示GSM应用,INS = C0 表示 GET RESPONSE ,P1 P2 = 00 00 是参数,P3 = 0F 是数据的长度(或返回数据的长度)表示( 15 )
// 返回数据见上,其中
//-- 00 00 保留
//-- 1B 58 占用的空间大小,表示 7000字节
//-- 6F 3A 选中File的ID
//-- 04 选中文件的类型,01-MF, 02-DF, 04-EF
//-- 00 见11.11 9.2.1 detail 3
//-- 11 FF 22 访问权限
//-- 01 文件状态,见11.11 9.3
//-- 02 后面数据的长度,表示 2
//---- 01 文件结构,见11.11 9.3
//---- 1C 记录长度,见11.11 9.2.1 detail 4
// 90 00 是返回状态,表示--- 成功
// READ RECORD
A0 B2 01 04 1C
80 5F 20 4E 09 FF FF FF FF FF FF FF FF FF 05 81 11 22 33 44 FF FF FF FF FF FF FF FF
90 00
// A0 B2 01 04 1C 是命令头,CLA = A0 表示GSM应用,INS = B2 表示 READ RECORD ,P1 P2 = 01 04 是参数,P3 = 1C 是数据的长度(或返回数据的长度)表示( 28 )
// 读记录,P2 = 04 表示 绝对记录号, P1 = 01 为记录号,表示第 1 条记录P3 = 1C 表示后面的数据长度为 28
// 这是一条ADN,姓名 "张三" ,电话号码 11223344
// 90 00 是返回状态,表示--- 成功
// READ RECORD
A0 B2 02 04 1C
80 67 4E 56 DB FF FF FF FF FF FF FF FF FF 05 81 55 66 77 88 FF FF FF FF FF FF FF FF
90 00
// A0 B2 02 04 1C 是命令头,CLA = A0 表示GSM应用,INS = B2 表示 READ RECORD ,P1 P2 = 02 04 是参数,P3 = 1C 是数据的长度(或返回数据的长度)表示( 28 )
// 读记录,P2 = 04 表示 绝对记录号, P1 = 02 为记录号,表示第 2 条记录P3 = 1C 表示后面的数据长度为 28
// 这是一条ADN,姓名 "李四" ,电话号码 55667788
// 90 00 是返回状态,表示--- 成功
// READ RECORD
A0 B2 03 04 1C
4A 65 6E 6E 79 FF FF FF FF FF FF FF FF FF 06 81 00 10 11 22 F2 FF FF FF FF FF FF FF
90 00
// A0 B2 03 04 1C 是命令头,CLA = A0 表示GSM应用,INS = B2 表示 READ RECORD ,P1 P2 = 03 04 是参数,P3 = 1C 是数据的长度(或返回数据的长度)表示( 28 )
// 读记录,P2 = 04 表示 绝对记录号, P1 = 03 为记录号,表示第 3 条记录P3 = 1C 表示后面的数据长度为 28
// 这是一条ADN,姓名 "Jenny" ,电话号码 000111222
// 90 00 是返回状态,表示--- 成功
// READ RECORD
A0 B2 04 04 1C
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
90 00
// A0 B2 04 04 1C 是命令头,CLA = A0 表示GSM应用,INS = B2 表示 READ RECORD ,P1 P2 = 04 04 是参数,P3 = 1C 是数据的长度(或返回数据的长度)表示( 28 )
// 读记录,P2 = 04 表示 绝对记录号, P1 = 04 为记录号,表示第 4 条记录P3 = 1C 表示后面的数据长度为 28
// 这是一条空ADN
// 90 00 是返回状态,表示--- 成功