1、關于微信賬號
這里提到的微信內部賬號(UIN )有三種可能的結構:9位數(shù)、10位數(shù)、1個負號拼接10位數(shù)。
UIN記錄在/data/data文件夾下的若干文件內,包括com.、a等。
例如:在文件里的
<int name="default_uin" value="2333333333" />
au文件里的
<int name="_auth_uin" value="2333333333" />
網(wǎng)上盛傳的chrome://net-internals/#events抓包法也能得到UIN,通常與上述UIN相同,但只有兩種可能的結構:9位數(shù)、10位數(shù)。如果10位數(shù)溢出了32位整型空間,就相當于“1個負號拼接10位數(shù)”的情況。
例如:數(shù)據(jù)包的UIN是233333333,實際的UIN是-1961633963(即233333333減去4294967296)。
接下來,如前文所述,“mm”直接拼接UIN ,算出MD5值后得到該賬號的文件夾名稱。例如:UIN是-1961633963時,MD5(mm-1961633963) = b883740d5f568c04e488befca16eed50。
2、微信語音文件夾的命名規(guī)則
前文已經(jīng)介紹過了,微信的語音文件存儲在“voice2”下的兩層目錄下,而這兩層的目錄名稱非常奇怪,都是兩位字符,如“voice\3d\27\……”,name," voice2”文件夾之下的二級目錄名是如何選擇的呢?
以這里的“ m ”文件為例,只要把“msg_”去掉,對基本名稱的剩余部分( 480948061918919ac9300d9102 )計算MD5值,得到 3d 27 8f649bece4ff979a26db4e50d147,取第1-2位為第一層目錄名,第3-4位為第二層目錄名,這個文件就在 /voice2/3d/27/ 文件夾下。
3、微信語音文件的命名規(guī)則
前文留下了一個思考題,這里的發(fā)送者標識“ 919ac93 ”是什么含義呢?
首先要明確,微信號包括缺省微信號和自定義微信號。缺省微信號通常以“wxid_”(個人號)或“gh_”(公眾號)開頭,就像身份證號一樣。
當用戶自行選擇自定義微信號后,缺省微信號 不被刪除或覆蓋 。而發(fā)送者標識就是 缺省微信號的MD5值的前7位 , 即使修改自定義微信號后也不變化 。
另外再說一句,保存頭像時,得到的圖片文件名稱也由缺省微信號的MD5值構成。 例如:大家可以關注一下“新聞哥”這個訂閱號做個實驗。(非推薦行為)
那么,應該對gh_faa35168f414計算MD5值,其頭像圖片將被保存為 ,并且其發(fā)送者標識是“ aaf7752 ”,即:缺省微信號的md5值,取前面七位。
4、待解決的新問題
1、發(fā)送者標識為什么只取7位呢?
筆者猜測是為了壓縮文件名、節(jié)省數(shù)據(jù)空間。容易想到,這樣做可能導致哈希沖突。對于最常見的缺省微信號格式(wxid_14位小寫字母和數(shù)字),理論上有36^14種可能(6.14094E+21),而7位哈希只有16^7種可能(2.68435E+8)。
當然在操作中,可以在生成wxid時就丟棄沖突的wxid,直到微信用戶數(shù)接近2.7億。然而,馬化騰在今年全國人大“代表通道”上透露,微信全球月使用活躍用戶數(shù)在春節(jié)突破十億大關。那么,怎樣判別用戶的唯一性?
2、語音文件名稱里的發(fā)送時間由手機時間決定,不依賴于服務器的標準時間。
那么,怎樣確定時間的正確性?
1.《【2333333333是什么意思】專題「微信帳號&語音文件」結構分析》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡信息知識,僅代表作者本人觀點,與本網(wǎng)站無關,侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《【2333333333是什么意思】專題「微信帳號&語音文件」結構分析》僅供讀者參考,本網(wǎng)站未對該內容進行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。
3.文章轉載時請保留本站內容來源地址,http://f99ss.com/gl/2200092.html