# zerbea/hcxdumptool architecture

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

## Overview

hcxdumptool captures WLAN traffic and performs WPA-related layer-2 probing/attacks, producing pcapng captures for separate conversion and analysis tools. hcxnmealog is a companion utility for reading GPS NMEA data and logging it alongside WLAN observations. The sampled code shows raw packet handling, 802.11 processing, and NMEA input/output; several major capabilities and downstream relationships are documented in the README, while unsampled internal wiring is not inferred.

Main entry points: [`hcxdumptool.c`](https://github.com/zerbea/hcxdumptool/blob/master/hcxdumptool.c) (Packet processing), [`hcxnmealog.c`](https://github.com/zerbea/hcxdumptool/blob/master/hcxnmealog.c) (GPS and WLAN logger), [`include/ieee80211.h`](https://github.com/zerbea/hcxdumptool/blob/master/include/ieee80211.h) (802.11 definitions), [`include/radiotap.h`](https://github.com/zerbea/hcxdumptool/blob/master/include/radiotap.h) (Radiotap definitions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_capture["WLAN capture"]
  node_hcxdumptool["Capture and attacks<br/>[hcxdumptool.c]"]
  node_interface["Interface control<br/>[hcxdumptool.c]"]
  node_packetprocessing["Packet processing<br/>[hcxdumptool.c]"]
  node_attacktraffic["802.11 transmission<br/>[hcxdumptool.c]"]
  node_capturefile["PCAPNG capture"]
end

subgraph group_gps["GPS logging"]
  node_hcxnmealog["GPS and WLAN logger<br/>[hcxnmealog.c]"]
  node_gpsinput["GPS input<br/>[hcxnmealog.c]"]
  node_nmeaparser["NMEA processing<br/>[hcxnmealog.c]"]
  node_logfiles["NMEA and TSV logs"]
end

subgraph group_protocol["Protocol formats"]
  node_ieee80211["802.11 definitions<br/>[ieee80211.h]"]
  node_radiotap["Radiotap definitions<br/>[radiotap.h]"]
  node_pcapngformat["PCAPNG definitions<br/>[pcapng.h]"]
end

subgraph group_workflow["Analysis workflow"]
  node_converter["hcxpcapngtool"]
  node_hashfilters["Hash filtering tools"]
  node_crackers["Hashcat or JtR"]
end

node_operator(("Operator"))
node_wlan(("WLAN device"))
node_gpsdevice(("GPS receiver"))

node_operator -->|"configures and starts"| node_hcxdumptool
node_hcxdumptool -->|"controls interface"| node_interface
node_wlan -->|"supplies frames"| node_packetprocessing
node_interface -->|"provides capture"| node_packetprocessing
node_packetprocessing -->|"dispatches responses"| node_attacktraffic
node_attacktraffic -->|"injects frames"| node_wlan
node_packetprocessing -->|"writes packets"| node_capturefile
node_hcxdumptool -->|"writes pcapng"| node_capturefile
node_operator -->|"configures and starts"| node_hcxnmealog
node_hcxnmealog -->|"opens GPS source"| node_gpsinput
node_gpsdevice -->|"supplies sentences"| node_gpsinput
node_gpsinput -->|"reads sentences"| node_nmeaparser
node_wlan -->|"supplies WLAN frames"| node_hcxnmealog
node_hcxnmealog -->|"writes logs"| node_logfiles
node_nmeaparser -->|"records NMEA data"| node_logfiles
node_packetprocessing -->|"uses frame formats"| node_ieee80211
node_packetprocessing -->|"parses radiotap"| node_radiotap
node_hcxdumptool -->|"formats capture"| node_pcapngformat
node_capturefile -.->|"converts capture"| node_converter
node_converter -.->|"produces hash files"| node_hashfilters
node_hashfilters -.->|"supplies candidates"| node_crackers

click node_hcxdumptool "https://github.com/zerbea/hcxdumptool/blob/master/hcxdumptool.c"
click node_interface "https://github.com/zerbea/hcxdumptool/blob/master/hcxdumptool.c"
click node_packetprocessing "https://github.com/zerbea/hcxdumptool/blob/master/hcxdumptool.c"
click node_attacktraffic "https://github.com/zerbea/hcxdumptool/blob/master/hcxdumptool.c"
click node_hcxnmealog "https://github.com/zerbea/hcxdumptool/blob/master/hcxnmealog.c"
click node_gpsinput "https://github.com/zerbea/hcxdumptool/blob/master/hcxnmealog.c"
click node_nmeaparser "https://github.com/zerbea/hcxdumptool/blob/master/hcxnmealog.c"
click node_ieee80211 "https://github.com/zerbea/hcxdumptool/blob/master/include/ieee80211.h"
click node_radiotap "https://github.com/zerbea/hcxdumptool/blob/master/include/radiotap.h"
click node_pcapngformat "https://github.com/zerbea/hcxdumptool/blob/master/include/pcapng.h"

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_hcxdumptool,node_interface,node_packetprocessing,node_attacktraffic,node_capturefile toneBlue
class node_hcxnmealog,node_gpsinput,node_nmeaparser,node_logfiles toneAmber
class node_ieee80211,node_radiotap,node_pcapngformat toneMint
class node_converter,node_hashfilters,node_crackers toneRose
class node_operator,node_wlan,node_gpsdevice toneIndigo
```

## Components

### WLAN capture

- [Capture and attacks](https://github.com/zerbea/hcxdumptool/blob/master/hcxdumptool.c): `hcxdumptool.c`
- [Interface control](https://github.com/zerbea/hcxdumptool/blob/master/hcxdumptool.c): `hcxdumptool.c`
- [Packet processing](https://github.com/zerbea/hcxdumptool/blob/master/hcxdumptool.c): `hcxdumptool.c`
- [802.11 transmission](https://github.com/zerbea/hcxdumptool/blob/master/hcxdumptool.c): `hcxdumptool.c`
- **PCAPNG capture**

### GPS logging

- [GPS and WLAN logger](https://github.com/zerbea/hcxdumptool/blob/master/hcxnmealog.c): `hcxnmealog.c`
- [GPS input](https://github.com/zerbea/hcxdumptool/blob/master/hcxnmealog.c): `hcxnmealog.c`
- [NMEA processing](https://github.com/zerbea/hcxdumptool/blob/master/hcxnmealog.c): `hcxnmealog.c`
- **NMEA and TSV logs**

### Protocol formats

- [802.11 definitions](https://github.com/zerbea/hcxdumptool/blob/master/include/ieee80211.h): `include/ieee80211.h`
- [Radiotap definitions](https://github.com/zerbea/hcxdumptool/blob/master/include/radiotap.h): `include/radiotap.h`
- [PCAPNG definitions](https://github.com/zerbea/hcxdumptool/blob/master/include/pcapng.h): `include/pcapng.h`

### Analysis workflow

- **hcxpcapngtool**
- **Hash filtering tools**
- **Hashcat or JtR**

### Other components

- **Operator**
- **WLAN device**
- **GPS receiver**

## Connections

- Operator → Capture and attacks: configures and starts
- Capture and attacks → Interface control: controls interface
- WLAN device → Packet processing: supplies frames
- Interface control → Packet processing: provides capture
- Packet processing → 802.11 transmission: dispatches responses
- 802.11 transmission → WLAN device: injects frames
- Packet processing → PCAPNG capture: writes packets
- Capture and attacks → PCAPNG capture: writes pcapng
- Operator → GPS and WLAN logger: configures and starts
- GPS and WLAN logger → GPS input: opens GPS source
- GPS receiver → GPS input: supplies sentences
- GPS input → NMEA processing: reads sentences
- WLAN device → GPS and WLAN logger: supplies WLAN frames
- GPS and WLAN logger → NMEA and TSV logs: writes logs
- NMEA processing → NMEA and TSV logs: records NMEA data
- Packet processing → 802.11 definitions: uses frame formats
- Packet processing → Radiotap definitions: parses radiotap
- Capture and attacks → PCAPNG definitions: formats capture
- PCAPNG capture → hcxpcapngtool: converts capture
- hcxpcapngtool → Hash filtering tools: produces hash files
- Hash filtering tools → Hashcat or JtR: supplies candidates
