Repository navigation
[3.0.0] - 2026-11-11
3.0.0 is a corrective release: it makes reported success match what actually
happened on the wire, gives every radio change a single owner that can restore
it, and closes a large batch of correctness and security defects
Added
Radio state and cleanup
- A single radio-state supervisor now owns every interface mutation. Before the
first write it snapshots ifindex, mode, channel, MAC and addresses; changes
are applied once with exit status and read-back verification, and only the
fields that changed are restored. Externally added IPs are preserved and
failed restores are retried rather than dropped. Airmon, Iw, Ip, MAC,
hostapd, dnsmasq, Evil Twin, WPA, WPA3, Nexmon and shutdown all run through
it. Up/down is decided fromIFF_UPinstead ofoperstate. Process.force_kill()for processes that ignore SIGTERM.
Nexmon / Broadcom FullMAC
- Broadcom FullMAC Nexmon support:
nexutilis probed, the driver lifecycle is
guarded, and Nexmon is integrated into dependency and system checks. - Firmware identification reads the revinfo string from
nexutil -I <if> -Vinstead of/sys/module/brcmfmac/version. - Hexdump parsing fallback for installations where
nexutil -Ris missing. - Leaked
{station}monmonitors are recovered, preferred monitor names are
reused, and dual-interface candidates are deduplicated by PHY. - Teardown happens before the rogue AP starts when Nexmon and Evil Twin share a
radio.
Scanning and channel handling
- 6 GHz channel table and band-aware channel conversion; targets carry their
frequency and band. - 5 GHz band suffixes for hcxdumptool channel arguments.
- Scan diagnostics that explain why no targets were found instead of returning
an empty list. --random-macfor a fully random interface MAC and--random-mac-vendor
to randomize only the device part and keep the vendor bytes.
Captures and cracking
- Run-scoped capture cache: a PMKID run publishes its pcapng and the WPA stage
reuses it instead of capturing again. - 10-second PMKID grace window so a crackable EAPOL pair arriving just after
the PMKID is not discarded. - Negative crack cache keyed by
(BSSID, wordlist), so a known miss is not
retried in the same run. - hcxdumptool / hcxtools 8 and hashcat 8 support. hcxpcapngtool 7 dropped
--bssid/--essid, so filtering now happens in Python (MAC_AP field 3,
ESSID hex field 5) and output files are unlinked before conversion. - Native Scapy PMKID capture fallback for adapters where hcxdumptool fails to
arm the interface.
CLI
--version.--ignore-capturedto skip networks that already have a capture on disk.--dictaccepts a directory of wordlists.--kalidroidMiniTerminal output.
Safety
mask_sensitive()redacts passwords and PSKs (CWE-312), showing only the
first two characters.
Changed
Update behaviour
- Wifite no longer updates itself. The startup check only reports that a newer
commit exists and points at--update.
hcxdumptool
- Headless capture: the display that was previously forced on and then piped
away is no longer requested, and a capture that stops early now reports why
(including watchdog exits) instead of looking like a timeout. -Ais only passed with--hcxdump-active, with a warning on mt76.- macchanger is skipped for hcxdumptool runs;
IFF_PROMISC/IFF_ALLMULTIare
snapshotted and restored instead of being tracked in a ledger. - Wifite-owned monitor interfaces are handed back to managed mode for the run
and re-armed on exit, because hcxdumptool 7+ owns the monitor lifecycle.
This applies only where hcxdumptool is the sole user of the interface.
Cracking
- OpenCL devices are probed once; hashcat then runs with
-D 1, retrying once
when a device fails. Wordlists are tried smallest-first. - hashcat exit codes are classified: 0/1 are normal, 2 is an abort, and
3/4/255 are reported as run errors. - WPS and WPA3 analysis is batched and cached per capture rather than spawning
one tshark process per target.
Targets and sessions
- Handshakes require a crackable pair (M1+M2 or M2+M3) and a
WPA*02/03/04record from hcxpcapngtool. - A new
capturedsession status distinguishes "captured but not cracked"
from "no capture". --wps-onlyonly skips targets that are known non-WPS.
Performance
- Airodump lookup rewritten from O(n·m) to O(n); chardet samples 4 KB instead
of the whole file; the OUI database is loaded lazily. - Credential validation uses selectors-based reads instead of polling.
- Attack monitor entries are pruned by TTL, so long runs no longer grow without
bound.
Structure
config.pysplit into aconfig/package: defaults, validators,
manufacturers and nine parser modules.
Dependencies
- Wifite no longer prompts to install missing optional dependencies such as
hashcat. - hcxdumptool and hcxpcapngtool 7.0.0 are required; binaries from different
suite releases are reported, and WPA-FT requires hashcat 8.0.0 or newer. - Readiness now reports capture and cracking separately, so a missing cracker
no longer marks capture as unavailable.
Fixed
Truthful reporting
- A complete 4-way handshake is no longer reported as partial.
- PMKID network counts are derived from the capture rather than from the hashes
that survived conversion. - WPA3/SAE captures are no longer presented as offline-crackable; the
limitation is stated explicitly. An SAE capture counts as complete only when
both Commit (seq 1) and Confirm (seq 2) were seen, and--no-downgrade/
--force-saeare actually consulted. - A capture that could not be tested is reported as untested instead of as a
wordlist miss. --resume-idnames the session that was not found.
Radio and cleanup
- Cleanup survives
EBUSYwhen the driver refuses a mode change. - The
-ipath no longer skipsAirmon.ask(), which previously left brcmfmac
scanning with zero frames. - Channel read-back is retried in dual-interface mode.
- Cleanup runs on
SIGTERM.
Nexmon
- Failed PMKID captures on brcmfmac now fail fast with the real error rather
than after a full timeout.
Evil Twin
- The rogue AP is now open. hostapd previously forced WPA2, so victims could
never associate. - dnsmasq is started with
except-interface=loand its errors are read from
stderr. - The dual-interface assignment import was fixed; a
ModuleNotFoundError
previously collapsed every run to single-interface. - Portal startup has a single setup path, safe credential configs, cleanup
after a failed start, and a free-port fallback.
Cracking
--wps-onlyno longer skipped non-WPS targets (WPSStatecompared as an int
instead ofis False).- The 4-way stage is no longer skipped after a PMKID capture.
AttackPMKID.runhad a missing return;Process.existshad an operator
precedence bug;Process.callmis-split string arguments; several latent
NameErrors were removed.- WPS options are honoured on resume, with
--no-pixieand--no-nullpin
independent of each other. - WEP fakeauth has a timeout instead of hanging.
Security
- Removed
shell=Trueescalation paths and string-concatenated hashcat
commands (command injection). - Closed file-handle leaks, including in
Process.devnull(). - Fixed temp-file TOCTOU and umask handling.
- Made process-manager ordering deterministic.
- Redacted passwords and PSKs from logs and output.
Removed
- Automatic self-update from
origin/master(replaced by the check-only
notice and--update). - hcxpcapngtool
--bssid/--essidinvocation, superseded by Python-side
filtering for hcxtools 7+.
Full changelog: 2.8.2...3.0.0