# kuray12/pentest architecture

> Architecture diagram of the GitHub repository kuray12/pentest, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/kuray12/pentest
- Repository: https://github.com/kuray12/pentest

## Overview

Pentest Automation Orchestrator is a Bash-driven recon and vulnerability-scanning workflow. An authorized operator supplies a target; the script runs available discovery and scanning stages, stores artifacts under results/<target>/, then consolidates selected scanner outputs into deduplicated Markdown and JSON findings. The README documents the major stages and optional integrations; only the consolidator source was sampled, so detailed stage-to-stage data flow is omitted where it cannot be verified.

Main entry points: [`pentest_automation.sh`](https://github.com/kuray12/pentest/blob/main/pentest_automation.sh) (Workflow runner), [`consolidate_findings.py`](https://github.com/kuray12/pentest/blob/main/consolidate_findings.py) (Finding consolidator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_orchestration["Orchestration"]
  node_target["Target input"]
  node_runner["Workflow runner"]
end

subgraph group_recon["Reconnaissance"]
  node_enumeration["Subdomain enumeration"]
  node_dns["DNS resolution"]
  node_host_probe["Host probing"]
  node_screenshots["Screenshots"]
  node_fingerprinting["Fingerprinting"]
  node_takeover["Takeover checks"]
  node_favicon["Favicon hashing"]
  node_url_harvest["URL harvesting"]
  node_parameters["Parameter discovery"]
  node_js_recon["JavaScript recon"]
end

subgraph group_scanning["Scanning"]
  node_ports["Port scanning"]
  node_directories["Directory discovery"]
  node_patterns["Pattern matching"]
  node_secrets["Secret scanning"]
  node_active_scanners["Vulnerability scanners"]
  node_cloud["Cloud enumeration"]
  node_login["Login testing"]
end

subgraph group_reporting["Reporting"]
  node_result_files["Scan artifacts"]
  node_consolidator["Finding consolidator"]
  node_findings["Deduplicated findings"]
  node_summary["Stage summary"]
end

node_operator(("Authorized operator"))

node_operator -->|"supplies target"| node_target
node_target -->|"starts run"| node_runner
node_runner -->|"runs stage"| node_enumeration
node_runner -->|"runs stage"| node_dns
node_runner -->|"runs stage"| node_host_probe
node_runner -->|"runs stage"| node_screenshots
node_runner -->|"runs stage"| node_fingerprinting
node_runner -->|"runs stage"| node_takeover
node_runner -->|"runs stage"| node_favicon
node_runner -->|"runs stage"| node_ports
node_runner -->|"runs stage"| node_directories
node_runner -->|"runs stage"| node_url_harvest
node_runner -->|"runs stage"| node_parameters
node_runner -->|"runs stage"| node_patterns
node_runner -->|"runs stage"| node_js_recon
node_runner -->|"runs stage"| node_secrets
node_runner -->|"runs stage"| node_active_scanners
node_runner -->|"runs stage"| node_cloud
node_runner -.->|"optional stage"| node_login
node_enumeration -->|"writes artifacts"| node_result_files
node_dns -->|"writes artifacts"| node_result_files
node_host_probe -->|"writes artifacts"| node_result_files
node_screenshots -->|"writes artifacts"| node_result_files
node_fingerprinting -->|"writes artifacts"| node_result_files
node_takeover -->|"writes artifacts"| node_result_files
node_favicon -->|"writes artifacts"| node_result_files
node_ports -->|"writes artifacts"| node_result_files
node_directories -->|"writes artifacts"| node_result_files
node_url_harvest -->|"writes artifacts"| node_result_files
node_parameters -->|"writes artifacts"| node_result_files
node_patterns -->|"writes artifacts"| node_result_files
node_js_recon -->|"writes artifacts"| node_result_files
node_secrets -->|"writes artifacts"| node_result_files
node_active_scanners -->|"writes artifacts"| node_result_files
node_cloud -->|"writes artifacts"| node_result_files
node_login -.->|"writes artifacts"| node_result_files
node_runner -->|"invokes"| node_consolidator
node_result_files -->|"reads scanner files"| node_consolidator
node_consolidator -->|"writes reports"| node_findings
node_runner -->|"produces"| node_summary

click node_target "https://github.com/kuray12/pentest/blob/main/pentest_automation.sh"
click node_runner "https://github.com/kuray12/pentest/blob/main/pentest_automation.sh"
click node_enumeration "https://github.com/kuray12/pentest/blob/main/pentest_automation.sh"
click node_dns "https://github.com/kuray12/pentest/blob/main/pentest_automation.sh"
click node_host_probe "https://github.com/kuray12/pentest/blob/main/pentest_automation.sh"
click node_screenshots "https://github.com/kuray12/pentest/blob/main/pentest_automation.sh"
click node_fingerprinting "https://github.com/kuray12/pentest/blob/main/pentest_automation.sh"
click node_takeover "https://github.com/kuray12/pentest/blob/main/pentest_automation.sh"
click node_favicon "https://github.com/kuray12/pentest/blob/main/pentest_automation.sh"
click node_ports "https://github.com/kuray12/pentest/blob/main/pentest_automation.sh"
click node_directories "https://github.com/kuray12/pentest/blob/main/pentest_automation.sh"
click node_url_harvest "https://github.com/kuray12/pentest/blob/main/pentest_automation.sh"
click node_parameters "https://github.com/kuray12/pentest/blob/main/pentest_automation.sh"
click node_patterns "https://github.com/kuray12/pentest/blob/main/pentest_automation.sh"
click node_js_recon "https://github.com/kuray12/pentest/blob/main/pentest_automation.sh"
click node_secrets "https://github.com/kuray12/pentest/blob/main/pentest_automation.sh"
click node_active_scanners "https://github.com/kuray12/pentest/blob/main/pentest_automation.sh"
click node_cloud "https://github.com/kuray12/pentest/blob/main/pentest_automation.sh"
click node_login "https://github.com/kuray12/pentest/blob/main/pentest_automation.sh"
click node_consolidator "https://github.com/kuray12/pentest/blob/main/consolidate_findings.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_target,node_runner toneBlue
class node_enumeration,node_dns,node_host_probe,node_screenshots,node_fingerprinting,node_takeover,node_favicon,node_url_harvest,node_parameters,node_js_recon toneAmber
class node_ports,node_directories,node_patterns,node_secrets,node_active_scanners,node_cloud,node_login toneMint
class node_result_files,node_consolidator,node_findings,node_summary toneRose
class node_operator toneIndigo
```

## Components

### Orchestration

- [Target input](https://github.com/kuray12/pentest/blob/main/pentest_automation.sh): `pentest_automation.sh`
- [Workflow runner](https://github.com/kuray12/pentest/blob/main/pentest_automation.sh): `pentest_automation.sh`

### Reconnaissance

- [Subdomain enumeration](https://github.com/kuray12/pentest/blob/main/pentest_automation.sh): `pentest_automation.sh`
- [DNS resolution](https://github.com/kuray12/pentest/blob/main/pentest_automation.sh): `pentest_automation.sh`
- [Host probing](https://github.com/kuray12/pentest/blob/main/pentest_automation.sh): `pentest_automation.sh`
- [Screenshots](https://github.com/kuray12/pentest/blob/main/pentest_automation.sh): `pentest_automation.sh`
- [Fingerprinting](https://github.com/kuray12/pentest/blob/main/pentest_automation.sh): `pentest_automation.sh`
- [Takeover checks](https://github.com/kuray12/pentest/blob/main/pentest_automation.sh): `pentest_automation.sh`
- [Favicon hashing](https://github.com/kuray12/pentest/blob/main/pentest_automation.sh): `pentest_automation.sh`
- [URL harvesting](https://github.com/kuray12/pentest/blob/main/pentest_automation.sh): `pentest_automation.sh`
- [Parameter discovery](https://github.com/kuray12/pentest/blob/main/pentest_automation.sh): `pentest_automation.sh`
- [JavaScript recon](https://github.com/kuray12/pentest/blob/main/pentest_automation.sh): `pentest_automation.sh`

### Scanning

- [Port scanning](https://github.com/kuray12/pentest/blob/main/pentest_automation.sh): `pentest_automation.sh`
- [Directory discovery](https://github.com/kuray12/pentest/blob/main/pentest_automation.sh): `pentest_automation.sh`
- [Pattern matching](https://github.com/kuray12/pentest/blob/main/pentest_automation.sh): `pentest_automation.sh`
- [Secret scanning](https://github.com/kuray12/pentest/blob/main/pentest_automation.sh): `pentest_automation.sh`
- [Vulnerability scanners](https://github.com/kuray12/pentest/blob/main/pentest_automation.sh): `pentest_automation.sh`
- [Cloud enumeration](https://github.com/kuray12/pentest/blob/main/pentest_automation.sh): `pentest_automation.sh`
- [Login testing](https://github.com/kuray12/pentest/blob/main/pentest_automation.sh): `pentest_automation.sh`

### Reporting

- **Scan artifacts**
- [Finding consolidator](https://github.com/kuray12/pentest/blob/main/consolidate_findings.py): `consolidate_findings.py`
- **Deduplicated findings**
- **Stage summary**

### Other components

- **Authorized operator**

## Connections

- Authorized operator → Target input: supplies target
- Target input → Workflow runner: starts run
- Workflow runner → Subdomain enumeration: runs stage
- Workflow runner → DNS resolution: runs stage
- Workflow runner → Host probing: runs stage
- Workflow runner → Screenshots: runs stage
- Workflow runner → Fingerprinting: runs stage
- Workflow runner → Takeover checks: runs stage
- Workflow runner → Favicon hashing: runs stage
- Workflow runner → Port scanning: runs stage
- Workflow runner → Directory discovery: runs stage
- Workflow runner → URL harvesting: runs stage
- Workflow runner → Parameter discovery: runs stage
- Workflow runner → Pattern matching: runs stage
- Workflow runner → JavaScript recon: runs stage
- Workflow runner → Secret scanning: runs stage
- Workflow runner → Vulnerability scanners: runs stage
- Workflow runner → Cloud enumeration: runs stage
- Workflow runner → Login testing: optional stage
- Subdomain enumeration → Scan artifacts: writes artifacts
- DNS resolution → Scan artifacts: writes artifacts
- Host probing → Scan artifacts: writes artifacts
- Screenshots → Scan artifacts: writes artifacts
- Fingerprinting → Scan artifacts: writes artifacts
- Takeover checks → Scan artifacts: writes artifacts
- Favicon hashing → Scan artifacts: writes artifacts
- Port scanning → Scan artifacts: writes artifacts
- Directory discovery → Scan artifacts: writes artifacts
- URL harvesting → Scan artifacts: writes artifacts
- Parameter discovery → Scan artifacts: writes artifacts
- Pattern matching → Scan artifacts: writes artifacts
- JavaScript recon → Scan artifacts: writes artifacts
- Secret scanning → Scan artifacts: writes artifacts
- Vulnerability scanners → Scan artifacts: writes artifacts
- Cloud enumeration → Scan artifacts: writes artifacts
- Login testing → Scan artifacts: writes artifacts
- Workflow runner → Finding consolidator: invokes
- Scan artifacts → Finding consolidator: reads scanner files
- Finding consolidator → Deduplicated findings: writes reports
- Workflow runner → Stage summary: produces
