WeChat は中国で最も人気のあるモバイル IM アプリですが、構造化されたメッセージ履歴をエクスポートする方法を提供していません。
WeChat メッセージのストレージ プロトコルをリバース エンジニアリングし、ルート化された Android スマートフォン上で WeChat メッセージを復号化および解析するためのこのツールを提供します。また、メッセージを音声メッセージ、画像、絵文字、ビデオなどを含む自己完結型の HTML ファイルにレンダリングすることもできます。
このツールは、2025/01/01 に wechat の最新バージョンで動作することが最後に検証されました。このツールがうまく機能する場合は、少し時間をとって携帯電話/OS を Wiki に追加してください。
./third-party/compile_silk.sh
でビルドします)pip install -r requirements.txt
。 ./android-interact.sh db
。間違ったユーザー ID が使用されている可能性があります。/data/data/com.tencent.mm/MicroMsg
の内容を検査して、 ${userid}
を特定します。 16 進数で構成される 32 文字の長さの名前にする必要があります。/data/data/com.tencent.mm/MicroMsg/${userid}/EnMicroMsg.db
を取得します。./decrypt-db.py decrypt --input EnMicroMsg.db
WeChat uin (整数) を取得します。考えられる方法は次のとおりです。
./decrypt-db.py uin
、 /data/data/com.tencent.mm/shared_prefs/
で uin を検索します。document.cookie
から wxuin=1234567 を取得します。デバイス ID (正の整数) を取得します。考えられる方法は次のとおりです。
./decrypt-db.py imei
デバイス ID を検索するいくつかの方法を実装しています。*#06#
に電話してくださいuin とデバイス ID の組み合わせでデータベースを復号化します。
./decrypt-db.py decrypt --input EnMicroMsg.db --imei <device id> --uin <uin>
注: デバイス ID を取得するためにさまざまな方法を試し、データベースを復号化できる方法を見つける必要がある場合があります。一部の携帯電話には複数の IMEI がある場合があるため、すべてを試してみる必要がある場合があります。 #33を参照してください。このコマンドは、復号化されたデータベースをEnMicroMsg.db.decrypted
にダンプします。
上記の復号化が機能しない場合は、パスワード クラッカーを使ってキーを総当たり攻撃してみることもできます。暗号化キーはそれほど強力ではありません。
WeChat ユーザー リソース ディレクトリ/data/data/com.tencent.mm/MicroMsg/${userid}/{avatar,emoji,image2,sfs,video,voice2}
を電話機からresource
ディレクトリにコピーします。
./android-interact.sh res
RES_DIR
変更します。古いバージョンの wechat の場合、ディレクトリは/mnt/sdcard/tencent/MicroMsg/
になります。tar
でアーカイブしてからアーカイブをコピーすると、より高速な場合があります。Android システムのtar
長いパスで停止する可能性があるため、 busybox tar
使用することをお勧めします。avatar,emoji,image2,sfs,video,voice2
というサブディレクトリを持つresource
ディレクトリが必要になります。 (オプション) ここから絵文字キャッシュをダウンロードし、 wechat-dump
で解凍します。これにより、レンダリング中に大量の絵文字をダウンロードすることがなくなります。
wget -c https://github.com/ppwwyyxx/wechat-dump/releases/download/0.1/emoji.cache.tar.bz2
tar xf emoji.cache.tar.bz2
すべてのチャットのテキスト メッセージを解析してダンプします (復号化されたデータベースが必要です):
./dump-msg.py decrypted.db output_dir
すべてのチャットをリストします (復号化されたデータベースが必要):
./list-chats.py decrypted.db
テキスト メッセージに関する統計レポートを生成します ( ./dump-msg.py
のoutput_dir
が必要です)。
./count-message.sh output_dir
音声メッセージ、絵文字、画像を含む 1 人の連絡先のメッセージを HTML にダンプします (復号化されたデータベースとresource
必要です)。
./dump-html.py "<contact_display_name>"
出力ファイルは、 output.html
です。
別のパスを使用するには、 ./dump-html.py -h
を確認してください。
生成された HTML のスクリーンショット:
HTML の例については、こちらを参照してください。
grep 'TODO' wechat -R
を参照してください。