
Gerencie arquivos .crypt12, .crypt14 e .crypt15 do WhatsApp.

Descriptografe e criptografe arquivos .crypt12, .crypt14 e .crypt15 do WhatsApp e do WA Business com facilidade!
Para descriptografar, você PRECISA do arquivo de chave ou da chave de 64 caracteres.
O arquivo de chave é chamado "key" se o backup for crypt14 ou
"encrypted_backup.key" se o backup for crypt15 (backups E2E criptografados).
Quem procura um conjunto mais completo para
forense de WhatsApp, confira whapa.
Se você não quiser instalar programas no seu computador, pode executar este programa no Google Colab .
Se você está familiarizado com Jupyter (leia aqui se não estiver), você pode usar a versão em notebook do programa.
Você pode instalar este script como um pacote via pip. Basta executar:
python -m pip install wa-crypt-tools
para a versão estável e
python -m pip install git+https://github.com/ElDavoo/wa-crypt-tools
para a versão de desenvolvimento.
Talvez seja necessário criar um ambiente virtual para evitar conflitos com outros pacotes.
usage: wadecrypt [-h] [-nm] [-bs BUFFER_SIZE] [-nd] [-v] [-f] [keyfile] [encrypted] [decrypted]
Então, para descriptografar um crypt12/14/15, fornecemos ao programa o arquivo de chave, o arquivo criptografado e o nome do arquivo de saída.
$ 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] [-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]
[keyfile] [decrypted] [encrypted]
A criptografia é mais complexa e não testada: é recomendado usar outro arquivo criptografado da mesma conta, que chamaremos de "referência".
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!
Você precisa fornecer os seguintes parâmetros:
Os valores padrão serão usados se os parâmetros forem omitidos.
Resumindo:
$ 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.1.2 --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!
Você pode obter informações sobre um arquivo de backup com a ferramenta wainfo.
Para uso, execute a ferramenta com a opção -h.
wacreatekey - Criar arquivos de chavewadecrypt - Descriptografar backupswaencrypt - Criptografar backupswaguess - Forma improvisada de tentar descriptografar backupswainfo - Obter informações sobre um backupNÃO! Qual seria o sentido de criptografar um arquivo caso contrário?
Veja acima.
Seus backups estão corrompidos. Você pode tentar desativar todas as verificações com a
flag -f, mas espere travamentos e/ou saída ilegível.
A chave está errada. Você pode tentar desativar todas as verificações com a
flag -f, mas espere travamentos e/ou saída ilegível.
wacreatekey para criar um arquivo encrypted_backup.keywadecrypt para descriptografar seus backups.Dessa forma, você gerenciará sua própria chave raiz - caso contrário, o WhatsApp pode alterar sua chave quando apropriado.
Não! A senha é usada apenas para se comunicar com os servidores do WhatsApp e recuperar
a chave de 64 letras.
Em outras palavras, a senha é usada para proteger a chave, não é usada
para criptografar os backups.
Sim, mas o código não está documentado, então, por favor, leia o código por enquanto.
Envie-me os arquivos necessários no Telegram e darei uma olhada.
Se você (compreensivelmente) tiver preocupações com privacidade, abra uma issue e anexe:
Mas será mais difícil ajudá-lo.
Em um dispositivo Android com root, você pode simplesmente copiar
/data/data/com.whatsapp/files/key
(ou /data/data/com.whatsapp/files/encrypted_backup.key se os backups forem crypt15).
Se você ativou os backups E2E e não usou uma senha
(você tem uma cópia da chave de 64 dígitos, por exemplo, uma captura de tela),
pode apenas transcrevê-la e usá-la no lugar do parâmetro de arquivo de chave.
Existem outras formas, mas não faz parte do escopo deste projeto
informá-las.
Issues pedindo isso serão fechadas como inválidas.
Não foi escrito nenhum artigo ou tese sobre este software, mas você pode citar este repositório online. Por favor, não diga "et al.", pois há (por enquanto) apenas um autor.
Veja o arquivo CITATION.cff para informações de citação.
@misc{wa-crypt-tools,
author = {ElDavoo},
title = {WhatsApp Crypt Tools},
year = {2022},
month = {06},
howpublished = {\url{https://github.com/ElDavoo/wa-crypt-tools}
}
@online{wa-crypt-tools,
author = {ElDavoo},
title = {WhatsApp Crypt Tools},
year = {2022},
month = {06},
url = {https://github.com/ElDavoo/wa-crypt-tools}
}
Estável:
2.24.16.76
Beta:
2.24.26.11
Estável:
2.24.23.78
Você pode instalar as dependências opcionais de proto para usar o protoletariat e corrigir as importações de proto automaticamente.
Primeiro, após clonar o repositório, faça uma instalação editável do pacote (possivelmente em um ambiente virtual) com:
pip install -e .[proto]
Isso também instalará as dependências opcionais do pacote.
Em seguida, baixe o compilador protobuf do repositório aqui.
Você pode mover o programa protoc para a pasta wa-crypt-tools/proto, onde estão os arquivos .proto.
Substitua as classes protobuf conforme necessário e execute protoc para gerar as classes python.
A partir do diretório wa-crypt-tools/proto do projeto, execute:
./protoc --python_out=../src/wa_crypt_tools/proto --proto_path=. *.proto
Depois de gerar as classes python do protobuf por meio do protoc, a partir do mesmo diretório execute:
protol --in-place --python-out ..\src\wa_crypt_tools\proto protoc --proto-path=. *.proto
Linux:
PATH="$(pwd):$PATH" protol --in-place --python-out ../src/wa_crypt_tools/proto protoc --proto-path=. *.proto
Agora todas as classes python geradas devem ter suas importações corrigidas.
Muito obrigado a cada um de vocês!
Qualquer outra pessoa que ajudou!