# furqankhan1/dictator architecture

> Architecture diagram of the GitHub repository furqankhan1/dictator, 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/furqankhan1/dictator
- Repository: https://github.com/furqankhan1/dictator

## Overview

PTO automates network penetration-test discovery and service vulnerability scanning, then consolidates scanner and manual findings into reports. The documented workflow is user-initiated scan, port discovery, service checks, and report generation; sequential and concurrent modes are supported. The tree identifies the principal scan, exploit-mapping, parser, and reporting modules, while the sampled report orchestrator explicitly combines manual findings with Nessus and Qualys data through Report_Generator. Most scan/API wiring is unsampled, so those connections are shown only where documented and not as detailed internal call chains.

Main entry points: [`Dictator_service/Driver_main_class.py`](https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Driver_main_class.py) (Scan driver), [`Dictator_service/Report_orchestration.py`](https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Report_orchestration.py) (Report orchestration), [`Dictator_service/Report_Generator.py`](https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Report_Generator.py) (Finding storage), [`Dictator/urls.py`](https://github.com/furqankhan1/dictator/blob/master/Dictator/urls.py) (Django service API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Access and control"]
  node_webapi["Django service API<br/>[urls.py]"]
  node_gui["Scan GUI<br/>[Gui_main_driver.py]"]
  node_polling["Scan polling<br/>[Polling.py]"]
end

subgraph group_scanning["Scan execution"]
  node_scan_driver["Scan driver"]
  node_discovery["Port discovery"]
  node_service_checks["Service checks<br/>[Exploit_mapping.py]"]
end

subgraph group_findings["Findings intake"]
  node_ip_exploits["Manual findings<br/>[IPexploits.py]"]
  node_nessus["Nessus parser<br/>[Nessus_parser.py]"]
  node_qualys["Qualys parser<br/>[Qualys_parser.py]"]
  node_finding_store["Finding storage"]
end

subgraph group_reporting["Reporting"]
  node_orchestration["Report orchestration"]
  node_merge["Report merger<br/>[Report_merger.py]"]
  node_printer["Report output<br/>[Report_printer.py]"]
end

node_operator(("Penetration tester"))
node_external_tools["Scanning tools"]
node_database[("Scan database")]
node_target(("Target network"))

node_operator -->|"starts scan"| node_gui
node_operator -->|"requests scan"| node_webapi
node_webapi -->|"dispatches scan"| node_scan_driver
node_gui -->|"runs scan"| node_scan_driver
node_scan_driver -->|"coordinates discovery"| node_discovery
node_discovery -->|"probes ports"| node_target
node_discovery -.->|"uses Nmap"| node_external_tools
node_scan_driver -->|"coordinates checks"| node_service_checks
node_service_checks -.->|"runs test scripts"| node_external_tools
node_external_tools -->|"tests services"| node_target
node_polling -->|"monitors scan"| node_scan_driver
node_nessus -->|"stores findings"| node_finding_store
node_qualys -->|"stores findings"| node_finding_store
node_finding_store -->|"writes findings"| node_database
node_database -->|"provides findings"| node_orchestration
node_orchestration -->|"collects manual findings"| node_ip_exploits
node_orchestration -->|"loads scanner findings"| node_finding_store
node_orchestration -->|"consolidates report"| node_merge
node_merge -->|"formats report"| node_printer
node_printer -->|"returns report"| node_operator

click node_webapi "https://github.com/furqankhan1/dictator/blob/master/Dictator/urls.py"
click node_gui "https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Gui_main_driver.py"
click node_polling "https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Polling.py"
click node_scan_driver "https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Driver_main_class.py"
click node_discovery "https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Driver_main_class.py"
click node_service_checks "https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Exploit_mapping.py"
click node_ip_exploits "https://github.com/furqankhan1/dictator/blob/master/Dictator_service/IPexploits.py"
click node_nessus "https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Nessus_parser.py"
click node_qualys "https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Qualys_parser.py"
click node_finding_store "https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Report_Generator.py"
click node_orchestration "https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Report_orchestration.py"
click node_merge "https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Report_merger.py"
click node_printer "https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Report_printer.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_webapi,node_gui,node_polling toneBlue
class node_scan_driver,node_discovery,node_service_checks,node_database toneAmber
class node_ip_exploits,node_nessus,node_qualys,node_finding_store toneMint
class node_orchestration,node_merge,node_printer toneRose
class node_operator,node_external_tools,node_target toneIndigo
```

## Components

### Access and control

- [Django service API](https://github.com/furqankhan1/dictator/blob/master/Dictator/urls.py): `Dictator/urls.py`
- [Scan GUI](https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Gui_main_driver.py): `Dictator_service/Gui_main_driver.py`
- [Scan polling](https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Polling.py): `Dictator_service/Polling.py`

### Scan execution

- [Scan driver](https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Driver_main_class.py): `Dictator_service/Driver_main_class.py`
- [Port discovery](https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Driver_main_class.py): `Dictator_service/Driver_main_class.py`
- [Service checks](https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Exploit_mapping.py): `Dictator_service/Exploit_mapping.py`

### Findings intake

- [Manual findings](https://github.com/furqankhan1/dictator/blob/master/Dictator_service/IPexploits.py): `Dictator_service/IPexploits.py`
- [Nessus parser](https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Nessus_parser.py): `Dictator_service/Nessus_parser.py`
- [Qualys parser](https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Qualys_parser.py): `Dictator_service/Qualys_parser.py`
- [Finding storage](https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Report_Generator.py): `Dictator_service/Report_Generator.py`

### Reporting

- [Report orchestration](https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Report_orchestration.py): `Dictator_service/Report_orchestration.py`
- [Report merger](https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Report_merger.py): `Dictator_service/Report_merger.py`
- [Report output](https://github.com/furqankhan1/dictator/blob/master/Dictator_service/Report_printer.py): `Dictator_service/Report_printer.py`

### Other components

- **Penetration tester**
- **Scanning tools**
- **Scan database**
- **Target network**

## Connections

- Penetration tester → Scan GUI: starts scan
- Penetration tester → Django service API: requests scan
- Django service API → Scan driver: dispatches scan
- Scan GUI → Scan driver: runs scan
- Scan driver → Port discovery: coordinates discovery
- Port discovery → Target network: probes ports
- Port discovery → Scanning tools: uses Nmap
- Scan driver → Service checks: coordinates checks
- Service checks → Scanning tools: runs test scripts
- Scanning tools → Target network: tests services
- Scan polling → Scan driver: monitors scan
- Nessus parser → Finding storage: stores findings
- Qualys parser → Finding storage: stores findings
- Finding storage → Scan database: writes findings
- Scan database → Report orchestration: provides findings
- Report orchestration → Manual findings: collects manual findings
- Report orchestration → Finding storage: loads scanner findings
- Report orchestration → Report merger: consolidates report
- Report merger → Report output: formats report
- Report output → Penetration tester: returns report
