西门子M55通讯录内部格式之彻底解剖
本人通过对M55通讯录的文件格式做详细的“解剖”,彻底分析出了通讯录的内部格式构成,这样我们就可以对通讯录进行优化了,比如减肥、拼音查询优化等等,这些都是用官方软件所无法办到的。
本文可以供西门子的爱好者参考,当然对懂得软件编程的开发人员来说,我想应该是目前国内首次公开的关于M55宝贵的技术资料了,不知西门子会不会找我算账……,^_^
本文是针对M55通讯录做的研究,但同样适合于西门子55系列的其他手机,如S57/SL55。
一、综述
M55的通讯录是由三个文件组成的,放在动态内存的Address book目录下,这个目录是隐藏的,所以通过手机的文件管理器是看不到的,但通过数据线借助电脑,用DES软件可以清楚的看到这个隐藏目录以及这个目录里的四个文件,也是隐藏的。
这个四个文件为别为5f08.adr, 7f08.adr, 9f08.adr和.lock文件,有别于45系列(6618/3618/6688)通讯录的5f02.adr, 7f02.adr, 9f02.adr,因为55系列(s57/sl55/m55)手机的通讯录作了许多改进和升级。
其中5f08.adr是用来存放每一条通讯录的具体内容的,按条逐次存放。我称之为记录文件。
7f08.adr里存放的是每一条通讯录在5f08.adr文件中的地址,便于检索。我称之为索引文件。
9f08.adr是由手机动态生成的,事实上备份通讯录只要拷贝前两个文件就可以了。
.lock文件固定为0字节,对于我们研究和改进通讯录没有什么关系,不用管它。
二、M55通讯薄记录文件格式(5f08.adr)
5f08.adr由文件头和其后的通讯录记录构成:
(一)、文件头: 68字节;
2字节:代表记录头中包含字段的数目,一般为29个字段,即总为1D 00;
2字节:代表记录(电话)条目个数,比如若通讯录中有18条记录,则位12 00;
剩余64字节总是:
00 00 00 00 01 00 13 01 93 01 13 01 93 02 13 01
13 01 13 08 93 00 9A 01 9A 01 0A 02 4A 00 A9 00
A9 00 A9 00 A9 00 A9 00 08 00 08 00 08 00 08 00
08 00 82 00 14 00 24 00 35 00 08 00 08 00 3A 00
(二)、记录:
每一条记录都是由以下30个字段构成,其中的记录头记录剩余29个字段的长度。
0.记 录 头:58字节,表示每条记录各字段占空间的字节长度,用2个字节表示,依次为:
姓、名、公司、街道、城市、国家、来电图片、备用(包括群组,名称前6字)、电子邮件、电子邮件2、网址、邮政编码、私人电话、公司电话、移动电话、传真、传真 2、五个电话存在标志、修改时间、内部识别号、生日重要记事地址、生日、备忘提示标志、语音拨号标记、检索拼音等29项。共占用58个字节;
1.姓 :在中国固定为2字节,没有使用这个字段,总为00 00。
2.名 字 :长度按实际字数计,最长50字节,UNICODE16码(即不论是汉字还是英文,每个字都占两个字节),最长为24个字,结束符为00 00。
3.公司名称 :长度按实际字数计,最长34字节,UNICODE16码,最长为16个汉字,结束符为00 00。
4.街 道 :长度按实际字数计,最长82字节,UNICODE16码,最长为40个汉字,结束符为00 00。
5.城 市 :长度按实际字数计,最长34字节,UNICODE16码,最长为16个汉字,结束符为00 00。
6.国 家 :长度按实际字数计,最长34字节,UNICODE16码,最长为16个汉字,结束符为00 00。
7.来电图片 :存放来电图片在动态内存中的路径,如A:\Pictures\Me.JPG,长度按实际字数计,长度几乎没有限制,UNICODE16码,结束符为00 00。
8.备 用 :固定18字节,由群组类型和重复信息组成。
其中群组类型占头2字节,30为名片、31为家人、32为朋友、33为同事、34为VIP、35为休闲玩伴、36为秘密好友、37为生意伙伴、38为物件接收、39为未设定群组,结束符为00。
然后是重复信息16字节,最多重复名字中的6个汉字,名字不足6个字的用00补足,最后4个字节总为00 00 00 00。
9.电子邮件 :长度按实际字数计,最长51字节,ASCII码,最长50个字符,结束符为00,无该项时长度为1即只含结束符。
10.电子邮件2:长度按实际字数计,最长51字节,ASCII码,最长50个字符,结束符为00,无该项时长度为1即只含结束符。