📈 GH Trending Explorer 🎲 Surprise me

← all repos

qkaiser / broadcom-wps

git clone https://github.com/qkaiser/broadcom-wps.git

Tools to fingerprint WiFi Access Points running the Broadcom SDK and a list of known affected devices.

—
stars, 24h
+155
stars, 7 days · #344
+155
stars, 30 days · #1,565
155
★ total · +155% this week
24
forks · 5 open issues

Star history starts 2026-10-20; the chart appears after the second daily snapshot.

LanguagePython
LicenseMIT
Created2026-10-14 (6d ago)
Last pushtoday
Watchers3
OwnerUser

GitHub topics

Links

README excerpt
# Broadcom 802.11 SDK Detection Toolkit
This repository contains two ways to detect the presence of Broadcom's 802.11 implementation on a target router:
1. Statically using YARA rules on extracted firmware
2. Dynamically by running a fingerprinting script against a live access point
The list of affected devices is available at the end of this page. **This list is not exhaustive**. We expect the complete list to contains thousands of different devices, make and models.
## Broadcom WPS Monitor YARA rules
`broadcom_wps_monitor.yar` contains three candidate detectors for ELF32 ARM and
MIPS binaries:
- `BRCM_WPS_Monitor_Generic_ELF` identifies a generic Broadcom WPS Monitor
 binary from independent vendor and protocol strings.
- `BRCM_WPS_Monitor_HAL_Config_ELF` identifies the narrower HAL configuration
 event variant.
- `VULN_BRCM_WPS_EAP_Fragment_Reassembly_ELF` requires the generic component
 evidence plus an ARM or MIPS opcode shape associated with the vulnerable
 fragment-reassembly path.
These rules are triage aids. Compiler changes can evade
opcode patterns, and a patched binary can retain strings or code bytes used by
a candidate detector. Confirm findings against the integrated source or by
manual review of the fragment-length validation and copy sink.
You can find binaries with this command:
 [code] 
## Broadcom SDK Fingerprinter
Make sure your interface supports monitor mode and enable monitor mode:
 [code] 
> **Note on hardware:** monitor mode / frame injection is very driver-dependent.
> In my testing the built-in **Intel Dual Band Wireless-AC 7265** (`iwlwifi`)
> accepted `type monitor` but captured **zero** frames (no beacons even with a
> strong signal), so the fingerprinter never locked onto a target. A USB adapter
> with a MediaTek chipset — **MT7921AU** (USB id `0e8d:7961`, driver `mt7921u`) —
> worked immediately. If the script keeps sweeping without finding your SSID,
> suspect the adapter rather than the target. Known-good chipsets for this kind
> of work include MediaTek `mt76`, Atheros `ath9k_htc`, and Realtek `rtl8812au`.
You should seem something like this on affected devices:
 [code] 
 [code] 
 [code] 
On patched devices you'll see:
 [code] 
If your device does not advertise WPS it's not affected and you'll see this:
 [code] 
The fingerprinting script relies on two things:
1. the presence of Broadcom proprietary information elements
2. an implementation quirk that can differentiate between Broadcom's wps_monitor and hostapd
The presence of Broadcom proprietary information element is not a sufficiently
strong signal since it's sometimes added by Broadcom's Linux kernel module
while the user space implementation is not from their SDK. We use that signal
to check if it's Broadcom or not.
If it's a Broadcom AP, we send a zero-length fragmented frame to differentiate
between Broadcom's wps_monitor and hostapd. hostapd sends an ACK while
wps_monitor sends a NACK (in a nutshell).
If we have both signals (Broadcom IE + implementatio