西門子6618(45系列)通訊錄內部格式之詳細解剖
2024-06-08 15:07:30
供稿:網友
本人通過對6618通訊錄的格式做詳細的“解剖”,徹底分析出了通訊錄的內部格式。
本文可以供西門子的愛好者參考,當然對懂得軟件編程的開發人員來說,我想應該是目前國內首次公開的寶貴的技術資料了,不知西門子會不會找我……,^_^
一、綜述:
6618的通訊錄是由三個文件組成的,放在動態內存的Address book目錄下,這個目錄是隱藏的,所以通過手機的文件管理器是看不到的,但通過數據線借助電腦,用DES軟件可以清楚的看到這個隱藏目錄以及這個目錄里的三個文件,也是隱藏的。
這個三個文件為別為5f02.adr, 7f02.adr, 9f02.adr。
其中5f02是用來存放每一條通訊錄的具體內容的,按條逐次存放。我稱之為記錄文件。
7f02.adr里存放的是每一條通訊錄在5f02文件中的地址,便于檢索。我稱之為索引文件。
9f02.adr是由手機動態生成的,事實上備份通訊錄只要拷貝前兩個文件就可以了。
二、6618通訊薄記錄文件格式(5f02.adr):
5f02由文件頭和其后的通訊錄記錄構成:
(一)、文件頭:
總共48字節。
頭2字節:代表記錄中包含字段的數目,一般為19個字段,即總為13 00;
依次2字節:代表通訊錄中記錄的個數;
剩余44字節總是:
00 00 01 00 01 00 13 01 93 01 13 01 93 02 13 01 13 01 93 00 4A 01 0A 02 4A 00 A9 00 A9 00 A9 00 A9 00 08 00 08 00 08 00 08 00 82 00
它們代表的意思是每條記錄的各個字段具體的編碼形式,是不變的。
(二)、記錄:
0.記 錄 頭:38字節,表示各字段在記錄中的字節長度,用2個字節表示,依次為:名、姓、公司、街道、城市、國家、備用(一般為12,包括Vip,名稱前6字)、電子郵件、網址、郵政編碼、私人電話、公司電話、移動電話、傳真、四個電話存在標志、修改時間等19項,共占用38個字節;
1.名:在中國固定2字節,沒有用這個字段總為00 00;
2.姓:長度按實際字數計,最長50字節,漢字內碼,最長24個漢字,英文字符也按漢字存儲,結束符為00 00,在中國代表姓名,無該項時長度為2即只含結束符;
3.公司名稱:長度按實際字數計,最長34字節,漢字內碼,最長16個漢字,英文字符也按漢字存儲,結束符為00 00,無該項時長度為2即只含結束符;
4.街道:長度按實際字數計,最長82字節,漢字內碼,最長40個漢字,英文字符也按漢字存儲,結束符為00 00,無該項時長度為2即只含結束符;
5.城市:長度按實際字數計,最長34字節,漢字內碼,最長16個漢字,英文字符也按漢字存儲,結束符為00 00,無該項時長度為2即只含結束符;
6.國家:長度按實際字數計,最長34字節,漢字內碼,最長16個漢字,英文字符也按漢字存儲,結束符為00 00,無該項時長度為2即只含結束符;
7.備用:固定18字節,包含類型2字節,30為名片、31為VIP、32為普通,結束符為00;重復信息16字節,最多重復名字中的6個漢字,最后4個字節總為00;
8.電子郵件:長度按實際字數計,最長41字節,ASCII碼,最長40個字符,結束符為00,無該項時長度為1即只含結束符;
9.網址:長度按實際字數計,最長65字節,ASCII碼,最長64個字符,結束符為00,無該項時長度為1即只含結束符;
10.郵政編碼:長度按實際字數計,最長9字節,ASCII碼,最長8個字符,結束符為00,無該項時長度為1即只含結束符;
11.私人電話:長度按實際電話位數計,最長21字節,BCD碼,最長40位數字,奇數位電話以十六進制數F結束,偶數為FF,無該項時長度為1即只含結束符FF;
12.公司電話:長度按實際電話位數計,最長21字節,BCD碼,最長40位數字,奇數位電話以十六進制數F結束,偶數為FF,無該項時長度為1即只含結束符FF;
13.移動電話:長度按實際電話位數計,最長21字節,BCD碼,最長40位數字,奇數位電話以十六進制數F結束,偶數為FF,無該項時長度為1即只含結束符FF;
14.傳真:長度按實際電話位數計,最長21字節,BCD碼,最長40位數字,奇數位電話以十六進制數F結束,偶數為FF,無該項時長度為1即只含結束符FF;
15.私電標志:固定1字節,FF為沒有私人電話,81為有;
16.公電標志:固定1字節,FF為沒有公司電話,81為有;
17.移電標志:固定1字節,FF為沒有移動電話,81為有;
18.傳真標志:固定1字節,FF為沒有傳真,81為有;
19.修改時間:固定16字節,ASCII碼,年月日8字節+'T'+時分秒6字節,結束符為00;
總計最長為511字節。
三、6618通訊錄索引文件格式(7f02.adr)
7f02有每條通訊錄記錄的索引構成,無其它內容。
索引:固定4字節,記錄通訊錄條目在5f02.adr中的偏移地址,每一個條目的格式為ww xx yy zz。
代表該條目在5f02記錄文件中的偏移地址為zzyyxxww。最高位留作它用,即當最高位為1時表示該記錄已經刪除。
四、注意
當對手機的通訊錄進行刪除時,手機只是簡單的把7f02中該條目的最高為置為1,然后把5f02對應地址空間全寫為DD,頭一字節寫為EE,表示此空間無效。如果以后添加新的條目這一段空間也不會在被利用了,只會在5f02最后添加新條目。
當對手機的通訊錄進行編輯時,如果存儲新編輯的條目需要的空間大于原來的空間時,手機是先把原記錄刪除(同上),然后在5f02最后創建新的記錄。
所以如果你對你的通訊錄反復修改的話,5f02文件內部會出現許多不能被再利用的空間(內部碎片),文件就會變的越來越“胖”。
關于通訊錄“減肥”的軟件網上已經有了,但是我發現該軟件有一些問題。所以我打算有時間的時候再編一個通訊錄減肥的軟件,到時可以與大家分享!^_^當然那位高手要是看了這片文章后想有編編的沖動,可以試試,那樣我就省事兒了。
其實,3618/6686i/6688/6688i的通訊錄格式和6618是一模一樣的,它們都屬于西門子45系列的機子,而55系列的機子(如M55/S57/SL55)的通訊錄做了很大的擴展,格式與45系列有了很大的不同,關于55系列通訊錄的格式還需要一定的時間研究,以后會在M55的寶典公布的。