How p0cl4bs/wifipumpkin3 works
Purpose and Entry Points
Wifipumpkin3 is a Python 3.8+ Linux framework for operating a rogue wireless access point and associated man-in-the-middle services. The primary executable entry point is wifipumpkin3/__main__.py; package metadata/install entry points are defined in setup.py. It exposes both an interactive control surface and a REST service.
Control Plane and Session Orchestration
Controllers coordinate AP lifecycle, wireless mode selection, DHCP/DNS, proxy/MITM services, extensions, and UI state. This layer is the main boundary between user/API commands and privileged network processes.
• wifipumpkin3/core/controllers/defaultcontroller.py
• wifipumpkin3/core/controllers/wirelessmodecontroller.py
• wifipumpkin3/core/controllers/mitmcontroller.py
Wireless Access-Point Provisioning
Wireless modes create and manage the rogue AP, with static, Karma-style, Docker, and REST-driven variants. Hostapd configuration is supplied as deployable configuration, while packet/network modules handle interface-level operations.
• wifipumpkin3/core/wirelessmode/wirelessmode.py
• wifipumpkin3/core/wirelessmode/static.py
• config/hostapd/hostapd.conf
Client Network Services
After clients join the AP, DHCP assigns network settings and DNS resolves or redirects requests. Controllers select/manage server implementations; packet-level components provide DHCP, DNS, DNS spoofing, and listener behavior.
• wifipumpkin3/core/servers/dhcp/dhcp.py
• wifipumpkin3/core/servers/dns/pyDNSServer.py
• wifipumpkin3/core/packets/dnsspoofNF.py
Traffic Interception and Captive Portals
The proxy/MITM stage receives client traffic after AP/DHCP/DNS setup. It supports transparent proxy modes, captive Flask portals, phishing/QR flows, traffic modification plugins, and packet inspection. Captive portal presentation is separated from Python plugin logic through template directories.
• wifipumpkin3/core/servers/proxy/proxymode.py
• wifipumpkin3/core/servers/proxy/captiveflask.py
• wifipumpkin3/plugins/pumpkinproxy/base.py
• config/templates/
Extensions, Modules, and Plugin Boundary
Command extensions expose operations such as AP setup, DHCP configuration, proxy selection, client/network inspection, and shutdown. Optional modules implement scanning, deauthentication, ARP/DNS spoofing, and custom portal functionality. Plugin packages are the intended extension boundary for proxy transforms, sniffing output, and captive portal variants.
• wifipumpkin3/extensions/ap.py
• wifipumpkin3/modules/wifi/wifiscan.py
• wifipumpkin3/plugins/captiveflask/plugin.py
API, Runtime, and Infrastructure
A Flask-style REST application exposes access-point, command, plugin, proxy, logging, and authentication endpoints, providing a programmatic alternative to the local UI. The runtime requires Linux and hostapd; exception assets also indicate dependencies on iptables and DHCP tooling. Container deployment is represented by Dockerfile and docker-compose.yml.
• wifipumpkin3/core/servers/rest/application.py
• wifipumpkin3/core/servers/rest/blueprints/restapi/accesspoint.py
• Dockerfile
Main entry points: defaultcontroller.py Session controllers · wirelessmode.py Wireless modes · proxymode.py Proxy modes · pyDNSServer.py DNS service
Components 20
Control plane
Coordinates AP sessions and privileged services.
- CLI entry point
wifipumpkin3/__main__.py - Session controllers · Coordinates lifecycle, wireless mode, MITM, and UI state.
wifipumpkin3/core/controllers/defaultcontroller.py - Wireless mode controller
wifipumpkin3/core/controllers/wirelessmodecontroller.py - MITM controller
wifipumpkin3/core/controllers/mitmcontroller.py
Network plane
Provisions the AP and joined clients.
- Wireless modes · Base for static, Karma, Docker, and REST AP modes.
wifipumpkin3/core/wirelessmode/wirelessmode.py - Static AP mode
wifipumpkin3/core/wirelessmode/static.py - hostapd configuration
config/hostapd/hostapd.conf - DHCP service · Assigns client network settings.
wifipumpkin3/core/servers/dhcp/dhcp.py - DNS service · Resolves or redirects client requests.
wifipumpkin3/core/servers/dns/pyDNSServer.py - DNS spoofing
wifipumpkin3/core/packets/dnsspoofNF.py
Interception
Captures and modifies client traffic.
- Proxy modes · Receives redirected client traffic.
wifipumpkin3/core/servers/proxy/proxymode.py - Captive Flask portal
wifipumpkin3/core/servers/proxy/captiveflask.py - Portal templates
Extensions
Optional commands, modules, and plugins.
- Proxy plugins · Provides traffic transforms and inspection extensions.
wifipumpkin3/plugins/pumpkinproxy/base.py - Command extensions
wifipumpkin3/extensions/ap.py - Wi-Fi scanning module
wifipumpkin3/modules/wifi/wifiscan.py - Captive portal plugins
wifipumpkin3/plugins/captiveflask/plugin.py
API & deployment
Programmatic control and container runtime.
- REST application · Programmatic alternative to the local control surface.
wifipumpkin3/core/servers/rest/application.py - Access-point API
wifipumpkin3/core/servers/rest/blueprints/restapi/accesspoint.py - Container image
Dockerfile
Connections 22
- CLI entry point → Session controllers: starts
- Session controllers → Wireless mode controller: selects mode
- Session controllers → MITM controller: manages
- Session controllers → Command extensions: exposes commands
- Wireless mode controller → Wireless modes: provisions
- Wireless modes → Static AP mode: implements
- Static AP mode → hostapd configuration: uses
- Wireless modes → DHCP service: serves joined clients
- Wireless modes → DNS service: serves joined clients
- DNS service → DNS spoofing: redirect rules
- MITM controller → Proxy modes: selects
- DHCP service → Proxy modes: client traffic path
- DNS service → Proxy modes: redirects traffic
- Proxy modes → Captive Flask portal: hosts portal
- Captive Flask portal → Portal templates: renders
- Proxy modes → Proxy plugins: loads transforms
- Captive Flask portal → Captive portal plugins: loads variants
- Command extensions → Wi-Fi scanning module: invokes
- REST application → Access-point API: registers
- Access-point API → Session controllers: controls
- Container image → REST application: deploys
- Container image → Wireless modes: packages runtime