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.1.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.1-py3-none-any.whl (23.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pentool_kit-1.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 e0053666db20964544a7ab69ab39faff9f80b11e272bc3d99668ba2549b82eeb
MD5 f0ee2dd04bbb2838b551d2a962374acd
BLAKE2b-256 b3395935387eba0fcb21e0ec65997aec6e127ec9ad8aa1e5f6d831823183d2de

See more details on using hashes here.

Provenance

The following attestation bundles were made for pentool_kit-1.1.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: pentool_kit-1.1.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 417127497be9beec4cfffe996ab24e249e72099c921df3a8f1d2495c90a0b4f4
MD5 dd8110629609184d2cb2c190a1cae4ef
BLAKE2b-256 e27e84bfd67f43ade6a9041788e744d8a939d04ec84ce4c5d31504c87248df20

See more details on using hashes here.

Provenance

The following attestation bundles were made for pentool_kit-1.1.1-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