O WeChat, como o aplicativo de mensagens instantâneas móvel mais popular na China, não fornece nenhum método para exportar o histórico estruturado de mensagens.
Fizemos engenharia reversa do protocolo de armazenamento de mensagens WeChat e fornecemos esta ferramenta para descriptografar e analisar mensagens WeChat em um telefone Android com acesso root. Ele também pode renderizar as mensagens em arquivos HTML independentes, incluindo mensagens de voz, imagens, emojis, vídeos, etc.
A última verificação da ferramenta para funcionar com a versão mais recente do wechat foi em 01/01/2025. Se a ferramenta funcionar para você, reserve um momento para adicionar seu telefone/sistema operacional ao wiki.
./third-party/compile_silk.sh
)pip install -r requirements.txt
. ./android-interact.sh db
. Pode usar um ID de usuário incorreto.${userid}
inspecionando o conteúdo de /data/data/com.tencent.mm/MicroMsg
no sistema de arquivos raiz do dispositivo. Deve ser um nome de 32 caracteres composto por dígitos hexadecimais./data/data/com.tencent.mm/MicroMsg/${userid}/EnMicroMsg.db
do dispositivo../decrypt-db.py decrypt --input EnMicroMsg.db
Obtenha o WeChat uin (um número inteiro), as formas possíveis são:
./decrypt-db.py uin
, que procura uin em /data/data/com.tencent.mm/shared_prefs/
document.cookie
Obtenha o ID do seu dispositivo (um número inteiro positivo). As formas possíveis são:
./decrypt-db.py imei
implementa algumas maneiras de encontrar o ID do dispositivo.*#06#
no seu telefoneDescriptografe o banco de dados com a combinação de uin e ID do dispositivo:
./decrypt-db.py decrypt --input EnMicroMsg.db --imei <device id> --uin <uin>
NOTA: pode ser necessário tentar diferentes maneiras de obter a identificação do dispositivo e encontrar uma que possa descriptografar o banco de dados. Alguns telefones podem ter vários IMEIs, talvez seja necessário experimentar todos eles. Consulte o nº 33. O comando despejará o banco de dados descriptografado em EnMicroMsg.db.decrypted
.
Se a descriptografia acima não funcionar, você também pode tentar o cracker de senha para forçar a chave. A chave de criptografia não é muito forte.
Copie o diretório de recursos do usuário WeChat /data/data/com.tencent.mm/MicroMsg/${userid}/{avatar,emoji,image2,sfs,video,voice2}
do telefone para o diretório resource
:
./android-interact.sh res
RES_DIR
no script se a localização desses diretórios for diferente no seu telefone. Para versões mais antigas do wechat, o diretório pode ser /mnt/sdcard/tencent/MicroMsg/
tar
com ou sem compactação e depois copiar o arquivo. busybox tar
é recomendado, pois o tar
do sistema Android pode engasgar em caminhos longos.resource
com o seguinte subdiretório: avatar,emoji,image2,sfs,video,voice2
. (Opcional) Baixe o cache de emoji aqui e descompacte-o em wechat-dump
. Isso evitará o download de muitos emojis durante a renderização.
wget -c https://github.com/ppwwyyxx/wechat-dump/releases/download/0.1/emoji.cache.tar.bz2
tar xf emoji.cache.tar.bz2
Analise e despeje mensagens de texto de cada chat (requer banco de dados descriptografado):
./dump-msg.py decrypted.db output_dir
Listar todos os chats (banco de dados descriptografado obrigatório):
./list-chats.py decrypted.db
Gere relatório de estatísticas sobre mensagens de texto (requer output_dir
de ./dump-msg.py
):
./count-message.sh output_dir
Despeja mensagens de um contato em HTML, contendo mensagens de voz, emojis e imagens (requer banco de dados e resource
descriptografados):
./dump-html.py "<contact_display_name>"
O arquivo de saída é output.html
.
Verifique ./dump-html.py -h
para usar caminhos diferentes.
Capturas de tela do HTML gerado:
Veja aqui um exemplo de html.
grep 'TODO' wechat -R