# aircrack-ng/mdk4 architecture

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

- Interactive diagram: https://gitdiagram.com/aircrack-ng/mdk4
- Repository: https://github.com/aircrack-ng/mdk4

## Overview

MDK4 is a command-line Wi-Fi protocol testing tool. The documented workflow is to select an interface and attack mode, configure its options, then probe or inject 802.11 traffic; some modes also inspect received frames. Its attack family spans discovery, denial-of-service, mesh, WIDS, fuzzing, and proof-of-concept testing, with packet construction and OS-dependent capture/injection underneath. The README documents capabilities, but the main dispatcher and many attack implementations were not sampled, so those links are marked unverified.

Main entry points: [`src/mdk4.c`](https://github.com/aircrack-ng/mdk4/blob/master/src/mdk4.c) (MDK4 CLI), [`src/osdep.c`](https://github.com/aircrack-ng/mdk4/blob/master/src/osdep.c) (OS Abstraction), [`src/attacks/deauth.c`](https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/deauth.c) (Deauth Disassoc), [`src/attacks/poc.c`](https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/poc.c) (PoC Testing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["Command and Dispatch"]
  node_cli["MDK4 CLI<br/>[mdk4.c]"]
  node_registry["Attack Interface<br/>[attacks.h]"]
end

subgraph group_attacks["Attack Modes"]
  node_beacon["Beacon Flood<br/>[beacon_flood.c]"]
  node_auth["Authentication DoS<br/>[auth_dos.c]"]
  node_probing["SSID Probing<br/>[probing.c]"]
  node_brute["SSID Brute Force<br/>[brute.c]"]
  node_deauth["Deauth Disassoc<br/>[deauth.c]"]
  node_counter["TKIP Countermeasures<br/>[countermeasures.c]"]
  node_eapol["EAPOL Injection<br/>[eapol.c]"]
  node_mesh["Mesh Attacks<br/>[ieee80211s.c]"]
  node_wids["WIDS Confusion<br/>[wids.c]"]
  node_fuzzer["Packet Fuzzer<br/>[fuzzer.c]"]
  node_poc["PoC Testing<br/>[poc.c]"]
end

subgraph group_evasion["Traffic Evasion"]
  node_fragment["Fragment Evasion<br/>[fragmenting.c]"]
  node_ghost["Ghosting Evasion<br/>[ghosting.c]"]
  node_channel["Channel Hopping<br/>[channelhopper.c]"]
end

subgraph group_packet["Packet Support"]
  node_packet["802.11 Packets<br/>[packet.c]"]
  node_mac["MAC Utilities<br/>[mac_addr.c]"]
end

subgraph group_platform["Radio I/O"]
  node_osapi["OS Abstraction<br/>[osdep.c]"]
  node_linux["Linux Radio<br/>[linux.c]"]
  node_radiotap["Radiotap Parsing<br/>[radiotap-parser.c]"]
end

node_operator(("Operator"))
node_radio(("Wi-Fi Interface"))

node_operator -->|"selects mode"| node_cli
node_cli -.->|"dispatches attacks"| node_registry
node_cli -.->|"offers mode"| node_beacon
node_cli -.->|"offers mode"| node_auth
node_cli -.->|"offers mode"| node_probing
node_cli -.->|"offers mode"| node_deauth
node_cli -.->|"offers mode"| node_counter
node_cli -.->|"offers mode"| node_eapol
node_cli -.->|"offers mode"| node_mesh
node_cli -.->|"offers mode"| node_wids
node_cli -.->|"offers mode"| node_fuzzer
node_cli -.->|"offers mode"| node_poc
node_probing -->|"uses"| node_brute
node_deauth -->|"initializes"| node_channel
node_auth -->|"reads frames"| node_osapi
node_deauth -->|"reads frames"| node_osapi
node_fragment -->|"sends fragments"| node_osapi
node_fragment -->|"modifies frames"| node_packet
node_mesh -->|"uses radio API"| node_osapi
node_poc -->|"uses hopping"| node_channel
node_poc -->|"uses radio API"| node_osapi
node_registry -->|"defines packet API"| node_packet
node_osapi -.->|"selects backend"| node_linux
node_linux -->|"parses headers"| node_radiotap
node_osapi -.->|"captures and injects"| node_radio

click node_cli "https://github.com/aircrack-ng/mdk4/blob/master/src/mdk4.c"
click node_registry "https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/attacks.h"
click node_beacon "https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/beacon_flood.c"
click node_auth "https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/auth_dos.c"
click node_probing "https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/probing.c"
click node_brute "https://github.com/aircrack-ng/mdk4/blob/master/src/brute.c"
click node_deauth "https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/deauth.c"
click node_counter "https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/countermeasures.c"
click node_eapol "https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/eapol.c"
click node_mesh "https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/ieee80211s.c"
click node_wids "https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/wids.c"
click node_fuzzer "https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/fuzzer.c"
click node_poc "https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/poc.c"
click node_fragment "https://github.com/aircrack-ng/mdk4/blob/master/src/fragmenting.c"
click node_ghost "https://github.com/aircrack-ng/mdk4/blob/master/src/ghosting.c"
click node_channel "https://github.com/aircrack-ng/mdk4/blob/master/src/channelhopper.c"
click node_packet "https://github.com/aircrack-ng/mdk4/blob/master/src/packet.c"
click node_mac "https://github.com/aircrack-ng/mdk4/blob/master/src/mac_addr.c"
click node_osapi "https://github.com/aircrack-ng/mdk4/blob/master/src/osdep.c"
click node_linux "https://github.com/aircrack-ng/mdk4/blob/master/src/osdep/linux.c"
click node_radiotap "https://github.com/aircrack-ng/mdk4/blob/master/src/osdep/radiotap/radiotap-parser.c"

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_registry toneBlue
class node_beacon,node_auth,node_probing,node_brute,node_deauth,node_counter,node_eapol,node_mesh,node_wids,node_fuzzer,node_poc toneAmber
class node_fragment,node_ghost,node_channel toneMint
class node_packet,node_mac toneRose
class node_osapi,node_linux,node_radiotap,node_operator,node_radio toneIndigo
```

## Components

### Command and Dispatch

- [MDK4 CLI](https://github.com/aircrack-ng/mdk4/blob/master/src/mdk4.c): `src/mdk4.c`
- [Attack Interface](https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/attacks.h): `src/attacks/attacks.h`

### Attack Modes

- [Beacon Flood](https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/beacon_flood.c): `src/attacks/beacon_flood.c`
- [Authentication DoS](https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/auth_dos.c): `src/attacks/auth_dos.c`
- [SSID Probing](https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/probing.c): `src/attacks/probing.c`
- [SSID Brute Force](https://github.com/aircrack-ng/mdk4/blob/master/src/brute.c): `src/brute.c`
- [Deauth Disassoc](https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/deauth.c): `src/attacks/deauth.c`
- [TKIP Countermeasures](https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/countermeasures.c): `src/attacks/countermeasures.c`
- [EAPOL Injection](https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/eapol.c): `src/attacks/eapol.c`
- [Mesh Attacks](https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/ieee80211s.c): `src/attacks/ieee80211s.c`
- [WIDS Confusion](https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/wids.c): `src/attacks/wids.c`
- [Packet Fuzzer](https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/fuzzer.c): `src/attacks/fuzzer.c`
- [PoC Testing](https://github.com/aircrack-ng/mdk4/blob/master/src/attacks/poc.c): `src/attacks/poc.c`

### Traffic Evasion

- [Fragment Evasion](https://github.com/aircrack-ng/mdk4/blob/master/src/fragmenting.c): `src/fragmenting.c`
- [Ghosting Evasion](https://github.com/aircrack-ng/mdk4/blob/master/src/ghosting.c): `src/ghosting.c`
- [Channel Hopping](https://github.com/aircrack-ng/mdk4/blob/master/src/channelhopper.c): `src/channelhopper.c`

### Packet Support

- [802.11 Packets](https://github.com/aircrack-ng/mdk4/blob/master/src/packet.c): `src/packet.c`
- [MAC Utilities](https://github.com/aircrack-ng/mdk4/blob/master/src/mac_addr.c): `src/mac_addr.c`

### Radio I/O

- [OS Abstraction](https://github.com/aircrack-ng/mdk4/blob/master/src/osdep.c): `src/osdep.c`
- [Linux Radio](https://github.com/aircrack-ng/mdk4/blob/master/src/osdep/linux.c): `src/osdep/linux.c`
- [Radiotap Parsing](https://github.com/aircrack-ng/mdk4/blob/master/src/osdep/radiotap/radiotap-parser.c): `src/osdep/radiotap/radiotap-parser.c`

### Other components

- **Operator**
- **Wi-Fi Interface**

## Connections

- Operator → MDK4 CLI: selects mode
- MDK4 CLI → Attack Interface: dispatches attacks
- MDK4 CLI → Beacon Flood: offers mode
- MDK4 CLI → Authentication DoS: offers mode
- MDK4 CLI → SSID Probing: offers mode
- MDK4 CLI → Deauth Disassoc: offers mode
- MDK4 CLI → TKIP Countermeasures: offers mode
- MDK4 CLI → EAPOL Injection: offers mode
- MDK4 CLI → Mesh Attacks: offers mode
- MDK4 CLI → WIDS Confusion: offers mode
- MDK4 CLI → Packet Fuzzer: offers mode
- MDK4 CLI → PoC Testing: offers mode
- SSID Probing → SSID Brute Force: uses (evidence: `src/attacks/probing.c`)
- Deauth Disassoc → Channel Hopping: initializes (evidence: `src/attacks/deauth.c`)
- Authentication DoS → OS Abstraction: reads frames (evidence: `src/attacks/auth_dos.c`)
- Deauth Disassoc → OS Abstraction: reads frames (evidence: `src/attacks/deauth.c`)
- Fragment Evasion → OS Abstraction: sends fragments (evidence: `src/fragmenting.c`)
- Fragment Evasion → 802.11 Packets: modifies frames (evidence: `src/fragmenting.c`)
- Mesh Attacks → OS Abstraction: uses radio API (evidence: `src/attacks/ieee80211s.c`)
- PoC Testing → Channel Hopping: uses hopping (evidence: `src/attacks/poc.c`)
- PoC Testing → OS Abstraction: uses radio API (evidence: `src/attacks/poc.c`)
- Attack Interface → 802.11 Packets: defines packet API (evidence: `src/attacks/attacks.h`)
- OS Abstraction → Linux Radio: selects backend
- Linux Radio → Radiotap Parsing: parses headers (evidence: `src/osdep/linux.c`)
- OS Abstraction → Wi-Fi Interface: captures and injects
