# dievus/adpulse architecture

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

## Overview

ADPulse is a read-only Active Directory security scanner. An operator supplies a domain and password or hash; the CLI resolves or accepts a domain controller, binds over LDAP(S), runs security checks, and renders selected reports. The check suite covers identity and authentication risks, domain configuration and infrastructure, permissions and delegation, and SYSVOL/legacy-protocol issues; findings feed scoring and report formats. The README documents all 35 checks, but the sampled check source is partial, so the graph groups checks by capability rather than asserting internal call order.

Main entry points: [`ADPulse.py`](https://github.com/dievus/adpulse/blob/main/ADPulse.py) (CLI orchestration), [`connector.py`](https://github.com/dievus/adpulse/blob/main/connector.py) (LDAP connector), [`checks.py`](https://github.com/dievus/adpulse/blob/main/checks.py) (SYSVOL and protocols), [`report.py`](https://github.com/dievus/adpulse/blob/main/report.py) (Console report)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_scan["Scan workflow"]
  node_cli["CLI orchestration<br/>[ADPulse.py]"]
  node_dc_resolution["DC resolution<br/>[connector.py]"]
  node_ldap_connector["LDAP connector<br/>[connector.py]"]
end

subgraph group_checks["Security checks"]
  node_identity_policy["Identity and policy<br/>[checks.py]"]
  node_kerberos_delegation["Kerberos and delegation<br/>[checks.py]"]
  node_adcs_permissions["ADCS and permissions<br/>[checks.py]"]
  node_domain_hardening["Domain hardening<br/>[checks.py]"]
  node_sysvol_network["SYSVOL and protocols<br/>[checks.py]"]
end

subgraph group_results["Findings and reports"]
  node_finding_model["Findings and scoring<br/>[models.py]"]
  node_console_report["Console report<br/>[report.py]"]
  node_json_report["JSON export<br/>[report.py]"]
  node_html_report["HTML export<br/>[report.py]"]
end

subgraph group_external["External systems"]
  node_domain_controller(("Domain controller"))
  node_dns(("DNS resolver"))
  node_sysvol(("SYSVOL share"))
  node_network_hosts(("Network hosts"))
  node_terminal(("Terminal"))
  node_report_files["Report files"]
end

node_operator(("Operator"))

node_operator -->|"provides scan options"| node_cli
node_cli -->|"resolves DC"| node_dc_resolution
node_dc_resolution -->|"queries name"| node_dns
node_cli -->|"connects"| node_ldap_connector
node_ldap_connector -->|"binds and searches"| node_domain_controller
node_cli -->|"runs checks"| node_identity_policy
node_cli -->|"runs checks"| node_kerberos_delegation
node_cli -->|"runs checks"| node_adcs_permissions
node_cli -->|"runs checks"| node_domain_hardening
node_cli -->|"runs checks"| node_sysvol_network
node_identity_policy -->|"queries AD"| node_ldap_connector
node_kerberos_delegation -->|"queries AD"| node_ldap_connector
node_adcs_permissions -->|"queries AD"| node_ldap_connector
node_domain_hardening -->|"queries AD"| node_ldap_connector
node_sysvol_network -->|"queries AD"| node_ldap_connector
node_sysvol_network -->|"reads policy files"| node_sysvol
node_sysvol_network -->|"probes SMB"| node_network_hosts
node_cli -->|"builds scan result"| node_finding_model
node_cli -->|"renders"| node_console_report
node_cli -->|"exports"| node_json_report
node_cli -->|"exports"| node_html_report
node_console_report -->|"prints report"| node_terminal
node_json_report -->|"writes JSON"| node_report_files
node_html_report -->|"writes HTML"| node_report_files

click node_cli "https://github.com/dievus/adpulse/blob/main/ADPulse.py"
click node_dc_resolution "https://github.com/dievus/adpulse/blob/main/connector.py"
click node_ldap_connector "https://github.com/dievus/adpulse/blob/main/connector.py"
click node_identity_policy "https://github.com/dievus/adpulse/blob/main/checks.py"
click node_kerberos_delegation "https://github.com/dievus/adpulse/blob/main/checks.py"
click node_adcs_permissions "https://github.com/dievus/adpulse/blob/main/checks.py"
click node_domain_hardening "https://github.com/dievus/adpulse/blob/main/checks.py"
click node_sysvol_network "https://github.com/dievus/adpulse/blob/main/checks.py"
click node_finding_model "https://github.com/dievus/adpulse/blob/main/models.py"
click node_console_report "https://github.com/dievus/adpulse/blob/main/report.py"
click node_json_report "https://github.com/dievus/adpulse/blob/main/report.py"
click node_html_report "https://github.com/dievus/adpulse/blob/main/report.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_cli,node_dc_resolution,node_ldap_connector toneBlue
class node_identity_policy,node_kerberos_delegation,node_adcs_permissions,node_domain_hardening,node_sysvol_network toneAmber
class node_finding_model,node_console_report,node_json_report,node_html_report toneMint
class node_domain_controller,node_dns,node_sysvol,node_network_hosts,node_terminal,node_report_files toneRose
class node_operator toneIndigo
```

## Components

### Scan workflow

- [CLI orchestration](https://github.com/dievus/adpulse/blob/main/ADPulse.py): `ADPulse.py`
- [DC resolution](https://github.com/dievus/adpulse/blob/main/connector.py): `connector.py`
- [LDAP connector](https://github.com/dievus/adpulse/blob/main/connector.py): `connector.py`

### Security checks

- [Identity and policy](https://github.com/dievus/adpulse/blob/main/checks.py): `checks.py`
- [Kerberos and delegation](https://github.com/dievus/adpulse/blob/main/checks.py): `checks.py`
- [ADCS and permissions](https://github.com/dievus/adpulse/blob/main/checks.py): `checks.py`
- [Domain hardening](https://github.com/dievus/adpulse/blob/main/checks.py): `checks.py`
- [SYSVOL and protocols](https://github.com/dievus/adpulse/blob/main/checks.py): `checks.py`

### Findings and reports

- [Findings and scoring](https://github.com/dievus/adpulse/blob/main/models.py): `models.py`
- [Console report](https://github.com/dievus/adpulse/blob/main/report.py): `report.py`
- [JSON export](https://github.com/dievus/adpulse/blob/main/report.py): `report.py`
- [HTML export](https://github.com/dievus/adpulse/blob/main/report.py): `report.py`

### External systems

- **Domain controller**
- **DNS resolver**
- **SYSVOL share**
- **Network hosts**
- **Terminal**
- **Report files**

### Other components

- **Operator**

## Connections

- Operator → CLI orchestration: provides scan options
- CLI orchestration → DC resolution: resolves DC
- DC resolution → DNS resolver: queries name
- CLI orchestration → LDAP connector: connects
- LDAP connector → Domain controller: binds and searches
- CLI orchestration → Identity and policy: runs checks
- CLI orchestration → Kerberos and delegation: runs checks
- CLI orchestration → ADCS and permissions: runs checks
- CLI orchestration → Domain hardening: runs checks
- CLI orchestration → SYSVOL and protocols: runs checks
- Identity and policy → LDAP connector: queries AD
- Kerberos and delegation → LDAP connector: queries AD
- ADCS and permissions → LDAP connector: queries AD
- Domain hardening → LDAP connector: queries AD
- SYSVOL and protocols → LDAP connector: queries AD
- SYSVOL and protocols → SYSVOL share: reads policy files
- SYSVOL and protocols → Network hosts: probes SMB
- CLI orchestration → Findings and scoring: builds scan result
- CLI orchestration → Console report: renders
- CLI orchestration → JSON export: exports
- CLI orchestration → HTML export: exports
- Console report → Terminal: prints report
- JSON export → Report files: writes JSON
- HTML export → Report files: writes HTML
