wechat sqlite decryption

來源:互聯網
上載者:User

標籤:lan   輸入   github   col   sqlcipher   程式   過程   使用者   規則   

本文轉自:zz_zigzag

 

擷取資料庫檔案

藉助Google,已經有人逆向APP,拿到本機資料庫。

詳情參照知乎的回答

https://www.zhihu.com/question/19924224

這裡簡述一下,需要root的手機,拿到/data/data/com.tencent.mm/MicroMsg/一個長串/EnMicroMsg.db,檔案為加密的,密鑰為md5(IMEI+UIN)的前7位,手機序號IMEI通常可在設定->關於中獲得,或鍵盤*#06#。我這裡為IMEI1,UIN為使用者資訊號,可在/data/data/com.tencent.mm/shared_prefs/system_config_prefs.xml中獲得,檔案中default_uid的value即是。

解密sqlite database

使用了sqlcipher做得加密,看來sqlcipher常用於安卓端sqlite資料庫加密。

最初原本想在PC端引入sqlcipher的包串連db檔案,後來發現sqlcipher主要是用於安卓應用,沒找到普通java項目可用的庫,於是作罷。

又瞭解到sqlcipher用了AES256做得加密,剛要手寫AES解密,發現JDK內建AES為128位的,如若想用,還得下載額外的包,期間還去看過sqlcipher的加密部分的源碼,後來想到AES還分不同類型,這樣成功的幾率不高呀,於是也作罷。

解鈴還須繫鈴人,還是用sqlchipher來解密吧,安裝和命令參照了這篇和這篇,多謝分享。

安裝sqlcipher
1 apt-get install sqlcipher

或者

123456 unzip -q sqlcipher-master.zipcd sqlcipher-mastersudo apt install openssl libssl-dev tcl tk sqlite3./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="-lcrypto"make./sqlcipher
解密

使用上一步得到的密鑰,如key = ‘1234567’。

1234567 ./sqlcipher EnMicroMsg.dbsqlite> PRAGMA key = ‘1234567‘;sqlite> PRAGMA cipher_use_hmac = off;sqlite> PRAGMA kdf_iter = 4000;sqlite> ATTACH DATABASE ‘wechat.db‘ AS wechat KEY ‘‘;sqlite> SELECT sqlcipher_export(‘wechat‘);sqlite> DETACH DATABASE wechat;

或者一句話直接執行

1 sqlcipher EnMicroMsg.db ‘PRAGMA key = "1234567"; PRAGMA cipher_use_hmac = off; PRAGMA kdf_iter = 4000; ATTACH DATABASE "wechat.db" AS wechat KEY "";SELECT sqlcipher_export("wechat");DETACH DATABASE wechat;‘

即可得到普通未加密的wechat.db。
其中PRAGMA cipher_use_hmac = off; PRAGMA kdf_iter = 4000;可用PRAGMA cipher_migrate;代替。使用後者,會改變原檔案,如sqlcipher EnMicroMsg.db ‘PRAGMA key = "1234567"; PRAGMA cipher_migrate; ‘,執行完後可使用DB Browser for SQLite輸入密鑰開啟,然後功能表列->檔案->設定加密,密碼為空白即可清除密碼。

瞭解資料庫結構

使用Browser開啟資料庫檔案,大致瀏覽了一下表結構和資料,這裡主要使用三個表:

  1. rcontact,通訊錄表
  2. chatroom,群聊表
  3. message,聊天記錄表

message中每條記錄即為一條聊天訊息,包含著聊天對象talker,如果為群聊,message.talker=chatroom.chatroomname,message.content中儲存形式為:”群成員wxid:\n內容”。

編碼

編碼過程比較容易,統計聊天記錄會按照Regex匹配,這裡要求群成員,飯費訊息為單獨一個數值。

具體代碼見

https://github.com/zz-zigzag/wechat-db-parser

由於程式較小,為實現方便捨棄了一些編碼規則,比如函數的可重新進入性等,這裡僅供參考。

---恢複內容結束---

wechat sqlite decryption

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.