hcxdumptool - missing frames w/ filtering
After going open source, I got several feature requests and pull requests and added them to hcxdumptool. But every feature and every option has a price tag and hcxdumptool became a Dinosaur:
A beautiful real time display will take CPU cycles.
On the fly decoding calculating a PSK/PMK (weak candidate) will take CPU cycles.
Remote connection to a CLIENT will take CPU cycles.
Easy to use filter lists (options filter mode and filter list will take CPU cycles.
EAP attack (TLS) will take CPU cycles.

WiFi laboratory (hcxlabtool series) is highly experimental and ultra fast. It is designed to test new attack modes (which are later on added to hcxdumptool). It is designed to run completely headless.
There are no CPU cycle expensive options. Instead of using options, we compile the features directly into the tool. That result in several different tools, made by a single source file:
hcxlabgetm1 = request PMKID
hcxlabgetm2 = request EAPOL M2 from CLIENT
hcxlabgetm2wc = transmit wild card BEACONs and request EAPOL M2 from CLIENT
hcxlabgetm2pr = transmit 10 different PROBERESPONSEs to a single PROBEREQUEST and EAPOL M2 from CLIENT
hcxlabgetm2wcpr = combination of hcxlabgetm2wc and hcxlabgetm2pr
hcxlabgetm1234 = get full 4way handshake
hcxlabgetmall = do all mentioned above (except ...wc and ...pr)
hcxlabgetmallwc  = do all mentioned above (except ...pr)
hcxlabgetmallpr  = do all mentioned above (except ...wc)
hcxlabgetmallwcpr  = do all mentioned above
hcxlabdumpall = store data and unhandled frames to pcapng file

This tools are designed to test new features (to be added to hcxdumptool). They are designed to run headless on systems like this ones:

Operation system is a minimalist Debian (bookworm - unfortunately Arch stopped supporting armv6):
No unwanted tasks.
No unwanted services.
No unwanted tools.
Everything uninstalled what we don't need.
No monitor.
No keyboard (Raspberry is controlled via GPIO).
Onboard chips (HDMI, BT and Broadcaom WiFI disabled.
Onboard LED disabled.

It will run on other systems, too. But it will slowed down.

Installation is very simple:
$ git clone https://github.com/ZerBea/wifi_laboratory

$ sudo make install
cc -O3 -Wall -Wextra  -o hcxlabgetm1 hcxlabtool.c -DGETM1 -DSTATUSOUT
cc -O3 -Wall -Wextra  -o hcxlabgetm2 hcxlabtool.c -DGETM2 -DSTATUSOUT
cc -O3 -Wall -Wextra  -o hcxlabgetm2wc hcxlabtool.c -DGETM2 -DBEACONUNSET -DSTATUSOUT
cc -O3 -Wall -Wextra  -o hcxlabgetm2pr hcxlabtool.c -DGETM2 -DGETM2PR -DSTATUSOUT
cc -O3 -Wall -Wextra  -o hcxlabgetm2wcpr hcxlabtool.c -DGETM2 -DGETM2PR -DBEACONUNSET -DSTATUSOUT
cc -O3 -Wall -Wextra  -o hcxlabgetm1234 hcxlabtool.c -DGETM1234 -DSTATUSOUT
cc -O3 -Wall -Wextra  -o hcxlabgetmall hcxlabtool.c  -DGETM1 -DGETM2 -DGETM1234 -DSTATUSOUT
cc -O3 -Wall -Wextra  -o hcxlabgetmallwc hcxlabtool.c  -DGETM1 -DGETM2 -DGETM1234 -DBEACONUNSET -DSTATUSOUT
cc -O3 -Wall -Wextra  -o hcxlabgetmallpr hcxlabtool.c  -DGETM1 -DGETM2 -DGETM2PR -DGETM1234 -DSTATUSOUT
cc -O3 -Wall -Wextra  -o hcxlabgetmallwcpr hcxlabtool.c  -DGETM1 -DGETM2 -DGETM2PR -DGETM1234 -DBEACONUNSET -DSTATUSOUT
cc -O3 -Wall -Wextra  -o hcxlabdumpall hcxlabtool.c -DDUMPIPV4 -DDUMPIPV6 -DDUMPWEP -DDUMPWPA
install -D -m 0755 hcxlabgetm1 /usr/local/bin/hcxlabgetm1
install -D -m 0755 hcxlabgetm2 /usr/local/bin/hcxlabgetm2
install -D -m 0755 hcxlabgetm2wc /usr/local/bin/hcxlabgetm2wc
install -D -m 0755 hcxlabgetm2pr /usr/local/bin/hcxlabgetm2pr
install -D -m 0755 hcxlabgetm2wcpr /usr/local/bin/hcxlabgetm2wcpr
install -D -m 0755 hcxlabgetm1234 /usr/local/bin/hcxlabgetm1234
install -D -m 0755 hcxlabgetmall /usr/local/bin/hcxlabgetmall
install -D -m 0755 hcxlabgetmallwc /usr/local/bin/hcxlabgetmallwc
install -D -m 0755 hcxlabgetmallpr /usr/local/bin/hcxlabgetmallpr
install -D -m 0755 hcxlabgetmallwcpr /usr/local/bin/hcxlabgetmallwcpr
install -D -m 0755 hcxlabdumpall /usr/local/bin/hcxlabdumpall
rm -f hcxlabgetm1
rm -f hcxlabgetm2
rm -f hcxlabgetm2wc
rm -f hcxlabgetm2pr
rm -f hcxlabgetm2wcpr
rm -f hcxlabgetm1234
rm -f hcxlabgetmall
rm -f hcxlabgetmallwc
rm -f hcxlabgetmallpr
rm -f hcxlabgetmallwcpr
rm -f hcxlabdumpall
rm -f *.o *~

$ hcxlabgetmall -v
hcxlabgetmall 1.0.1 (C) 2023 ZeroBeat
This set of tools is installed to /usr/local/bin (not like hcxdumptool to /usr/bin)

Now you're ready to go. Example of command lines:
$ hcxlabgetmallpr --onsigterm=exit --ongpiobutton=poweroff --ontot=reboot --onerror=reboot --gpio_button=4 --gpio_statusled=17 --bpfc=own.bpfc --essidlist=standard.essidliste --essidmax=50 --m2attempt=4 -c 13,1,6,11,2,1,6,11,3,1,6,11,4,1,6,11,5,1,6,11,7,1,6,11,8,1,6,11,9,1,6,11,10,1,6,1,12,1,6,11 &

$ hcxlabgetm2 --onsigterm=exit --ongpiobutton=poweroff --ontot=reboot --onerror=reboot --gpio_button=4 --gpio_statusled=17 --tot=4320 --bpfc=own.bpfc --essidlist=standard.essidliste --essidmax=25 --m2attempt=4 -t 600 -c 1,2,3,4,5,6 &

$ hcxlabgetm2pr --onsigterm=exit --ongpiobutton=poweroff --ontot=reboot --onerror=reboot --gpio_button=4 --gpio_statusled=17 --tot=4320 --bpfc=own.bpfc --essidlist=standard.essidliste --essidmax=25 --m2attempt=4 -t 600 -c 1,2,3,4,5,6 &

This options should be used in combination with a hardware modified (GPIO LED and GPIO button) Raspberry Pi), only:
--ongpiobutton=poweroff --ontot=reboot --onerror=reboot --gpio_button=4 --gpio_statusled=17

This command lines are started by automatic and run in background after Raspberry Pi is powered on. This is done via .bash_profile:
iw reg set IN
chmod 777 -R /home
cd /home
#hcxlabgetmallpr --onsigterm=exit --ongpiobutton=poweroff --ontot=reboot --onerror=reboot --gpio_button=4 --gpio_statusled=17 --bpfc=own.bpfc --essidlist=standard.essidliste --essidmax=50 --m2attempt=4 -c 13,1,6,11,2,1,6,11,3,1,6,11,4,1,6,11,5,1,6,11,7,1,6,11,8,1,6,11,9,1,6,11,10,1,6,1,12,1,6,11 &
#hcxlabgetmallpr --onsigterm=exit --ongpiobutton=poweroff --ontot=reboot --onerror=reboot --gpio_button=4 --gpio_statusled=17 --bpfc=own.bpfc --essidlist=standard.essidliste --essidmax=50 --m2attempt=4 -c 128,1,36,2,124,3,40,4,120,5,44,6,116,7,48,8,112,9,52,10,108,11,56,12,104,13,60,1,100,6,64,11 &
#hcxlabgetmallpr --onsigterm=exit --ongpiobutton=poweroff --ontot=reboot --onerror=reboot --gpio_button=4 --gpio_statusled=17 --bpfc=own.bpfc --essidlist=standard.essidliste --essidmax=50 --m2attempt=4 -c 13,36,1,40,2,44,3,48,4,52,5,56,6,60,7,64,8,100,9,104,10,108,11,112,12,116,1,120,2,124,3,128,4,132,5,136,6,140,7,144,8,149,9,153,10,157,11,161,12,165,1,169,6,173,11 &
#hcxlabgetm2 --onsigterm=exit --ongpiobutton=poweroff --ontot=reboot --onerror=reboot --gpio_button=4 --gpio_statusled=17 --tot=4320 --bpfc=own.bpfc --essidlist=standard.essidliste --essidmax=25 --m2attempt=4 -t 600 -c 1,2,3,4,5,6 &
#hcxlabgetm2pr --onsigterm=exit --ongpiobutton=poweroff --ontot=reboot --onerror=reboot --gpio_button=4 --gpio_statusled=17 --tot=4320 --bpfc=own.bpfc --essidlist=standard.essidliste --essidmax=25 --m2attempt=4 -t 600 -c 1,2,3,4,5,6 &
systemctl start dhcpcd.service
systemctl start ssh.service

The simplest command line (and the most aggressive) is:
$ sudo hcxlabgetmall -i wlp39s0f3u1u1u1 --bpfc=protect.bpfc -c 1,6,11
where wlp39s0f3u1u1u1 is your interface name

make uninstall will remove them:
$ sudo make uninstall
rm -f /usr/local/bin/hcxlabgetm1
rm -f /usr/local/bin/hcxlabgetm2
rm -f /usr/local/bin/hcxlabgetm2wc
rm -f /usr/local/bin/hcxlabgetm2pr
rm -f /usr/local/bin/hcxlabgetm2wcpr
rm -f /usr/local/bin/hcxlabgetm1234
rm -f /usr/local/bin/hcxlabgetmall
rm -f /usr/local/bin/hcxlabgetmallwc
rm -f /usr/local/bin/hcxlabgetmallpr
rm -f /usr/local/bin/hcxlabgetmallwcpr
rm -f /usr/local/bin/hcxlabdumpall

"I couldn't find the way to install them."
This is deliberate. Detailed knowledge is mandatory:
* knowledge of radio technology
* knowledge of electromagnetic-wave engineering
* detailed knowledge of 802.11 protocol
* detailed knowledge of key derivation functions
* detailed knowledge of Linux
* detailed knowledge of filter procedures (Berkeley Packet Filter, capture filter, display filter)

Messages In This Thread
RE: hcxdumptool - missing frames w/ filtering - by ZerBea - 01-18-2023, 10:44 AM