# spiderlabs/ikeforce architecture

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

## Overview

IKEForce is a command-line IKEv1/IPsec assessment tool. The user selects transform discovery, group-name/ID enumeration, XAUTH credential guessing, or connection testing; the controller sends IKE exchanges to a VPN target and interprets replies. A successful full negotiation can yield ESP keys, while response handling also supports vendor-ID recognition and the documented XAUTH-bypass check. The graph separates orchestration, packet construction, cryptography, and protocol interpretation. The excerpts show controller-to-client and controller-to-handler calls; unsampled mode wiring is represented only where the README documents the capability.

Main entry points: [`ikeforce.py`](https://github.com/spiderlabs/ikeforce/blob/master/ikeforce.py) (Mode controller), [`ikeclient.py`](https://github.com/spiderlabs/ikeforce/blob/master/ikeclient.py) (IKE exchange builder), [`ikehandler.py`](https://github.com/spiderlabs/ikeforce/blob/master/ikehandler.py) (Packet interpreter), [`ikecrypto.py`](https://github.com/spiderlabs/ikeforce/blob/master/ikecrypto.py) (IKE cryptography)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_orchestration["Command workflows"]
  node_controller["Mode controller<br/>[ikeforce.py]"]
  node_transform["Transform discovery<br/>[ikeforce.py]"]
  node_groupenum["Group enumeration<br/>[ikeforce.py]"]
  node_xauth["XAUTH guessing<br/>[ikeforce.py]"]
  node_connect["Connection test<br/>[ikeforce.py]"]
end

subgraph group_protocol["IKE protocol"]
  node_ikeclient["IKE exchange builder<br/>[ikeclient.py]"]
  node_handler["Packet interpreter<br/>[ikehandler.py]"]
end

subgraph group_crypto["Key operations"]
  node_crypto["IKE cryptography<br/>[ikecrypto.py]"]
  node_dh["Diffie-Hellman<br/>[dh.py]"]
end

subgraph group_data["Reference data"]
  node_wordlists["Guessing lists"]
  node_vendorids["Vendor ID catalog<br/>[vid.py]"]
end

node_user(("CLI user"))
node_vpn(("IKE VPN target"))
node_espkeys["ESP key material"]

node_user -->|"selects mode"| node_controller
node_controller -->|"dispatches"| node_transform
node_controller -->|"dispatches"| node_groupenum
node_controller -->|"dispatches"| node_xauth
node_controller -->|"dispatches"| node_connect
node_controller -->|"builds exchanges"| node_ikeclient
node_controller -->|"parses replies"| node_handler
node_transform -->|"probes transforms"| node_ikeclient
node_groupenum -->|"probes IDs"| node_ikeclient
node_xauth -->|"reads guesses"| node_wordlists
node_xauth -->|"attempts credentials"| node_ikeclient
node_connect -->|"negotiates"| node_ikeclient
node_controller -->|"uses key operations"| node_crypto
node_controller -->|"derives exchange keys"| node_dh
node_ikeclient -->|"sends IKE packets"| node_vpn
node_vpn -->|"returns IKE replies"| node_controller
node_handler -->|"identifies vendors"| node_vendorids
node_connect -->|"reports negotiated keys"| node_espkeys

click node_controller "https://github.com/spiderlabs/ikeforce/blob/master/ikeforce.py"
click node_transform "https://github.com/spiderlabs/ikeforce/blob/master/ikeforce.py"
click node_groupenum "https://github.com/spiderlabs/ikeforce/blob/master/ikeforce.py"
click node_xauth "https://github.com/spiderlabs/ikeforce/blob/master/ikeforce.py"
click node_connect "https://github.com/spiderlabs/ikeforce/blob/master/ikeforce.py"
click node_ikeclient "https://github.com/spiderlabs/ikeforce/blob/master/ikeclient.py"
click node_handler "https://github.com/spiderlabs/ikeforce/blob/master/ikehandler.py"
click node_crypto "https://github.com/spiderlabs/ikeforce/blob/master/ikecrypto.py"
click node_dh "https://github.com/spiderlabs/ikeforce/blob/master/dh.py"
click node_wordlists "https://github.com/spiderlabs/ikeforce/tree/master/wordlists"
click node_vendorids "https://github.com/spiderlabs/ikeforce/blob/master/vid.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_controller,node_transform,node_groupenum,node_xauth,node_connect,node_user toneBlue
class node_ikeclient,node_handler toneAmber
class node_crypto,node_dh toneMint
class node_wordlists,node_vendorids toneRose
class node_vpn,node_espkeys toneIndigo
```

## Components

### Command workflows

- [Mode controller](https://github.com/spiderlabs/ikeforce/blob/master/ikeforce.py): `ikeforce.py`
- [Transform discovery](https://github.com/spiderlabs/ikeforce/blob/master/ikeforce.py): `ikeforce.py`
- [Group enumeration](https://github.com/spiderlabs/ikeforce/blob/master/ikeforce.py): `ikeforce.py`
- [XAUTH guessing](https://github.com/spiderlabs/ikeforce/blob/master/ikeforce.py): `ikeforce.py`
- [Connection test](https://github.com/spiderlabs/ikeforce/blob/master/ikeforce.py): `ikeforce.py`

### IKE protocol

- [IKE exchange builder](https://github.com/spiderlabs/ikeforce/blob/master/ikeclient.py): `ikeclient.py`
- [Packet interpreter](https://github.com/spiderlabs/ikeforce/blob/master/ikehandler.py): `ikehandler.py`

### Key operations

- [IKE cryptography](https://github.com/spiderlabs/ikeforce/blob/master/ikecrypto.py): `ikecrypto.py`
- [Diffie-Hellman](https://github.com/spiderlabs/ikeforce/blob/master/dh.py): `dh.py`

### Reference data

- [Guessing lists](https://github.com/spiderlabs/ikeforce/tree/master/wordlists): `wordlists`
- [Vendor ID catalog](https://github.com/spiderlabs/ikeforce/blob/master/vid.py): `vid.py`

### Other components

- **CLI user**
- **IKE VPN target**
- **ESP key material**

## Connections

- CLI user → Mode controller: selects mode
- Mode controller → Transform discovery: dispatches
- Mode controller → Group enumeration: dispatches
- Mode controller → XAUTH guessing: dispatches
- Mode controller → Connection test: dispatches
- Mode controller → IKE exchange builder: builds exchanges
- Mode controller → Packet interpreter: parses replies
- Transform discovery → IKE exchange builder: probes transforms
- Group enumeration → IKE exchange builder: probes IDs
- XAUTH guessing → Guessing lists: reads guesses
- XAUTH guessing → IKE exchange builder: attempts credentials
- Connection test → IKE exchange builder: negotiates
- Mode controller → IKE cryptography: uses key operations
- Mode controller → Diffie-Hellman: derives exchange keys
- IKE exchange builder → IKE VPN target: sends IKE packets
- IKE VPN target → Mode controller: returns IKE replies
- Packet interpreter → Vendor ID catalog: identifies vendors
- Connection test → ESP key material: reports negotiated keys
