Percer
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)
| File | Size | Uploaded | |
|---|---|---|---|
| percer-0.3.1.tar.gz | 12.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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