WeChat 4.0 データベース復号ツール

Security

概要

WeChat 4.0(Windows)用のローカルデータベース復号ツールで、稼働中のプロセスメモリから派生済みの「raw key」を抽出して SQLCipher 4 で暗号化されたデータベースを復号します。SQLCipher 4 は AES-256-CBC と HMAC-SHA512、PBKDF2-HMAC-SHA512(256,000 回)を用いるため、単純な辞書攻撃では現実的に復号困難です。本ツールは WCDB(WeChat が利用する SQLCipher のラッパー)がメモリ上にキャッシュする派生キー(形式: x’<64hex_enc_key><32hex_salt>‘)を特定し、ファイルに埋められた salt と照合、HMAC による検証を行って正鍵を抽出・利用します。加えて、リアルタイムでメッセージの監視・抽出を行う機能を持ち、法務・調査用途に活用できます。(約300字)

GitHub

リポジトリの統計情報

  • スター数: 52
  • フォーク数: 40
  • ウォッチャー数: 52
  • コミット数: 3
  • ファイル数: 11
  • メインの言語: Python

主な特徴

  • 稼働中の WeChat プロセスのメモリスキャンで派生済みキーを抽出し、SQLCipher 4 データベースを復号
  • SQLCipher 4 の暗号パラメータ(AES-256-CBC, HMAC-SHA512, PBKDF2-HMAC-SHA512)に対応
  • 各データベースの salt と enc_key をマッチングして HMAC 検証を行い、誤検出を抑制
  • リアルタイムでのメッセージ監視機能を搭載し、解析・フォレンジックを支援

技術的なポイント

このツールは WeChat(Windows)で採用されている WCDB/SQLCipher 4 の内部実装とメモリ配置に依存したアプローチを取ります。SQLCipher 4 は PBKDF2-HMAC-SHA512(反復回数 256,000)で鍵を導出し、ページサイズ 4096、reserve 80(IV 16 バイト + HMAC 64 バイト)というページ構造を持ちます。重要なのは、WCDB が派生後の「raw key」をプロセス内にキャッシュする点で、フォーマットは x’<64hex_enc_key><32hex_salt>’ のような固定パターンです。本ツールはそのパターンをプロセスメモリに対してスキャンし、ファイルシステム上の各データベースに埋め込まれた salt と照合します。照合後は HMAC 検証を行い、真に一致する鍵のみを有効とすることで誤用や誤検出を防いでいます。復号処理自体は抽出した raw key を SQLCipher 互換のライブラリに渡して行い、各ページの reserve 部(IV と HMAC)を考慮して整合性チェックを実施します。リアルタイム監視は、メモリ監視とファイル監視を組み合わせ、メッセージ受発信や DB 更新を捕捉して即時に平文データへアクセスできるようにする仕組みを提供します。実装は Python ベースで、Windows API を使ったプロセスメモリ読み取りやバイナリパターン検索、HMAC 検証、SQLCipher 用の復号処理に必要な処理をまとめています。倫理的・法的配慮も重要であり、権限のない環境での使用は違法またはプライバシー侵害となり得るため、許諾のある調査やフォレンジックの範囲で利用することが推奨されます。(約700字)

プロジェクトの構成

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

  • .gitignore: file
  • README.md: file
  • USAGE.md: file
  • config.example.json: file
  • config.py: file

…他 6 ファイル

まとめ

プロセスメモリから派生キーを抽出して SQLCipher 4 を復号する、実務的な WeChat フォレンジックツールです。(約50字)

リポジトリ情報:

READMEの抜粋:

WeChat 4.0 Database Decryptor

微信 4.0 (Windows) 本地数据库解密工具。从运行中的微信进程内存提取加密密钥,解密所有 SQLCipher 4 加密数据库,并提供实时消息监听。

原理

微信 4.0 使用 SQLCipher 4 加密本地数据库:

  • 加密算法: AES-256-CBC + HMAC-SHA512
  • KDF: PBKDF2-HMAC-SHA512, 256,000 iterations
  • 页面大小: 4096 bytes, reserve = 80 (IV 16 + HMAC 64)
  • 每个数据库有独立的 salt 和 enc_key

WCDB (微信的 SQLCipher 封装) 会在进程内存中缓存派生后的 raw key,格式为 x'<64hex_enc_key><32hex_salt>'。本工具通过扫描进程内存中的这种模式,匹配数据库文件的 salt,并通过 HMAC 验证来提取正确的密钥。

使用方法

环境要求