WeChat(macOS)データベース復号ツール

Security

概要

このリポジトリは、macOS(arm64)上で動作するWeChat(微信)アプリのローカルデータベースを復号してチャット履歴を抽出するツールセットです。主機能は(1)lldbを利用したメモリ走査でWeChatプロセスからSQLCipherの復号鍵を抽出し(wechat_keys.jsonに保存)、(2)抽出した鍵でsqlcipher対応のsqliteファイルを復号してデータを取り出す、(3)会話一覧の表示や指定会話のエクスポートを行う、という流れです。WeChat 4.1系(READMEでは4.1.2.241で動作確認)を対象としており、古いバージョン(4.0未満)はサポート外。SIPの無効化や外部ツール(llvm、sqlcipher)のインストールが前提となります。

GitHub

リポジトリの統計情報

  • スター数: 55
  • フォーク数: 53
  • ウォッチャー数: 55
  • コミット数: 12
  • ファイル数: 13
  • メインの言語: Python

主な特徴

  • lldbベースのメモリスキャンでWeChatプロセスから暗号鍵を抽出(wechat_keys.jsonに保存)
  • sqlcipherを使ってSQLCipher暗号化されたデータベースを復号・開放
  • 会話一覧の表示と会話単位でのメッセージエクスポート(あいまい検索対応)
  • MCP ServerサポートによりAIから直接WeChatデータを照会可能

技術的なポイント

このプロジェクトの核心は「プロセスメモリからの鍵抽出」と「SQLCipherでの復号」の二点にあります。WeChatはローカルにSQLCipherで暗号化されたSQLite DBを保持しており、復号にはアプリ内部で保持される鍵が必要です。find_key_memscan.py(READMEではPYTHONPATH=$(lldb -P)を用いた実行例)では、lldbのPython APIを利用してWeChatプロセスをアタッチし、メモリ領域を走査して鍵候補を探します。macOS arm64環境ではプロセスメモリの取得が保護されているため、System Integrity Protection(SIP)の無効化(csrutil disable)が手順に含まれており、これが動作要件の一部です。

抽出された鍵はwechat_keys.jsonとして保存され、decrypt_db.pyがこれを読み取ってsqlcipherコマンド/ライブラリを呼び出すことで暗号化されたSQLiteファイルの鍵を設定し、通常のSQLクエリでテーブルやメッセージを読み出せるようにします。sqlcipherはOpenSSLベースのSQLite派生で、鍵導出(PBKDF2等)やページ単位の暗号化などを行うため、正しい鍵とパラメータがないと復号は失敗します。リポジトリではWeChat特有の鍵保持方式と復号パラメータに合わせた処理が実装されています。

export_messages.pyは復号済みDBに対するユーティリティで、会話一覧の取得、指定会話のエクスポート(名前のあいまい検索やID指定)を行い、CSVやJSONなどで出力できるように設計されています。また、MCP Server経由でAIに直接クエリを投げるインターフェースも用意されており、復号→データ抽出→AI解析というワークフローが組めます。

注意点としては、SIP無効化やプロセスアタッチは強力な操作であり、セキュリティ・プライバシー・法的な問題を生じる可能性があります。さらに、このツールはWeChatの特定バージョン(4.1系)での動作を前提にしており、アプリ側の更新によりメモリ配置や鍵管理が変わると動作しなくなります。ARM64環境特有のライブラリやlldbのパス設定(lldb -PをPYTHONPATHに渡す等)も運用時のハードルです。開発面ではPythonでラッパーを作り、外部依存としてHomebrew経由のllvmとsqlcipherを想定しているため、環境構築が比較的明示的で再現しやすい反面、macOSのバージョンやApple Silicon対応が必須です。

最後に、鍵の抽出と復号はフォレンジック/リカバリ用途で有用ですが、機密性の高い個人データを扱うため、適切な同意と法的根拠の下で使用することを強く推奨します。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • LICENSE: file
  • README.md: file
  • decrypt_db.py: file
  • export_messages.py: file
  • find_key_memscan.py: file
  • wechat_keys.json (出力例 / 生成ファイル): file
  • requirements.txt(または依存管理): file
  • scripts/ または utils/: ディレクトリ(鍵抽出/復号ヘルパ) …他 4 ファイル(合計 13 ファイル)

(README抜粋)クイックスタート要点:

  1. 前提:macOS arm64、WeChat 4.x、SIP無効化、依存: llvm, sqlcipher
  2. 鍵抽出:PYTHONPATH=$(lldb -P) python3 find_key_memscan.py → wechat_keys.json 出力
  3. DB復号:python3 decrypt_db.py
  4. メッセージ抽出:python3 export_messages.py(会話一覧・会話エクスポート)

まとめ

WeChatローカルDBの鍵抽出とSQLCipher復号を自動化する実用的なmacOS向けフォレンジックツール。

リポジトリ情報: