Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
wa-crypt-tools — WhatsApp の .crypt12、.crypt14、.crypt15 ファイルを管理します。 | Kitploit
ツール/GitHubGitHub/eldavoo/wa-crypt-tools
Androidセキュリティ暗号化/復号化ツールモバイルフォレンジックデータ復旧デジタルフォレンジック暗号化
GitHubeldavoo/wa-crypt-tools

wa-crypt-tools

WhatsApp の .crypt12、.crypt14、.crypt15 ファイルを管理します。

リポジトリを見る
1.1k15712515日前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Coverage Status

WhatsApp Crypt Tools

WhatsAppおよびWA Businessの.crypt12、.crypt14、.crypt15ファイルを簡単に復号・暗号化できます!
復号には、キーファイルまたは64文字のキー (またはそのスクリーンショット)が必要です。
キーファイルの名前は、バックアップがcrypt14の場合は「key」、
バックアップがcrypt15(暗号化されたE2Eバックアップ)の場合は「encrypted_backup.key」です。
WhatsAppフォレンジック向けのより完全なスイートをお探しの方は、whapaをご覧ください。

クイックインストール

クラウド - Google Colab

コンピュータにプログラムをインストールしたくない場合は、このプログラムを Google Colabで実行 できます。

ローカル - Jupyter

Jupyterに慣れている場合(そうでない場合は こちら をお読みください)、プログラムの ノートブック版 を使用できます。

ローカル - pip

このスクリプトはpip経由でパッケージとしてインストールできます。安定版をインストールするには、次を実行してください:

python -m pip install wa-crypt-tools

開発版をインストールするには:

python -m pip install git+https://github.com/ElDavoo/wa-crypt-tools

他のパッケージとの競合を避けるために、仮想環境を作成する必要があるかもしれません。

ウィンドウ: wagui

ターミナルをまったく使いたくない場合は、waguiはバックアップを復号する小さなウィンドウです: キーを選び、バックアップを選び、Decryptを押すだけです。

The wagui window

ダウンロードしてダブルクリックするだけです。 各 リリースには、Pythonもインストールも不要な 自己完結型ビルドが含まれています:

ファイル対象
wagui-windows-x64.exeWindows
wagui-macos-arm64.zipmacOS (Apple Silicon)
wagui-linux-x64Linux(先にchmod +xしてください)

macOSビルドはコード署名されていないため、初回起動時にmacOSが拒否します:アプリを右クリックして Openを選択し、確認してください。

すでにpipでパッケージをインストールしている場合、同じウィンドウはコマンド1つで起動できます:

wagui

Linuxでは、pipインストールにはディストリビューションのtkinterパッケージも必要です(Debian/Ubuntuではpython3-tk、 Fedoraではpython3-tkinter)-- これはPythonの一部ですが別々にパッケージ化されています。 ダウンロード可能なビルドには組み込まれており、何も必要ありません。

このウィンドウは復号をカバーしており、ほとんどの人がこれを目的としています。また、ファイルを選択するとすぐに wainfoと同じようにそのファイルの情報を表示します。暗号化、キーファイルの作成、オフセットの推測は 以下のコマンドラインツールに残っています。

クイックスタート

wadecryptでファイルを復号する

usage: wadecrypt [-h] [-nm] [-bs BUFFER_SIZE] [-nd] [-v] [-f] [-y] [keyfile] [encrypted] [decrypted]

つまり、crypt12/14/15を復号するには、キーファイル、暗号化されたファイル、出力ファイル名をプログラムに渡します。 既に存在するファイルには上書きしません。それを望む場合は-y/--yesを渡してください。

例

$ wadecrypt encrypted_backup.key msgstore.db.crypt15 msgstore.db
key15.py:51     : [I] Crypt15 / Raw key loaded
wadecrypt.py:271        : [I] Done

waencryptでファイルを暗号化する(BETA)

usage: waencrypt [-h] [-f] [-y] [-v] [--enable-features [ENABLE_FEATURES ...]] [--max-feature MAX_FEATURE]
                 [--multi-file] [--type {12,14,15}] [--iv IV] [--reference REFERENCE] [--noparse]
                 [--wa-version WA_VERSION] [--jid JID] [--backup-version BACKUP_VERSION] [--no-compress]
                 [-c [0-9]] [keyfile] [decrypted] [encrypted]

waencryptは既に存在するファイルには上書きしません。それを望む場合は-y/--yesを渡してください。

--referenceを使用すると、waencryptは参照されたバックアップをバイト単位で再現します:IV、 ヘッダー(このライブラリがモデル化していないフィールドを含む)、圧縮レベルはすべてそこから取得されるため、 未変更のデータベースを再暗号化すると、最初と同じmd5が返されます。

-c/--compression-levelはzlibレベルで、デフォルトは9です。これはWhatsAppが現在使用しているものです。 歴史的には1で圧縮していました。--referenceを使用するとレベルは参照から取得されるため、 古いバックアップの再現に追加の操作は不要です。上書きするには-cを渡してください。

暗号化はより複雑で未テストです:同じアカウントの別の暗号化ファイル(これを「参照」と呼びます)を 使用することをお勧めします。

参照ファイルを使用する場合(データベースcrypt15のみテスト済み)

waencrypt --reference msgstore.db.crypt15 encrypted_backup.key msgstore.db msgstore-new.db.crypt15
waencrypt.py:57         : [W] This script is in beta stage
waencrypt.py:89         : [I] Done!

参照ファイルを使用しない場合

以下のパラメータを指定する必要があります:

  1. 機能リスト:2019年以降のデータベースのみ。これらは実際にはWhatsAppがヘッダーに記録する データベース移行フラグであり、データベースファイルから推測する方法はありません。 デフォルトは2.26.34.7のmsgstoreが持つもので、すべての機能です。 msgstoreのみがこれらを持ちます。他のすべてのバックアップ -- wa.db、stickers.db、その他の WhatsApp/Backups/ -- は機能情報をまったく持たず、これがwainfoが 「No feature table found (not a msgstore DB or very old)」と言う意味です。その形状の ヘッダーを書き込むには、--enable-featuresの後に何も渡さずに指定します:空のリストは 移行フラグもバックアップバージョンも書き込まず、--max-featureは何もしなくなります。
  2. 最大機能番号。執筆時点では39です
  3. ファイルを暗号化したアプリのバージョン:デフォルトは2.26.34.7です。
  4. Jid:電話番号の最後の2桁 -- これは本当にあなた自身のもので、デフォルトは00です
  5. バックアップバージョン:1を使用してください。

パラメータを省略するとデフォルトが使用され、それらは実際の2.26.34.7 バックアップから取得されています:適切な--ivと--jidがあれば、waencryptは参照なしで 電話機と同じヘッダーバイトを書き込みます。それでも--referenceを渡す方が良い方法です。既に持っている バックアップからIV、圧縮レベル、ヘッダー全体を取得するからです。

まとめると:

$ waencrypt --enable-features 5 6 7 8 9 10 11 12 13 14 15 16
 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 --type 15 --wa-version 2.26.34.7 --jid 00 --backup
-version 1 encrypted_backup.key msgstore.db msgstore-new.db.crypt15 
waencrypt.py:57         : [W] This script is in beta stage
waencrypt.py:89         : [I] Done!

バックアップファイルの情報はwainfoツールで取得できます。

スクリーンショットからキーを読み取る

WhatsAppは64桁のキーを一度だけ表示し、二度と表示しないため、ほとんどの人はスクリーンショットを撮ります。 そのスクリーンショットをキーファイルを渡す場所ならどこでもツールに渡すことができます -- 特別なフラグはなく、 ツールが渡されたものを判別します:

$ wadecrypt Screenshot_20260901-184609_WhatsApp.png msgstore.db.crypt15 msgstore.db
ocr.py:503      : [I] Reading the key from the screenshot, this takes a few seconds...
key15.py:55     : [I] Crypt15 / Raw key loaded
wadecrypt.py:301        : [I] Done

キーだけを読み取りたい場合は、wainfo -k <screenshot>がキーだけを出力します。waguiも スクリーンショットを受け付けます:キーファイルを選ぶ場所でそれを選んでください。

これはオプションであり、2つのものをインストールする必要があります:

python -m pip install 'wa-crypt-tools[ocr]'

さらにTesseractプログラム自体 -- Debian/Ubuntuではsudo apt install tesseract-ocr、 macOSではbrew install tesseract、Windowsではwinget install UB-Mannheim.TesseractOCRです。 これらがなくても他のことは何も変わりません。画像を渡した場合にのみインストールするよう案内されます。

桁が間違っている場合

wadecryptは使用前にキーをバックアップに対してチェックし、適合しない場合は、 静かにニアミスを探して、機能するものを使用して続行します。1桁の誤りは常に見つかります。 これについて何も通知されません。あなたが何かする必要はないからです -- 確認したい場合は-vを付けて実行してください。 候補は、実際にバックアップの先頭を復号できた場合にのみ受け入れられるため、ここで使用される推測はありません。

これは直接入力された64桁にも適用され、スクリーンショットだけに限りません -- これは同じ間違いです。 桁は通常、そもそもスクリーンショットから入力されるからです。そこでは手作業でのコピーに特有の ミスも試します:2桁の入れ替わり、2つのグループの入れ替わり、4x4グリッドを行ではなく列方向に 読んでしまった場合。これらすべてに約1秒かかります。単に間違ったキーの場合は、通常のエラーの前に 2秒かかります。

キーファイルは決して再推測されません。その桁は誰も転記していないため、正しいファイルか 間違ったファイルかのどちらかです。

それでも失敗した場合は、その旨と対処方法を伝えます:

[C] Could not read the key from the screenshot: what it says does not decrypt this backup,
    and neither does any near miss of it.
    Transcribe the 64 digits from the screenshot by hand and pass those instead of the image.

他に知っておくべきこと:

  • 元のスクリーンショットを渡してください。画面の写真や、何かによって縮小されたバージョンでは ありません。キーだけにトリミングするのは問題なく、しばしば役立ちます。
  • キー画面を読み取ります:4行の4グループ、または64桁になるその他のレイアウト。汎用OCRではなく、 文章で書かれたキーを見つけることはありません。
  • wainfo -kには照合するバックアップがないため、何も修復できません -- 読み取ったものを出力し、 あなた自身が画像と比較します。

ツール一覧

使用方法については、ツールを-hオプション付きで実行してください。 0) wagui - ウィンドウ(上記参照)。コマンドラインツールではない唯一のものです

  1. wacreatekey - キーファイルを作成
  2. wadecrypt - バックアップを復号
  3. waencrypt - バックアップを暗号化
  4. waguess - バックアップの復号を試みるハッキーな方法
  5. wainfo - バックアップの情報を取得

ライブラリとして使用する

ツールが行うすべてのことはimport wa_crypt_toolsを通じて利用できます。

from wa_crypt_tools import DatabaseFactory, KeyFactory, IntegrityError
import zlib

key = KeyFactory.new("encrypted_backup.key")  # a key file, or the 64-character key itself

with open("msgstore.db.crypt15", "rb") as f:
    # Reads the header and leaves the stream at the start of the ciphertext.
    db = DatabaseFactory.from_file(f)
    plaintext = db.decrypt(key, f.read())

# The payload is usually zlib-compressed; a multi-file backup is a ZIP instead.
open("msgstore.db", "wb").write(zlib.decompress(plaintext))

バージョン -- crypt12、crypt14、crypt15 -- はファクトリがキーとファイルヘッダーから 判別します。クラスを選択する必要はありません。

エラー

ライブラリが発生させるすべてのエラーはWaCryptErrorから派生しており、それ自体がValueErrorです:

ツールをダウンロード