# georgi-0d/g-digger-bruteforce-tool architecture

> Architecture diagram of the GitHub repository georgi-0d/g-digger-bruteforce-tool, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/georgi-0d/g-digger-bruteforce-tool
- Repository: https://github.com/georgi-0d/g-digger-bruteforce-tool

## Overview

g-digger is a command-line reconnaissance tool with separate wordlist-driven subdomain and subdirectory scans. The entry point selects a scan mode; each mode loads its wordlist and dispatches per-candidate checks, which query DNS or HTTP and print findings. The README also documents asynchronous requests and colored output, reflected in the implementation. All runtime code is in one file, so the graph separates responsibilities rather than modules.

Main entry points: [`g-digger.py`](https://github.com/georgi-0d/g-digger-bruteforce-tool/blob/main/g-digger.py) (CLI Entry Point)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["CLI and Control"]
  node_main["CLI Entry Point<br/>[g-digger.py]"]
end

subgraph group_scans["Discovery Scans"]
  node_subdomain_scan["Subdomain Scan<br/>[g-digger.py]"]
  node_subdomain_thread["DNS Thread Wrapper<br/>[g-digger.py]"]
  node_dns_check["Subdomain Check<br/>[g-digger.py]"]
  node_directory_scan["Directory Scan<br/>[g-digger.py]"]
  node_directory_thread["HTTP Thread Wrapper<br/>[g-digger.py]"]
  node_directory_check["Directory Check<br/>[g-digger.py]"]
end

subgraph group_integrations["Network and Output"]
  node_dns["DNS Resolvers"]
  node_console["Terminal Output"]
end

node_user(("Operator"))
node_wordlist["Wordlist File"]
node_website["Target Website"]

node_user -->|"runs with options"| node_main
node_main -->|"starts scan"| node_subdomain_scan
node_main -->|"starts scan"| node_directory_scan
node_subdomain_scan -->|"reads candidates"| node_wordlist
node_directory_scan -->|"reads candidates"| node_wordlist
node_subdomain_scan -->|"submits candidates"| node_subdomain_thread
node_subdomain_thread -->|"runs check"| node_dns_check
node_dns_check -->|"resolves A records"| node_dns
node_directory_scan -->|"dispatches candidates"| node_directory_thread
node_directory_thread -->|"runs check"| node_directory_check
node_directory_check -->|"requests URL"| node_website
node_main -->|"prints status"| node_console
node_dns_check -->|"prints findings"| node_console
node_directory_check -->|"prints findings"| node_console

click node_main "https://github.com/georgi-0d/g-digger-bruteforce-tool/blob/main/g-digger.py"
click node_subdomain_scan "https://github.com/georgi-0d/g-digger-bruteforce-tool/blob/main/g-digger.py"
click node_subdomain_thread "https://github.com/georgi-0d/g-digger-bruteforce-tool/blob/main/g-digger.py"
click node_dns_check "https://github.com/georgi-0d/g-digger-bruteforce-tool/blob/main/g-digger.py"
click node_directory_scan "https://github.com/georgi-0d/g-digger-bruteforce-tool/blob/main/g-digger.py"
click node_directory_thread "https://github.com/georgi-0d/g-digger-bruteforce-tool/blob/main/g-digger.py"
click node_directory_check "https://github.com/georgi-0d/g-digger-bruteforce-tool/blob/main/g-digger.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_main toneBlue
class node_subdomain_scan,node_subdomain_thread,node_dns_check,node_directory_scan,node_directory_thread,node_directory_check toneAmber
class node_dns,node_console toneMint
class node_user,node_wordlist,node_website toneIndigo
```

## Components

### CLI and Control

- [CLI Entry Point](https://github.com/georgi-0d/g-digger-bruteforce-tool/blob/main/g-digger.py): `g-digger.py`

### Discovery Scans

- [Subdomain Scan](https://github.com/georgi-0d/g-digger-bruteforce-tool/blob/main/g-digger.py): `g-digger.py`
- [DNS Thread Wrapper](https://github.com/georgi-0d/g-digger-bruteforce-tool/blob/main/g-digger.py): `g-digger.py`
- [Subdomain Check](https://github.com/georgi-0d/g-digger-bruteforce-tool/blob/main/g-digger.py): `g-digger.py`
- [Directory Scan](https://github.com/georgi-0d/g-digger-bruteforce-tool/blob/main/g-digger.py): `g-digger.py`
- [HTTP Thread Wrapper](https://github.com/georgi-0d/g-digger-bruteforce-tool/blob/main/g-digger.py): `g-digger.py`
- [Directory Check](https://github.com/georgi-0d/g-digger-bruteforce-tool/blob/main/g-digger.py): `g-digger.py`

### Network and Output

- **DNS Resolvers**
- **Terminal Output**

### Other components

- **Operator**
- **Wordlist File**
- **Target Website**

## Connections

- Operator → CLI Entry Point: runs with options
- CLI Entry Point → Subdomain Scan: starts scan
- CLI Entry Point → Directory Scan: starts scan
- Subdomain Scan → Wordlist File: reads candidates
- Directory Scan → Wordlist File: reads candidates
- Subdomain Scan → DNS Thread Wrapper: submits candidates
- DNS Thread Wrapper → Subdomain Check: runs check
- Subdomain Check → DNS Resolvers: resolves A records
- Directory Scan → HTTP Thread Wrapper: dispatches candidates
- HTTP Thread Wrapper → Directory Check: runs check
- Directory Check → Target Website: requests URL
- CLI Entry Point → Terminal Output: prints status
- Subdomain Check → Terminal Output: prints findings
- Directory Check → Terminal Output: prints findings
