Skip to main content

Percer

GitHub License Python Version GitHub Last Commit GitHub Issues GitHub Stars

Percer is a Portable Executable (PE) file format dissection utility and library which I use to quickly get information about Windows executables. Percer functions as both a command-line interface (CLI) utility and a library, allowing researchers to extract key information from PE files (metadata, sections, imports/exports, certificates). It comes with a VirusTotal search functionality which enables the user to run custom queries and download files.

🌟 Features

  • Dual Mode: Operate as a standalone tool or integrate as a library.

  • PE Analysis: Parse Imports, Exports, Sections, and Certificate information (wraps around Python pefile).

  • VirusTotal Integration: Query file hashes and download samples to files / byte streams.

  • Flexible Inputs: Analyze local files by path or remote samples by hash.

🛠 Installation

Install Percer with pip.

py -m pip install percer

📖 Configuration

Percer VirusTotal searching functionality requires a valid API key which has to be set as environment variable.

  • Windows (cmd)
set VT_API_KEY=API_key_goes_here
  • Linux
export VT_API_KEY='API key goes here'

🚀 CLI Usage

Percer provides a simple command-line interface.

Help Menu

C:\>percer --help
usage: percer <PE file> [-h] (-F FILE | -H HASH) [-a] [-e] [-i] [-s] [-c] [-q]

options:
  -h, --help            show this help message and exit
  -F FILE, --file FILE  Target file
  -H HASH, --hash HASH  Target hash (VirusTotal Search requires VT_API_KEY)
  -a, --all             Show all info
  -e, --exports         List exports
  -i, --imports         List imports
  -s, --sections        List sections
  -c, --certificates    Get certificates information
  -q, --quiet           Do not print the banner

Examples

Analyze a local file

percer -F samples.exe

Query hash on VirusTotal

percer -H <sha256/sha1/md5/Authentihash>

CLI output preview

📦 Library Usage

Percer can be imported into Python projects.

from percer.analyzer import PEAnalyzer
from percer.virustotal import VirusTotal

with open('hashes.txt', 'r') as f:
  hashes = [line.strip() for line in f]

with VirusTotal() as scanner:
  for input_hash in hashes:
    try:
      content = scanner.get_content(scanner.resolve_hash(input_hash))
      pex_object = PEAnalyzer.from_bytes(content)
      print(f"Product Name of {input_hash} is {pex_object.product_name}")
    except Exception as E:
      print(E)
      pass

Metadata

Release files for percer 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for percer 0.3.1
File Size Uploaded
percer-0.3.1.tar.gz 12.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for percer 0.3.1
File Interpreter ABI Platform
percer-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 24.9 kB

Release files / percer-0.3.1.tar.gz

Download URL percer-0.3.1.tar.gz
Size 12.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a63ebfa85f8033eb1d6be73d64751ed77c8ece9f2c07a2166f3100098ed7219c
BLAKE2b-256 checksum
How to use checksums
8742fbc6234ca47c2dccb0b8d66c5f513696374f952986f20790f8afaf29eb48
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 27, 2026.

Transparency log

Release files / percer-0.3.1-py3-none-any.whl

Download URL percer-0.3.1-py3-none-any.whl
Size 12.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
85b1ab57b5f5e4c199cc383279874e877c0ce8bbd344fcb168acca88a69c1fd1
BLAKE2b-256 checksum
How to use checksums
a905206f360d276cb5fe099704d5cb5ad49cde8ae2aedeae29f7686c008f96a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 27, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.1 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page