Whatsapp 47 988618255
Compartilhe
- Gerar link
- X
- Outros aplicativos
Recuperar mensagens apagadas do WhatsApp
Recuperar mensagens apagadas do WhatsApp usando o incremento Msgstore
forense em 31 de março de 2025

Recentemente, ao analisar um smartphone Android , foi necessário recuperar mensagens apagadas pertencentes a um chat excluído do aplicativo WhatsApp . Até recentemente, mesmo realizando uma análise usando softwares profissionais como Cellebrite UFED, Oxygen Forensic Detective e Magnet Axiom, não era possível recuperar esse chat porque ele foi excluído antes de ser inserido no backup periódico local clássico do banco de dados “msgstore.db” e, portanto, não era visível com métodos padrão de recuperação de dados.
Recentemente, foi adicionada aos softwares de perícia forense móvel a funcionalidade de recuperar chats não presentes em backups periódicos, mas acreditamos ser útil ilustrar em detalhes como era possível, mesmo antes da adição, – e ainda é – proceder manualmente à inspeção dos arquivos relacionados ao aplicativo WhatsApp e recuperar chats excluídos.
Especificamente, ilustraremos como recuperar uma parte do chat – não presente no BD ou em backups tradicionais – graças à análise de outro arquivo de backup, incremental e não completo: o “ msgstore-increment.db “.
O que é msgstore-increment.db e para que ele é usado?
O aplicativo WhatsApp, quando instalado em dispositivos Android, faz backups periódicos do banco de dados principal “msgstore.db” , que contém todas as informações relacionadas à conta do WhatsApp, incluindo mensagens.
Infelizmente, criar backups e gerenciá-los, em alguns casos, pode ser difícil para o aplicativo, especialmente em situações em que os dados gerenciados têm centenas de MB, se não GB. Por isso, para minimizar a perda de dados e otimizar o gerenciamento de memória do aparelho, o WhatsApp realiza backups incrementais entre cada backup completo, nos quais são salvas apenas as alterações ocorridas no aplicativo : por exemplo, se cem mensagens forem enviadas no dia seguinte ao backup completo, elas serão incluídas no backup incremental realizado naquele dia.
Isso significa que se cem mensagens forem enviadas após o backup completo ter sido criado e depois excluídas, elas poderão ser recuperadas do backup incremental, desde que não tenham sido excluídas antes de sua criação.
Atualmente, softwares profissionais como o Cellebrite UFED ou o Oxygen Forensics oferecem suporte à análise do backup incremental msgstore-increment, mas até alguns meses atrás esse provavelmente era um recurso em andamento, pois apareceu recentemente. Consequentemente, antigamente, para tentar recuperar mensagens apagadas, era necessário entender a lógica por trás desse tipo de dado e criar um script capaz de automatizar a extração de quaisquer mensagens apagadas, mas ainda presentes no incremento , enquanto hoje, quem tem um software profissional disponível pode realizar a recuperação diretamente pelas funções internas.
Como funciona e como extraio dados do arquivo msgstore-increment.db ?
O primeiro passo foi nos aprofundar em como o backup incremental funciona, tendo primeiro replicado um cenário em que esse recurso gerava incrementos. Ao analisar os dados gerados pelo aplicativo WhatsApp, foram identificados e analisados diversos arquivos denominados “msgstore-increment.db.crypt14”, que são arquivos compactados e criptografados. Esses arquivos foram descriptografados utilizando a ferramenta “wa-crypt-tools” ( https://github.com/ElDavoo/wa-crypt-tools ) e, posteriormente, descompactados, obtendo-se arquivos estruturados em formato JSON e um arquivo binário denominado “messages.bin”.

Conteúdo do arquivo msgstore-increment.db.crypt14, backup incremental
Entre os arquivos JSON, há um chamado “header.json” que contém informações úteis relacionadas aos outros arquivos na pasta, incluindo “messages.bin”. Além disso, a partir da análise realizada no arquivo binário, foi possível determinar o formato utilizado para codificação dos dados, ou seja, o protocolo protobuf.
Protobuf é um formato de serialização de dados desenvolvido pelo Google e é frequentemente usado na transmissão de informações entre aplicativos ou para armazenar dados em formato binário porque é mais leve e tem melhor desempenho que JSON ou XML.
O funcionamento é relativamente simples, é necessário definir a estrutura dos dados criando um arquivo “.proto” e utilizar um compilador para criar um script capaz de codificar os dados com base no protocolo definido. Abaixo está um exemplo de uma definição de protocolo:

Exemplo de definição para protobuf
Neste caso, um script baseado nesta definição será capaz de criar um arquivo binário contendo os dados de “nome” e “idade” informados no arquivo protobuf.
O mesmo acontece no aplicativo WhatsApp: o arquivo binário “messages.bin” é criado a partir de um trecho de código contido no aplicativo e tem como base um arquivo “proto” dentro do qual é definida a estrutura das mensagens e conversas.
Além disso, o arquivo binário “messages.bin” é estruturado com uma ou mais porções de dados binários codificados em protobuf, tais porções também são chamadas de segmentos ou “delimitados por comprimento” ( https://protobuf.dev/programming-guides/encoding/#length-types ). Portanto, para ler o conteúdo do arquivo é necessário primeiro separar os vários segmentos e depois prosseguir com a leitura.

Representação de segmentos contidos no arquivo messages.bin
Para separar cada segmento individual presente no arquivo “messages.bin” criamos um script python, que disponibilizamos em nosso repositório GitHub ( https://github.com/Forenser-lab/wa-increment-decoder/blob/main/splitter.py ), capaz de ler o arquivo “messages.bin” e criar diferentes arquivos binários, cada um contendo os dados protobuf (segmento) a serem lidos.
Em seguida, para ler cada arquivo individual, usamos a ferramenta “protobuf inspector” ( https://github.com/mildsunrise/protobuf-inspector ), um script capaz de ler um arquivo binário codificado com protobuf:

Saída da ferramenta protobuf_inspector
Embora tenha sido possível extrair as diversas mensagens contidas nos segmentos, elas acabaram sendo uma agregação de dados “anônimos”. Embora alguns dos dados obtidos na extração do bate-papo contivessem campos com significado intuitivo, como o texto da mensagem ou o registro de data e hora, outros eram desconhecidos, dificultando a determinação de seu significado real. Isso acontece porque não temos a definição do protocolo “proto” utilizado pelo Meta e capaz de ler corretamente os dados contidos no arquivo binário.
No entanto, existem vários projetos de engenharia reversa online que visam definir o protocolo usado no WhatsApp, incluindo o do repositório Wa-Proto GitHub ( https://github.com/wppconnect-team/wa-proto ) realizado na versão web do software. Posteriormente, tentando adaptar sua definição ao nosso propósito, conseguimos decodificar corretamente todo o conteúdo do arquivo binário “messages.bin” obtendo todos os dados em texto simples com seu significado relativo.
Neste ponto, era simples criar um script que pudesse gerar um arquivo CSV contendo todas as mensagens no binário , indicando se uma mensagem havia sido excluída. Observe que foram realizados alguns testes que também consideraram mídias (imagens, vídeos, etc.) e em alguns casos na pasta descriptografada e descompactada relacionada ao incremento há a pasta “messages.bin” contendo miniaturas de imagens excluídas (as atualizações subsequentes terão como objetivo verificar até que ponto é possível recuperar mídias ou vestígios delas).
Prova de conceito de descriptografia e análise de msgstore-increment.db
Primeiro, o cenário foi reproduzido: inicializamos um novo chat, o utilizamos por alguns dias e então finalmente o excluímos, evitando que ele ficasse armazenado no backup “msgstore.db”. Graças a essa reprodução, embora as mensagens de bate-papo não tenham sido incluídas no backup semanal, elas ainda foram incluídas no backup incremental diário.
A imagem a seguir mostra uma ilustração do cenário reproduzido. Especificamente, você pode ver como o backup principal é criado às 02:00 da manhã do dia 01/10 e, às 01:35 da tarde do mesmo dia, uma conversa com o ID 123 é criada, a qual será incluída no backup incremental às 02:00 da manhã do dia 01/11. Por fim, às 16:00 do dia 01/11 o chat com ID 123 é deletado (mas ainda está presente no backup incremental criado anteriormente):

Cronograma do cenário de referência
Posteriormente, os backups incrementais foram extraídos do dispositivo Android, geralmente contidos no diretório “/data/media/0/Android/media/com.whatsapp/WhatsApp/Databases/” e devidamente descriptografados utilizando a chave de criptografia apropriada, obtendo-se assim os seguintes arquivos:
- msgstore-incremento-1-2025-01-16.1.db;
- msgstore-incremento-2-2025-01-16.1.db;
- msgstore-incremento-3-2025-01-16.1.db;
- msgstore-incremento-4-2025-01-16.1.db.
Os vários backups foram todos inseridos na mesma pasta e então o script que criamos para recuperar as mensagens foi executado, o que gerou um arquivo CSV contendo a lista de todas as mensagens extraídas:

Gerar arquivo CSV contendo mensagens recuperadas
Conclusões
Graças a uma análise aprofundada do gerenciamento de backup no aplicativo WhatsApp para dispositivos Android, conseguimos entender como eles são estruturados por meio do conceito de backups incrementais . A análise nos levou a criar uma pequena ferramenta, escrita em python, capaz de extrair mensagens do backup incremental “ msgstore-increment.db ” de forma estruturada e eficiente, com detalhes relevantes como o timestamp e sem a necessidade de utilizar outras ferramentas.
O recurso de backup incremental permite a recuperação de mensagens excluídas entre a criação de um backup local completo, “msgstore.db.crypt14” e outro, portanto não recuperáveis por meio de técnicas tradicionais de análise forense e não excluídas do banco de dados sqlite ou de backups.
Para quem quiser experimentar ou tentar a extração dessas mensagens, deixamos abaixo o link do script para download no nosso repositório no GitHub ( https://github.com/Forenser-lab/wa-increment-decoder ).
- Categoria: WhatsApp , Aplicativos Móveis , Notícias , Software
- Tag: android , axiom , backup , cellebrite , recuperação de dados , banco de dados , forense digital , incremento , indagini digitali , informatica forense , magnet , msgstore , msgstore-increment.db , oxygen , protobuf , python , recupero , sqlite , ferramenta , ufed , WhatsApp
OSINT NEWS NO X
Postagens mais visitadas
Comandos Google Dorks
- Gerar link
- X
- Outros aplicativos
ELICITAÇÃO PROFISSIONAL AVANÇADA
- Gerar link
- X
- Outros aplicativos
Lamborghini Gallardo V10
- Gerar link
- X
- Outros aplicativos

Comentários
Postar um comentário