Uma ferramenta Python para coleta forense de metadados, conteúdo de texto, imagens, links e informações estruturadas de arquivos PDF, com geração de hashes de integridade e informações do sistema de arquivos.
- PDF Forensic Data Extractor
- 📑 Sumário
- 📌 Descrição
- 📦 Dependências
- 🛠️ Como Usar
- 📋 Relatório Gerado
- 📁 Estrutura de Saída
- 📊 Exemplo de Uso
⚠️ Avisos e Boas Práticas- 📚 Referências Técnicas
- 📖 Licença
- 👨💻 Autor
O ForenPDF realiza extração forense detalhada de informações de arquivos PDF para uso em investigações digitais e perícia, incluindo:
- file_size — tamanho do arquivo em bytes.
- created_time / modified_time — datas de criação e modificação do arquivo no sistema.
- hashes — MD5, SHA1, SHA256 para validação de integridade.
- pdf_version — versão do PDF extraída do cabeçalho.
- pages — lista com URLs, IPs e e-mails extraídos por página.
- images — informações das imagens extraídas (com hashes e OCR opcional).
- links — links identificados no texto e anotações.
- suspicious — referências a objetos suspeitos (JavaScript, arquivos embutidos).
- extracted_files — lista de arquivos embutidos extraídos.
- Python 3.8+
- PyMuPDF (fitz)
- Pillow (opcional, para OCR)
- pytesseract (opcional, para OCR)
- Bibliotecas nativas:
hashlibdatetimeosrejsonargparselogging
pip install PyMuPDF Pillow pytesseractExecute o script pelo terminal ou CMD:
python forenpdf.py arquivo.pdf --out ./saidaParâmetros principais:
| Parâmetro | Descrição |
|---|---|
pdf |
Caminho do PDF a analisar |
--out |
Pasta base para saída (opcional) |
--no-ocr |
Desativa OCR mesmo se disponível |
--max-xref |
Máximo de objetos XREF a inspecionar (padrão: 200) |
--no-embedded |
Não extrai arquivos embutidos |
--quiet |
Reduz a verbosidade do log |
O relatório JSON (*_manifest.json) gerado inclui:
{
"file_size": 123456,
"created_time": "2025-08-11 14:35:21",
"modified_time": "2025-08-11 14:35:21",
"hashes": {
"MD5": "...",
"SHA1": "...",
"SHA256": "..."
},
"pdf_version": "1.7",
"pages": [
{
"page_number": 1,
"urls": ["https://exemplo.com"],
"ips": ["192.168.0.1"],
"emails": ["contato@exemplo.com"]
}
],
"images": [
{
"page": 1,
"file": "extracted_images/p1_xref12.png",
"hash": "sha256...",
"size": 54321,
"xref": 12,
"ocr_snippet": "Texto OCR..."
}
],
"links": ["https://exemplo.com/link"],
"suspicious": {
"javascript_xrefs": [5, 20],
"embeddedfile_xrefs": [33]
},
"extracted_files": ["embedded_files/planilha.xls"]
}.
├── evidence_1691768483/
│ ├── original.pdf
│ ├── extracted_images/
│ │ ├── p1_xref12.png
│ │ └── ...
│ ├── embedded_files/
│ │ ├── arquivo_embutido.docx
│ └── reports/
│ ├── original_report.txt
│ └── original_manifest.json
python forenpdf.py "F:/Investigacao/Amostra.pdf" --out "./caso_amostra"Saída esperada:
✅ Evidência copiada para ./caso_amostra/original.pdf
✅ Manifest salvo em ./caso_amostra/reports/original_manifest.json
✅ Relatório TXT salvo em ./caso_amostra/reports/original_report.txt
✅ Imagens extraídas em ./caso_amostra/extracted_images
- Sempre gere e registre hashes antes e depois de manipular arquivos.
- Mantenha uma cópia imutável do arquivo original.
- Use ambiente controlado para processamento de PDFs potencialmente maliciosos.
- O OCR pode extrair texto sensível; revise antes de compartilhar.
- A extração de arquivos embutidos pode conter malware; analise com segurança.
- PDF Reference, Sixth Edition (Adobe Systems)
- PyMuPDF Documentation
- Digital Forensics Principles (Carrier, 2019)
MIT License. Uso livre para fins acadêmicos, profissionais e periciais.
Gilles Perito Digital | OSINT & Security Developer Specialist GitHub: @Gill3s0x01
