# congtuan2503/vulnscanner architecture

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

- Interactive diagram: https://gitdiagram.com/congtuan2503/vulnscanner
- Repository: https://github.com/congtuan2503/vulnscanner

## Overview

VulnScanner is a command-line web reconnaissance scanner. A user supplies a target and scan options; `main.py` runs HTTP security-header checks and recursive, multithreaded path discovery, summarizes findings, and optionally generates an HTML report. The fuzzer reads a wordlist, checks catch-all behavior, and can compare response hashes or sizes to reduce false positives. The README also describes API, framework, and DevOps path discovery as wordlist coverage. Implementation detail beyond the sampled files is not inferred.

Main entry points: [`main.py`](https://github.com/congtuan2503/vulnscanner/blob/main/main.py) (Scan coordinator), [`modules/fuzzer.py`](https://github.com/congtuan2503/vulnscanner/blob/main/modules/fuzzer.py) (Recursive path fuzzer), [`modules/scanner.py`](https://github.com/congtuan2503/vulnscanner/blob/main/modules/scanner.py) (Header analysis), [`modules/reporter.py`](https://github.com/congtuan2503/vulnscanner/blob/main/modules/reporter.py) (HTML report generator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["CLI orchestration"]
  node_main["Scan coordinator<br/>[main.py]"]
end

subgraph group_analysis["Scanning and discovery"]
  node_header_scan["Header analysis<br/>[scanner.py]"]
  node_fuzzer["Recursive path fuzzer<br/>[fuzzer.py]"]
  node_catchall["Catch-all detection<br/>[fuzzer.py]"]
  node_path_probe["Path probing<br/>[fuzzer.py]"]
  node_header_findings["Header findings<br/>[scanner.py]"]
  node_asset_findings["Discovered assets<br/>[fuzzer.py]"]
end

subgraph group_reporting["Reporting"]
  node_reporter["HTML report generator<br/>[reporter.py]"]
  node_template["Report template"]
  node_report_file["HTML report output<br/>[report.html]"]
end

subgraph group_inputs["Scan inputs"]
  node_wordlist["Common path wordlist<br/>[common.txt]"]
end

node_user(("Security researcher"))
node_target(("Target web application"))
node_terminal(("Terminal output"))

node_user -->|"configures and starts"| node_main
node_main -->|"calls header check"| node_header_scan
node_main -->|"starts fuzzing"| node_fuzzer
node_header_scan -->|"requests headers"| node_target
node_header_scan -->|"produces findings"| node_header_findings
node_main -->|"reads results"| node_header_findings
node_fuzzer -->|"checks baseline"| node_catchall
node_catchall -->|"probes fake path"| node_target
node_fuzzer -->|"reads paths"| node_wordlist
node_fuzzer -->|"dispatches probes"| node_path_probe
node_path_probe -->|"requests paths"| node_target
node_path_probe -->|"classifies responses"| node_asset_findings
node_fuzzer -->|"collects results"| node_asset_findings
node_main -->|"reads results"| node_asset_findings
node_main -->|"prints summary"| node_terminal
node_main -->|"generates report"| node_reporter
node_reporter -->|"renders template"| node_template
node_reporter -->|"writes HTML"| node_report_file

click node_main "https://github.com/congtuan2503/vulnscanner/blob/main/main.py"
click node_header_scan "https://github.com/congtuan2503/vulnscanner/blob/main/modules/scanner.py"
click node_fuzzer "https://github.com/congtuan2503/vulnscanner/blob/main/modules/fuzzer.py"
click node_catchall "https://github.com/congtuan2503/vulnscanner/blob/main/modules/fuzzer.py"
click node_path_probe "https://github.com/congtuan2503/vulnscanner/blob/main/modules/fuzzer.py"
click node_header_findings "https://github.com/congtuan2503/vulnscanner/blob/main/modules/scanner.py"
click node_asset_findings "https://github.com/congtuan2503/vulnscanner/blob/main/modules/fuzzer.py"
click node_wordlist "https://github.com/congtuan2503/vulnscanner/blob/main/wordlists/common.txt"
click node_reporter "https://github.com/congtuan2503/vulnscanner/blob/main/modules/reporter.py"
click node_template "https://github.com/congtuan2503/vulnscanner/blob/main/templates/report_template.html"
click node_report_file "https://github.com/congtuan2503/vulnscanner/blob/main/report.html"

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_main toneBlue
class node_header_scan,node_fuzzer,node_catchall,node_path_probe,node_header_findings,node_asset_findings toneAmber
class node_reporter,node_template,node_report_file toneMint
class node_wordlist toneRose
class node_user,node_target,node_terminal toneIndigo
```

## Components

### CLI orchestration

- [Scan coordinator](https://github.com/congtuan2503/vulnscanner/blob/main/main.py): `main.py`

### Scanning and discovery

- [Header analysis](https://github.com/congtuan2503/vulnscanner/blob/main/modules/scanner.py): `modules/scanner.py`
- [Recursive path fuzzer](https://github.com/congtuan2503/vulnscanner/blob/main/modules/fuzzer.py): `modules/fuzzer.py`
- [Catch-all detection](https://github.com/congtuan2503/vulnscanner/blob/main/modules/fuzzer.py): `modules/fuzzer.py`
- [Path probing](https://github.com/congtuan2503/vulnscanner/blob/main/modules/fuzzer.py): `modules/fuzzer.py`
- [Header findings](https://github.com/congtuan2503/vulnscanner/blob/main/modules/scanner.py): `modules/scanner.py`
- [Discovered assets](https://github.com/congtuan2503/vulnscanner/blob/main/modules/fuzzer.py): `modules/fuzzer.py`

### Reporting

- [HTML report generator](https://github.com/congtuan2503/vulnscanner/blob/main/modules/reporter.py): `modules/reporter.py`
- [Report template](https://github.com/congtuan2503/vulnscanner/blob/main/templates/report_template.html): `templates/report_template.html`
- [HTML report output](https://github.com/congtuan2503/vulnscanner/blob/main/report.html): `report.html`

### Scan inputs

- [Common path wordlist](https://github.com/congtuan2503/vulnscanner/blob/main/wordlists/common.txt): `wordlists/common.txt`

### Other components

- **Security researcher**
- **Target web application**
- **Terminal output**

## Connections

- Security researcher → Scan coordinator: configures and starts
- Scan coordinator → Header analysis: calls header check
- Scan coordinator → Recursive path fuzzer: starts fuzzing
- Header analysis → Target web application: requests headers
- Header analysis → Header findings: produces findings
- Scan coordinator → Header findings: reads results
- Recursive path fuzzer → Catch-all detection: checks baseline
- Catch-all detection → Target web application: probes fake path
- Recursive path fuzzer → Common path wordlist: reads paths
- Recursive path fuzzer → Path probing: dispatches probes
- Path probing → Target web application: requests paths
- Path probing → Discovered assets: classifies responses
- Recursive path fuzzer → Discovered assets: collects results
- Scan coordinator → Discovered assets: reads results
- Scan coordinator → Terminal output: prints summary
- Scan coordinator → HTML report generator: generates report
- HTML report generator → Report template: renders template
- HTML report generator → HTML report output: writes HTML
