
AirStrike is an advanced wireless security assessment framework designed to simplify and enhance Wi-Fi penetration testing through an integrated, web-based interface.
_ _ ____ _ _ _
/ \ (_) _ __ / ___| | |_ _ __ (_)| | __ ___
/ _ \ | || '__|\___ \ | __|| '__|| || |/ / / _ \
/ ___ \ | || | ___) || |_ | | | || < | __/
/_/ \_\|_||_| |____/ \__||_| |_||_|\_\ \___|
AirStrike is a Flask + Socket.IO web interface for orchestrating Wi-Fi assessment tools from a browser.
This build intentionally focuses on the three most stable attacks in the suite: Deauthentication, Cracking (handshake capture + aircrack-ng), and Evil Twin.
aircrack-ng and a configurable wordlist.hostapd/dnsmasq, sets up DHCP/DNS spoofing, and can optionally front a captive portal.All other experimental attack stubs were removed to keep the UI, API, and code paths lean.
pippython -m venv .venv
source .venv/bin/activate
pip install -e . # installs deps + the `airstrike` console script
# or: pip install -r requirements.txt
$PATH:
aircrack-ng suite (airmon-ng, airodump-ng, aircrack-ng)iw, ip, ifconfig/net-toolshostapd, dnsmasq, , sudo python run.py
The runner enforces sudo, exports the required environment variables, and ensures /etc/hosts contains 127.0.0.1 airstrike.local.
The server binds to 127.0.0.1:5000 (loopback only) by default; browse to http://airstrike.local:5000 or http://127.0.0.1:5000. (sudo airstrike runs the same thing via the console script.)
On the default loopback bind there is no login — for a single-operator box the loopback bind is the access control, so you go straight to the dashboard. (A login gate turns on automatically if you expose the panel with AIRSTRIKE_BIND_ALL=1; set AIRSTRIKE_PASSWORD then, or force auth on/off with AIRSTRIKE_REQUIRE_AUTH=1 / AIRSTRIKE_DISABLE_AUTH=1.) Use the Scan tab to discover networks, select one, and switch to Attack. You still confirm authorization before an attack starts, and every launch/stop is written to airstrike-audit.log. Live logs and capture summaries are under Results.
To reach it from another machine, prefer an SSH tunnel (ssh -L 5000:127.0.0.1:5000 <host>). Exposing it on all interfaces (AIRSTRIKE_BIND_ALL=1) serves the panel over plaintext HTTP and is discouraged — see THREAT_MODEL.md.
app/config.py under the config dict; the Settings tab edits them live.AIRSTRIKE_PASSWORD (login), AIRSTRIKE_SECRET_KEY (persistent sessions), AIRSTRIKE_BIND_ALL=1 (expose on all interfaces — discouraged), AIRSTRIKE_ORIGINS (Socket.IO CORS allowlist when not on loopback), AIRSTRIKE_AUDIT_LOG (audit-file path).captures/.run.py is a thin shim into app.cli:main (also installed as the airstrike console script); it enforces root, maps airstrike.local, and starts Socket.IO.The backend is a single installable app/ package (restructured from the original flat layout — see PR #8):
app/engine/ – framework-agnostic attack workers (deauth, handshake capture/cracking, evil twin); importable without Flask.app/core/ – shared plumbing: network/monitor-mode utils, sudo, logging, plus the validation, auth, and audit modules.app/services/ – orchestration (attack/scan/settings) between the blueprints and the engine.app/blueprints/ – Flask routes; app/__init__.py is the create_app() factory.app/static/ · app/templates/ – the front-end (per-attack config lives in app/static/js/modules/attacks/).run.py · pyproject.toml – entry-point shim + packaging.tests/ – pytest suite (factory/route contract, parsers, and the security/auth regression tests).utils/network_utils.set_managed_mode.airodump-ng, hostapd) will surface in the attack log pane. Install them through your package manager and restart AirStrike.AirStrike runs as root, so its own security matters. Hardening includes: no shell execution (argv only), input validation on all OS-bound values, a login gate + CSRF + same-origin enforcement, loopback-by-default binding, XSS escaping, an authenticated Socket.IO channel, and an authorization gate + audit log. The full trust model, residual risks (notably: no TLS — use an SSH tunnel), and a safe-operation checklist are in THREAT_MODEL.md. Run the test suite with pytest.
AirStrike performs active, offensive attacks (deauthentication, handshake capture, rogue AP). Running them against networks you do not own — or lack written authorization to assess — is illegal in most jurisdictions (e.g. US CFAA, FCC §333 for deauthentication, UK CMA, German StGB §202c). This is a lab / research / portfolio tool: use it only on your own equipment or within an authorized engagement. The in-app authorization gate records your confirmation; it does not grant permission. You are responsible for how you use it.
iptablesdnsspoof