performing-sqlite-database-forensics
Faz seu agente analisar bancos de dados SQLite forensicamente. Ele recupera dados excluídos e extrai evidências de históricos e aplicativos.
O que ela faz
Esta ferramenta ajuda a investigar bancos de dados SQLite, que são usados por muitos aplicativos para guardar informações. Ela procura por dados que foram apagados ou que ainda não foram salvos definitivamente, como histórico de navegação ou mensagens.
Quando usar
- ✓Ao investigar um incidente de segurança.
- ✓Ao testar a segurança de aplicativos que usam SQLite.
- ✓Ao tentar recuperar informações perdidas de um banco de dados.
Exemplo do que pedir para a IA
“Recupere os dados apagados do banco de dados do WhatsApp.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta examina a estrutura interna do banco de dados SQLite, procurando por partes de dados que foram marcadas como apagadas mas ainda não foram removidas. Ela também analisa arquivos de log que registram as mudanças antes de serem confirmadas.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill performing-sqlite-database-forensicsOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/performing-sqlite-database-forensics/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Realizando Forense em Bancos de Dados SQLite
Visão Geral
SQLite é o motor de banco de dados mais amplamente implantado no mundo, usado por praticamente todos os aplicativos móveis, navegadores web e muitos aplicativos desktop para armazenar dados do usuário. Em forense digital, bancos de dados SQLite são fontes críticas de evidências contendo histórico de navegação, registros de mensagens, registros de chamadas, locais GPS, preferências de aplicativos e conteúdo em cache. A análise forense vai além de simples consultas SQL para examinar as estruturas internas de páginas B-tree, páginas de lista livre (freelist) contendo registros excluídos, arquivos Write-Ahead Log (WAL) preservando o histórico de transações e espaço não alocado dentro das páginas do banco de dados onde dados recuperáveis podem persistir após a exclusão.
Quando Usar
- Ao realizar avaliações de segurança que envolvam forense em bancos de dados SQLite
- Ao seguir procedimentos de resposta a incidentes para eventos de segurança relacionados
- Ao realizar testes de segurança ou atividades de auditoria agendadas
- Ao validar controles de segurança através de testes práticos
Pré-requisitos
- DB Browser for SQLite (sqlitebrowser)
- Ferramentas de linha de comando SQLite (sqlite3)
- Python 3.8+ com o módulo sqlite3
- Belkasoft Evidence Center ou Axiom (comercial)
- Editor hexadecimal (HxD, 010 Editor) para inspeção manual de páginas
- Compreensão de estruturas de dados B-tree
Estrutura Interna do SQLite
Cabeçalho do Banco de Dados (Primeiros 100 Bytes)
| Offset | Tamanho | Descrição |
|---|---|---|
| 0 | 16 | String mágica: "SQLite format 3\000" |
| 16 | 2 | Tamanho da página (512-65536 bytes) |
| 18 | 1 | Versão de escrita do formato do arquivo |
| 19 | 1 | Versão de leitura do formato do arquivo |
| 24 | 4 | Contador de alterações do arquivo |
| 28 | 4 | Tamanho do banco de dados em páginas |
| 32 | 4 | Número da primeira página tronco da lista livre |
| 36 | 4 | Total de páginas da lista livre |
| 52 | 4 | Codificação de texto (1=UTF-8, 2=UTF-16le, 3=UTF-16be) |
| 96 | 4 | Número de versão válida para |
Tipos de Página
| Tipo | ID | Descrição |
|---|---|---|
| Interior B-tree | 0x05 | Nó interno de tabela |
| Folha B-tree | 0x0D | Página folha de tabela contendo registros reais |
| Interior de Índice | 0x02 | Nó interno de índice |
| Folha de Índice | 0x0A | Página folha de índice |
| Tronco da Lista Livre | - | Rastreia páginas liberadas |
| Folha da Lista Livre | - | Página liberada com dados recuperáveis |
| Overflow | - | Continuação de registros grandes |
Recuperação de Registros Excluídos
Método 1: Análise de Página da Lista Livre
Quando registros são excluídos, o SQLite pode colocar suas páginas na lista livre (freelist) em vez de sobrescrevê-las imediatamente.
import struct
import sqlite3
import os
def analyze_freelist(db_path: str) -> dict:
"""Analisa a lista livre do SQLite para identificar páginas contendo dados excluídos."""
with open(db_path, "rb") as f:
# Lê o cabeçalho
header = f.read(100)
page_size = struct.unpack(">H", header[16:18])[0]
if page_size == 1:
page_size = 65536
first_freelist_page = struct.unpack(">I", header[32:36])[0]
total_freelist_pages = struct.unpack(">I", header[36:40])[0]
freelist_info = {
"page_size": page_size,
"first_freelist_page": first_freelist_page,
"total_freelist_pages": total_freelist_pages,
"trunk_pages": [],
"leaf_pages": []
}
if first_freelist_page == 0:
return freelist_info
# Percorre a cadeia de troncos da lista livre
trunk_page = first_freelist_page
while trunk_page != 0:
offset = (trunk_page - 1) * page_size
f.seek(offset)
page_data = f.read(page_size)
next_trunk = struct.unpack(">I", page_data[0:4])[0]
leaf_count = struct.unpack(">I", page_data[4:8])[0]
leaves = []
for i in range(leaf_count):
leaf_page = struct.unpack(">I", page_data[8 + i * 4:12 + i * 4])[0]
leaves.append(leaf_page)
freelist_info["trunk_pages"].append({
"page_number": trunk_page,
"next_trunk": next_trunk,
"leaf_count": leaf_count,
"leaf_pages": leaves
})
freelist_info["leaf_pages"].extend(leaves)
trunk_page = next_trunk
return freelist_info
def extract_freelist_content(db_path: str, output_dir: str):
"""Extrai o conteúdo bruto das páginas da lista livre para análise."""
info = analyze_freelist(db_path)
os.makedirs(output_dir, exist_ok=True)
with open(db_path, "rb") as f:
page_size = info["page_size"]
…
Perguntas frequentes
O que é um banco de dados SQLite?
É um tipo de banco de dados leve e simples, usado por muitos aplicativos em celulares e computadores para guardar informações.
O que são 'dados apagados' neste contexto?
São informações que existiam no banco de dados, mas que foram removidas. A ferramenta tenta encontrar esses dados antes que sejam permanentemente sobrescritos.
O que é um arquivo WAL?
WAL significa Write-Ahead Log. É um arquivo que registra as alterações feitas no banco de dados antes que elas sejam permanentemente salvas, ajudando na recuperação de dados.
Detalhes
Descrição original do autor
Performs forensic analysis of SQLite databases by examining B-tree page structures, recovering deleted records from freelist pages and Write-Ahead Log (WAL) files, decoding encoded timestamps, and extracting evidence from browser history, messaging apps, and mobile device databases. Use when recovering deleted or unallocated data from a SQLite database during digital forensics or mobile/browser ev
Popularidade
- Estrelas no GitHub
- 35 mil
- Posição no ranking
- #6146
- Licença
- Apache-2.0
- Atualizada em
- 31/08/2026
Comentários
- …
Mais skills deste repositório
abusing-dpapi-for-credential-access
Dá ao seu agente de IA instruções prontas para uma tarefa específica, para ele fazer melhor e mais rápido.
mukul975/Anthropic-Cybersecurity-Skills
abusing-shadow-credentials-for-privesc
Ensina seu agente de IA a escrever textos claros e bem estruturados.
mukul975/Anthropic-Cybersecurity-Skills
achieving-cmmc-level-2-compliance
Ajuda seu agente a preparar um ambiente para conformidade com CMMC Nível 2. Ele implementa requisitos de segurança e gerencia a documentação necessária.
mukul975/Anthropic-Cybersecurity-Skills
acquiring-disk-image-with-dd-and-dcfldd
Ajuda seu agente a criar cópias exatas de discos rígidos. Isso é útil para garantir que nenhuma informação seja perdida ou alterada durante investigações.
mukul975/Anthropic-Cybersecurity-Skills
Skills parecidas
clickhouse-io
Ajuda seu agente a otimizar consultas e esquemas no banco de dados ClickHouse. Ele aplica as melhores práticas para cargas de trabalho analíticas de alta performance. Use quando consultas analíticas demoram muito.
affaan-m/ECC
scientific-db-pubmed-database
Ajuda seu agente a buscar artigos científicos na área biomédica. É útil para pesquisas que precisam de informações médicas específicas.
affaan-m/ECC
scientific-db-uspto-database
Permite ao agente consultar dados oficiais de patentes e marcas registradas dos EUA. É útil para pesquisas de propriedade intelectual.
affaan-m/ECC