
Управление файлами WhatsApp .crypt12, .crypt14 и .crypt15.

Легко расшифровывайте и шифруйте файлы .crypt12, .crypt14 и .crypt15 WhatsApp и WA Business!
Для расшифровки вам НУЖЕН файл ключа или 64-символьный ключ
(или скриншот с ним).
Файл ключа называется "key", если резервная копия имеет формат crypt14, или
"encrypted_backup.key", если резервная копия имеет формат crypt15 (зашифрованные E2E-резервные копии).
Тем, кто ищет более полный набор инструментов для
криминалистического анализа WhatsApp, стоит обратить внимание на whapa.
Если вы не хотите устанавливать программы на свой компьютер, вы можете запустить эту программу в Google Colab .
Если вы знакомы с Jupyter (прочитайте здесь , если нет), вы можете использовать версию в виде блокнота этой программы.
Вы можете установить этот скрипт как пакет через pip. Просто выполните:
python -m pip install wa-crypt-tools
для стабильной версии и
python -m pip install git+https://github.com/ElDavoo/wa-crypt-tools
для версии в разработке.
Возможно, вам придётся создать виртуальное окружение, чтобы избежать конфликтов с другими пакетами.
Если вы вообще предпочитаете не использовать терминал, wagui — это небольшое окно, которое расшифровывает
резервную копию: выберите ключ, выберите резервную копию, нажмите «Расшифровать».

Скачайте его и дважды щёлкните по нему. Каждый релиз содержит автономную сборку, для которой не нужны ни Python, ни установка:
| Файл | Для |
|---|---|
wagui-windows-x64.exe | Windows |
wagui-macos-arm64.zip | macOS (Apple Silicon) |
wagui-linux-x64 | Linux (сначала выполните chmod +x) |
Сборка для macOS не подписана кодом, поэтому при первой попытке открыть её macOS откажется: щёлкните по приложению правой кнопкой и выберите Открыть, затем подтвердите.
Если вы уже установили пакет через pip, то же окно доступно одной командой:
wagui
В Linux установка через pip также требует пакета tkinter вашего дистрибутива (python3-tk в
Debian/Ubuntu, python3-tkinter в Fedora) — он является частью Python, но поставляется отдельно.
В загружаемой сборке он встроен и ничего не требует.
Окно охватывает расшифровку — то, ради чего большинство людей здесь и находится. Оно также сообщает, что
представляет собой файл, как только вы его выберете, так же, как это делает wainfo. Шифрование, создание файлов ключей и
подбор смещений остаются в инструментах командной строки, описанных ниже.
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
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, чтобы переопределить его.
Шифрование сложнее и не протестировано: рекомендуется использовать другой зашифрованный файл из той же учётной записи, который мы будем называть «референсом».
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!
Вам нужно указать следующие параметры:
wa.db, stickers.db, остальное из
WhatsApp/Backups/ — вообще не несёт информации о функциях, что wainfo обозначает
как "No feature table found (not a msgstore DB or very old)". Чтобы записать заголовок такой
формы, передайте --enable-features без чего-либо после него: пустой список не записывает ни
флаги миграции, ни версию резервной копии, и тогда --max-feature ничего не делает.Значения по умолчанию используются, если параметры опущены, и они взяты из реальной резервной копии
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