Script em Python para descriptografar arquivos de mídia do WhatsApp (.enc) utilizando a media_key armazenada no banco de dados msgstore.db.
Este script foi desenvolvido para fins de computação forense, permitindo recuperar mídias a partir das URLs presentes na tabela message_media.
python decrypt_media.py [arquivo_entrada] [tipo_midia] [media_key] [arquivo_saida]
image
video
audio
document
python decrypt_media.py media.enc image 563d2a84e4af8b68a298d900b8bc7e0b273bc2f4e3a9ac11774e4e6a63623495 output.jpg
Saída esperada:
:: DECRYPT WHATSAPP MEDIA
Input: media.enc
Type: image
Key: 563d2a84e4af8b68...
Output: output.jpg
IV: ...
cipherKey: ...
macKey: ...
Decryption successful.
Durante a análise do banco de dados do WhatsApp (msgstore.db), a tabela:
message_media
contém informações relevantes sobre arquivos de mídia, incluindo:
media_urlmedia_key
Mesmo após a visualização de mídias (incluindo visualização única), esses registros podem permanecer armazenados no banco.
A media_url permite baixar o arquivo criptografado:
.enc
Para recuperar o conteúdo original, é necessário:
- Baixar o arquivo
.enc - Extrair a
media_key - Derivar as chaves de criptografia
- Descriptografar o arquivo usando AES-CBC
Este script automatiza esse processo.
O WhatsApp usa o seguinte processo:
- Cada mídia possui uma media_key (32 bytes).
- Essa chave é derivada via HKDF-SHA256.
- O resultado gera:
IV (16 bytes)
Cipher Key (32 bytes)
MAC Key (32 bytes)
Ref Key (32 bytes)
O arquivo .enc possui a estrutura:
ciphertext || mac
Onde:
macpossui 10 bytes- o restante é o ciphertext AES-CBC
Python 3.8+
Bibliotecas:
cryptography
Instalação:
pip install cryptographypython decrypt_media.py [input_file] [file_type] [media_key] [output_file]
| Argumento | Descrição |
|---|---|
input_file |
arquivo .enc baixado da media_url |
file_type |
tipo da mídia |
media_key |
chave hexadecimal presente no msgstore.db |
output_file |
nome do arquivo de saída |
image
video
audio
document
Esses valores definem o parâmetro info do HKDF usado pelo WhatsApp.
O script executa as seguintes etapas:
Utiliza argparse para receber os parâmetros da linha de comando.
A media_key é expandida com:
HKDF-SHA256
gerando:
iv
cipher_key
mac_key
ref_key
O script remove o MAC:
ciphertext = enc_file[:-10]
Algoritmo utilizado:
AES-256-CBC
O WhatsApp utiliza:
PKCS7
O conteúdo é salvo no arquivo especificado pelo usuário.
Este script pode ser utilizado em:
- análise forense de dispositivos móveis
- investigação de conteúdo de mensagens
- recuperação de mídia apagada
- análise de mensagens de visualização única
- reconstrução de evidências digitais
Ferramentas forenses frequentemente utilizam o mesmo processo internamente, como:
- Cellebrite
- Oxygen
- Magnet AXIOM
- Avilla Forensics
- Não realiza verificação do MAC.
- Requer a
media_keyválida. - O arquivo
.encdeve estar completo.
Este projeto destina-se exclusivamente para fins educacionais e de investigação forense legítima.
O uso indevido para acessar dados de terceiros sem autorização pode violar leis de privacidade e crimes informáticos.
Utilize apenas em:
- investigações autorizadas
- perícia judicial
- pesquisa acadêmica
- WhatsApp Media Encryption
- Signal Protocol
- HKDF RFC 5869
- AES CBC Mode
- WhatsApp Reverse Engineering Research