Skip to main content

Technical Architecture & Overview

peepdf parses PDF files and exposes their object structure, streams, and embedded JavaScript for inspection. It decodes common filters and encodings, wraps PyV8 for JavaScript analysis and pylibemu for shellcode analysis, and checks hashes against VirusTotal. The interactive console lets analysts walk the document tree and extract suspicious objects. The repository has had no commits since November 2016.

Targeted Technical Use Cases

Dissecting a suspicious PDF attachment to confirm an exploit or a JavaScript downloader.

Evaluation & Trade-offs

Core Strengths

  • +Interactive console purpose-built for PDF structure.
  • +Shellcode analysis through the optional pylibemu wrapper.
  • +Simple to script for batch checks.

Trade-Offs & Limitations

  • -No commits to the repository since 2016.
  • -Code uses Python 2 syntax and does not run on Python 3.

Defensive Security Application

Confirming malicious PDFs in phishing investigations and extracting indicators from embedded payloads.

Frequently Asked Questions

What is peepdf?→

peepdf parses PDF files and exposes their object structure, streams, and embedded JavaScript for inspection. It decodes common filters and encodings, wraps PyV8 for JavaScript analysis and pylibemu for shellcode analysis, and checks hashes against VirusTotal. The interactive console lets analysts walk the document tree and extract suspicious objects. The repository has had no commits since November 2016.

What is peepdf used for?→

Dissecting a suspicious PDF attachment to confirm an exploit or a JavaScript downloader.

What are the strengths of peepdf?→
  • +Interactive console purpose-built for PDF structure.
  • +Shellcode analysis through the optional pylibemu wrapper.
  • +Simple to script for batch checks.
What are the limitations of peepdf?→
  • +No commits to the repository since 2016.
  • +Code uses Python 2 syntax and does not run on Python 3.
How is peepdf used defensively?→

Confirming malicious PDFs in phishing investigations and extracting indicators from embedded payloads.