Skip to main content

A modular Python-based automated reconnaissance toolkit

Project description

py-AutoRecon

A modular Python-based reconnaissance toolkit built for target validation, subdomain enumeration, TCP port scanning, security header analysis, technology fingerprinting, OSINT collection, directory discovery, and structured report generation.

Overview

py-AutoRecon is designed as a clean, extensible recon framework rather than a single-purpose script. Each recon capability is implemented as an independent async module, and the scan pipeline orchestrates them into one structured result with progress indicators and rich terminal output.

Features

Target Validation

Normalizes and validates domains, IP addresses, and URLs before scanning. Supports single targets and bulk file input.

Subdomain Enumeration

Discovers subdomains using:

  • crt.sh certificate transparency data
  • DNS brute-force with configurable wordlist

Port Scanning

Performs async TCP connect scans with:

  • Configurable port ranges and specifications (e.g. 22,80-443,8080)
  • Service detection from known port mappings
  • Banner grabbing with protocol-aware probing

Security Header Analysis

Checks for critical HTTP security headers:

  • Content-Security-Policy
  • Strict-Transport-Security
  • X-Frame-Options
  • X-Content-Type-Options
  • Referrer-Policy
  • Permissions-Policy

Technology Fingerprinting

Identifies web technologies from:

  • Server and X-Powered-By headers
  • CDN/WAF detection (Cloudflare, etc.)
  • CMS detection (WordPress, Drupal, Joomla)
  • Frontend framework hints (React, Vue, Angular, Next.js)
  • Meta generator tags

OSINT Collection

Gathers:

  • DNS records (A, AAAA, MX, NS, TXT)
  • Summarized WHOIS information with date normalization

Directory Discovery

Wordlist-based directory and file brute-forcing with:

  • HTTPS/HTTP fallback
  • Status code filtering
  • Concurrency control
  • Disabled by default (requires explicit opt-in)

Reporting

Generates per-target report directories containing:

  • final.json — Full structured scan data
  • summary.csv — Module status overview
  • report.html — HTML dashboard

Project Structure

py-autoRecon/
├── autorecon/
│   ├── core/
│   │   ├── config_loader.py    # YAML config with deep merge
│   │   ├── pipeline.py         # Async pipeline orchestrator
│   │   └── target.py           # Target parsing & DNS resolution
│   ├── modules/
│   │   ├── base.py             # Abstract base module with timing
│   │   ├── subdomain.py        # crt.sh + DNS brute-force
│   │   ├── portscan.py         # TCP scan + banner grabbing
│   │   ├── headers.py          # Security header analysis
│   │   ├── techfinder.py       # Technology fingerprinting
│   │   ├── osint.py            # WHOIS + DNS records
│   │   └── dirbrute.py         # Directory discovery
│   ├── reporting/
│   │   ├── dashboard.py        # HTML report generator
│   │   └── export.py           # JSON + CSV export
│   ├── wordlists/
│   │   ├── subdomains.txt
│   │   └── directories.txt
│   ├── cli.py                  # CLI entry point with Rich output
│   ├── exceptions.py           # Custom exception hierarchy
│   └── models.py               # Dataclass models for all findings
├── config/
│   └── default.yaml            # Default scan configuration
├── tests/
│   ├── test_target.py          # 14 tests for target parsing
│   ├── test_portscan.py        # 16 tests for port scanning
│   └── test_subdomain.py       # 2 tests for subdomain module
├── reports/                    # Generated reports
├── requirements.txt
├── setup.py
└── README.md

Installation

1. Clone the repository

git clone https://github.com/Tauqeerkhan187/py-autoRecon.git
cd py-autoRecon

2. Create a virtual environment

python -m venv .venv

3. Activate the virtual environment

Windows CMD

.venv\Scripts\activate

PowerShell

.venv\Scripts\Activate.ps1

Linux/macOS

source .venv/bin/activate

4. Install dependencies

pip install -r requirements.txt

Usage

Validate a target

python -m autorecon.cli validate example.com

Run a full scan

python -m autorecon.cli scan example.com --full

Print JSON results to terminal

python -m autorecon.cli scan example.com --full --json

Scan multiple targets from a file

python -m autorecon.cli scan -f targets.txt --full

Custom output directory

python -m autorecon.cli scan example.com --full --output my-reports

Example Output

    ___         __        ____
   /   | __  __/ /_____  / __ \___  _________  ____
  / /| |/ / / / __/ __ \/ /_/ / _ \/ ___/ __ \/ __ \
 / ___ / /_/ / /_/ /_/ / _, _/  __/ /__/ /_/ / / / /
/_/  |_\__,_/\__/\____/_/ |_|\___/\___/\____/_/ /_/
                                          v1.0 by TK
Loaded 1 target(s).

──────────────────────── example.com ────────────────────────
  Running dirbrute...

                 Target Summary
┏━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Field        ┃ Value                         ┃
┡━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ Original     │ example.com                   │
│ Normalized   │ example.com                   │
│ Hostname     │ example.com                   │
│ Scheme       │ http                          │
│ Port         │ None                          │
│ Is IP        │ False                         │
│ Resolvable   │ True                          │
│ Resolved IPs │ 104.20.23.154, 172.66.147.243 │
│ Errors       │ -                             │
└──────────────┴───────────────────────────────┘
             Module Summary
┏━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━┳━━━━━━━━┓
┃ Module     ┃ Status  ┃ Items ┃ Errors ┃
┡━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━╇━━━━━━━━┩
│ subdomain  │ success │     1 │      0 │
│ portscan   │ success │     2 │      0 │
│ headers    │ success │     6 │      0 │
│ techfinder │ success │     2 │      0 │
│ osint      │ success │    10 │      0 │
│ dirbrute   │ skipped │     0 │      1 │
└────────────┴─────────┴───────┴────────┘
Modules run: subdomain, portscan, headers, techfinder, osint, dirbrute
Duration: 4.57 seconds

Running Tests

pytest tests/ -v

32 tests covering target parsing, port scanning, and subdomain enumeration.

tests/test_portscan.py::TestPortParsing::test_single_port PASSED
tests/test_portscan.py::TestPortParsing::test_multiple_ports PASSED
tests/test_portscan.py::TestPortParsing::test_port_range PASSED
...
tests/test_target.py::TestParseTarget::test_resolvable_domain PASSED
tests/test_target.py::TestLoadTargetsFromFile::test_valid_file PASSED
========================= 32 passed in 0.37s =========================

Output

Each scan creates a dedicated report directory:

reports/<target>/
├── final.json      # Complete structured scan data
├── summary.csv     # Module status summary
└── report.html     # HTML dashboard report

Configuration

Default scan behavior is controlled through config/default.yaml:

scan:
  timeout: 10
  concurrency: 100
  rate_limit: 0.2
  user_agent: "AutoRecon/1.0"

subdomains:
  enable_crtsh: true
  enable_bruteforce: true

portscan:
  ports: "80,443"
  banner_grab: true

dirbrute:
  enabled: false          # Requires explicit opt-in

You can override any setting with a custom config file:

python -m autorecon.cli --config my_config.yaml scan example.com --full

Current Status — v1.0

All core modules are implemented and tested:

  • 6 recon modules (subdomain, portscan, headers, techfinder, osint, dirbrute)
  • Async pipeline with per-module progress indicators
  • 3 report formats (JSON, CSV, HTML)
  • 32 unit tests passing
  • CLI with banner and rich terminal output

Roadmap

  • Interactive HTML dashboard with dark theme
  • Optional module selection from CLI flags
  • Rate limiting between requests
  • TLS certificate analysis
  • GitHub Actions CI pipeline
  • Expanded wordlists

Legal Notice

Use this tool only on systems, domains, and infrastructure that you own or are explicitly authorized to assess. Unauthorized scanning may be illegal and unethical.

Author

TK

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

py_autorecon_tk-1.0.0.tar.gz (28.3 kB view details)

Uploaded Source

Built Distribution

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

py_autorecon_tk-1.0.0-py3-none-any.whl (30.8 kB view details)

Uploaded Python 3

File details

Details for the file py_autorecon_tk-1.0.0.tar.gz.

File metadata

  • Download URL: py_autorecon_tk-1.0.0.tar.gz
  • Upload date:
  • Size: 28.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for py_autorecon_tk-1.0.0.tar.gz
Algorithm Hash digest
SHA256 a6a16807a9a90477ebea209daec9085227fdace0d622c3377e347a9c41e0779e
MD5 dbfdf02b1d821c7f278b3603dda251ab
BLAKE2b-256 95535b06252f8bc3f775fedb02b9bbb6e6a7d86c94341602c729a7b06ae3c028

See more details on using hashes here.

File details

Details for the file py_autorecon_tk-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for py_autorecon_tk-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0d76e26201ae2affe4820637994fa2f9054e950f63c22ff2ed6a45b742ca7342
MD5 61c31afee3f2edfa065dbb77d07958d9
BLAKE2b-256 a0d8bf24a927f8ddc8d430f95d9b7d8a050b1645f17efe9988b9a7b9b58878c2

See more details on using hashes here.

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