Skip to main content

Authorized penetration-testing & self-audit toolkit (network, web, recon, vuln)

Project description

pentool

A modular, cross-platform (Kali Linux and Windows) penetration-testing and self-audit toolkit written in Python. The core runs on the standard library alone — no dependencies required — so it works on a fresh Kali box or a locked-down Windows host without extra setup.

⚠️ Authorized use only. Run these tools solely against systems you own or have explicit written permission to test. The toolkit prompts for authorization on every run (bypass with --yes or PENTOOL_AUTHORIZED=1 in a lab). See SECURITY.md for the acceptable-use policy.

Contents

Modules

Command Purpose
scan TCP/UDP port scan + banner grabbing, optional host discovery (no root/admin needed)
web Web audit: TLS version, security headers, cookie flags, exposed sensitive paths
recon DNS records, reverse DNS, subdomain brute force, optional crt.sh CT logs
vuln Service fingerprinting, risky-exposure flagging, optional NVD CVE lookup
tls Deep TLS/SSL audit: protocol support, certificate validity, expiry, SANs

Reports export to JSON, HTML, Markdown, or CSV (-f/--format, or inferred from the -o file extension).

Install

No install required — just run it:

python pentool.py --help

Or install as a package (adds the pentool command and optional richer DNS):

pip install -e ".[dns]"
pentool --help

Once published, it is also available from PyPI and as a container image:

pip install pentool-kit                 # provides the `pentool` command
docker run --rm ghcr.io/aponder-dev/pentool-kit scan 127.0.0.1 -p top -y

See RELEASING.md for how releases, PyPI, and the container image are produced.

Requirements: Python 3.9+. The optional dnspython package unlocks full DNS record types (MX/NS/TXT/SOA/CNAME) in recon; without it, recon still resolves A/AAAA records.

Usage

# Port scan the top ports on a host, save a JSON report
python pentool.py scan 192.168.1.10 -o report.json

# Scan a whole subnet on specific ports, no banners (faster)
python pentool.py scan 10.0.0.0/24 -p 22,80,443,3389 --no-banner

# Ping-sweep a subnet first, then scan only live hosts; export an HTML report
python pentool.py scan 10.0.0.0/24 --discover -o report.html

# UDP scan common services
python pentool.py scan 192.168.1.10 -p 53,123,161,137 --udp

# Deep TLS/certificate audit
python pentool.py tls example.com

# Web security audit
python pentool.py web https://example.com

# DNS + subdomain recon, including certificate transparency logs
python pentool.py recon example.com --ct

# Fingerprint services and look up CVEs on the National Vulnerability Database
python pentool.py vuln 192.168.1.10 --cve

# Skip the authorization prompt in a lab/CI context
python pentool.py scan 127.0.0.1 --yes

Global flags (-y/--yes, -o/--output) work before or after the subcommand. Full option tables for every command are in WIKI.md.

Reports

Every command accepts -o report.json to write machine-readable output. The JSON contains the tool name, target spec, UTC start time, and a list of findings, each with target, category, title, severity (infocritical), detail, and a structured data object. Terminal output is a severity-sorted summary.

Design notes

  • No raw sockets. Port scanning uses TCP connect, so it needs no elevated privileges and no packet-crafting library — portable across Kali and Windows.
  • Non-intrusive web checks. The web module only issues GET/HEAD requests; it never attempts exploitation.
  • Optional network calls. crt.sh (recon --ct) and NVD (vuln --cve) are opt-in; everything else stays local to your test path.
  • Authorization gate. Every run confirms authorization before touching a target.

Project layout

pentool.py              # convenience launcher (python pentool.py ...)
pentool/
  cli.py                # argparse dispatcher + authorization gate
  common.py             # shared helpers: auth, output, target/port parsing, Report model
  scanners/
    network.py          # TCP connect scan + banner grabbing
    web.py              # TLS / header / cookie / exposed-path audit
    recon.py            # DNS, reverse DNS, subdomain brute force, crt.sh
    vuln.py             # fingerprinting, risky-exposure flags, NVD CVE lookup

Legal & ethics

This project is for authorized engagements, security labs, and defensive self-audits only. Unauthorized scanning or testing of systems you do not own or control may be illegal in your jurisdiction. You are responsible for how you use it. See SECURITY.md.

License

MIT © 2026 Anthony Ponder

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pentool_kit-1.1.0.tar.gz (22.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pentool_kit-1.1.0-py3-none-any.whl (23.8 kB view details)

Uploaded Python 3

File details

Details for the file pentool_kit-1.1.0.tar.gz.

File metadata

  • Download URL: pentool_kit-1.1.0.tar.gz
  • Upload date:
  • Size: 22.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pentool_kit-1.1.0.tar.gz
Algorithm Hash digest
SHA256 61a04fe0559b64e0a50a11721d175939bc8ef495d9a424db04a504c9c9535e1a
MD5 22635ba2bcc79bea1aa9318ce0808773
BLAKE2b-256 abdc84ee65e98790d2052e9d0a5415bd50cfdaeca40cabbbf69b913f5428a5da

See more details on using hashes here.

Provenance

The following attestation bundles were made for pentool_kit-1.1.0.tar.gz:

Publisher: release.yml on APonder-Dev/pentool-kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pentool_kit-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: pentool_kit-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 23.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pentool_kit-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 147dd5ab650508b2b1af88a136fed28685a513fb31383247276879662a6c5c05
MD5 19a47dce83eb153e8553ae69ee750b1c
BLAKE2b-256 ab41f9d0924fde55b49ff6ff6d251ff195bc77e0bcd0c72a9e0c9d85fe771a5a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pentool_kit-1.1.0-py3-none-any.whl:

Publisher: release.yml on APonder-Dev/pentool-kit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page