Skip to content

Commit

Permalink
1.0.16 (#174)
Browse files Browse the repository at this point in the history
* client chipset detection heuristics
* add beamformee sts for vht and he (#121)
* compat 11 to align with other packages
* bump scapy from 2.4.5 to 2.5.0
* bump extra requirements pins
* bump py requires to 3.9 as 3.7 is eol
* draft 6 GHz changes which don't seem to work
* remove redundant logging arg
* format with tox
* add wpa3-personal and wpa3-personal transition mode support
* fix crash when profiling OnePlus 11 5G
* big 1.0.16 commit, reader: don't do this
  • Loading branch information
joshschmelzle authored Feb 16, 2024
1 parent 55380db commit 0131aca
Show file tree
Hide file tree
Showing 38 changed files with 800 additions and 207 deletions.
2 changes: 2 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,7 @@ Request to include two debug outputs:
- Hardware: [e.g. RBPi 4, WLAN Pi Pro]
- Version [e.g. 1.0.0 (`$ profiler --version`)]

Output from `uname -a`.

**Additional context**
Add any other context about the problem here.
2 changes: 1 addition & 1 deletion AUTHORS.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
profiler was created by Josh Schmelzle.
wlanpi-profiler was created by Josh Schmelzle.

Keepers
```````
Expand Down
23 changes: 20 additions & 3 deletions CAPABILITY_LOGIC.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,11 @@ values to determine client capabilities.
- MCS 0-9 if pairs are set to '11'
- c. inspect octet 1 (one of the four vht capability octets)
- if bit zero set to '1', client is SU Beam-formee capable
- d. inspect octet 2 (one of the four vht capability octets)
- d. inspect octect 1 (one of the four vht capability octets)
- add bit 5, 6, 7 to determine VHT Beamformee STS
- e. inspect octet 2 (one of the four vht capability octets)
- if bit zero set to '1', client is MU Beam-formee capable
- e. inspect octet 0 (one of the four vht capability octets)
- f. inspect octet 0 (one of the four vht capability octets)
- if bit zero set to '1', client supports VHT 160 MHz

3. 802.11k: inspect tagged parameter 70 (RM Enabled Capabilities) - RM = radio management
Expand Down Expand Up @@ -91,6 +93,14 @@ values to determine client capabilities.
- h. Buffer Status Report (BSR) support: B19 of HE PHY Capabilities
- Y - supported
- N - not supported
- i. HE SU Beamformer: Bit 31 of HE PHY Capabilities
- 1 - supported
- 0 - not supported
- j. HE SU Beamformee: Bit 32 of HE PHY Capabilities
- 1 - supported
- 0 - not supported
- k. HE Beamformee STS: Bits 36-34 of HE PHY Capabilities
- Add Bits 36-34 to determine HE Beamformee STS

10. 802.11ax spatial reuse: inspect spatial reuse tag number 39 (Spatial Reuse Parameter Set)
- a. is Spatial Reuse Parameter Set tagged parameter present?
Expand All @@ -117,7 +127,14 @@ values to determine client capabilities.
- Y - Return match
- N - Unable to match

14. Detecting 6 GHz Capability Out-of-band via Alternative Operating Class
14. Chipset manufacturer detection through heuristics
- a. can Vendor Specific Tag 221 OUI be resolved by lookup of OUI in manuf db?
- N - Unable to match
- Y - Check OUI matches our heuristics
- Y - return match
- N - unknown / unable to match

15. Detecting 6 GHz Capability Out-of-band via Alternative Operating Class
- a. is Supported Operating Classes tagged parameter present?
- N - not supported
- Y - may be supported
Expand Down
3 changes: 2 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ Please be aware of the following things when filing bug reports:

### Development Environment

Consider using PyCharm or Visual Studio Code with the official Python and Pylance extensions from Microsoft (recommended).
Consider using Visual Studio Code with the official Python extensions from Microsoft.

### Development Setup ('without pip install or pipx', 'may be recommended for development work'):

Expand All @@ -60,6 +60,7 @@ git clone <repo>
cd <repo>
virtualenv venv
source venv/bin/activate
pip install -U pip pip-tools setuptools wheel
pip install -r requirements.txt
sudo ./venv/bin/python3 -m profiler
sudo ./venv/bin/python3 -m profiler <optional params>
Expand Down
2 changes: 1 addition & 1 deletion DEPLOYMENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ There are two workflows defined.
On your build host, install the build tools (these are only needed on the device doing the build):

```bash
sudo apt-get install build-essential debhelper devscripts equivs python3-pip python3-all python3-dev python3-setuptools dh-virtualenv
sudo apt-get install build-essential debhelper devscripts equivs python3-pip python3-all python3-dev python3-setuptools dh-virtualenv dh-python
```

Install Python depends so that the tooling doesn't fail when it tries to evaluate which tests to run.
Expand Down
28 changes: 28 additions & 0 deletions DEVELOPMENT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Initial Development Setup

## Repository

1. Clone repo to development host

2. Create and activate virtualenv

```bash
python3 -m venv venv
source venv/bin/activate
```

3. Update and install tools

```bash
pip install -u pip pip-tools setuptools wheel
```

4. Install depends

```bash
pip install -r requirements.txt
```

## Building and Packaging

Refer to DEPLOYMENT.md
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Copyright 2021 Josh Schmelzle
Copyright 2022 Josh Schmelzle <[email protected]>

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
Expand Down
4 changes: 3 additions & 1 deletion MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
include profiler/config.ini
include profiler/config.ini
include extras.txt
include requirements.txt
12 changes: 9 additions & 3 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
Unreleased

- TBD
Release 1.0.16

- Chipset lookup via heuristics
- Profile VHT Beamformee STS Capability
- Profile HE Beamformee STS Capability
- Fix crash in OUI profiling (caused by certain Wi-Fi 7 clients)
- Add basic Wi-Fi 7 profiling (presence of EHT IEs)
- Add Profiler Vendor IE with TLVs for profiler version and system version
- Switch dependency on manuf to manuf2 fork

Release 1.0.15

Expand Down
4 changes: 2 additions & 2 deletions coverage.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 13 additions & 1 deletion debian/changelog
Original file line number Diff line number Diff line change
@@ -1,4 +1,16 @@
wlanpi-profiler (1.0.15) UNRELEASED; urgency=medium
wlanpi-profiler (1.0.16) unstable; urgency=medium

* Chipset lookup via heuristics
* Profile VHT Beamformee STS Capability
* Profile HE Beamformee STS Capability
* Fix crash in OUI profiling (caused by certain Wi-Fi 7 clients)
* Add basic Wi-Fi 7 profiling (presence of EHT IEs)
* Add Profiler Vendor IE with TLVs for profiler version and system version
* Switch dependency on manuf to manuf2 fork

-- Josh Schmelzle <[email protected]> Fri, 16 Feb 2024 10:12:11 -0400

wlanpi-profiler (1.0.15) unstable; urgency=medium

* Handle traceback when config.ini is corrupt
* Minor cosmetic changes
Expand Down
2 changes: 1 addition & 1 deletion debian/compat
Original file line number Diff line number Diff line change
@@ -1 +1 @@
12
11
4 changes: 2 additions & 2 deletions debian/control
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ Build-Depends: debhelper (>= 11),
python3-distutils,
python3-venv
Standards-Version: 4.6.0
X-Python3-Version: >= 3.7
X-Python3-Version: >= 3.9
Homepage: https://github.com/WLAN-Pi/profiler

Package: wlanpi-profiler
Architecture: any
Pre-Depends: dpkg (>= 1.16.1), python3 (>=3.7), python3-distutils, ${misc:Pre-Depends}
Pre-Depends: dpkg (>= 1.16.1), python3 (>=3.9), python3-distutils, ${misc:Pre-Depends}
Depends: ${misc:Depends}
Description: WLAN Pi - Wi-Fi client capabilities profiler
wlanpi-profiler creates a fake AP for the collection and analysis of station association frames.
2 changes: 1 addition & 1 deletion debian/copyright
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Upstream-Name: wlanpi-profiler
Source: https://www.github.com/wlan-pi/wlanpi-profiler

Files: *
Copyright: 2021 Josh Schmelzle <[email protected]>
Copyright: 2024 Josh Schmelzle <[email protected]>
License: 3-clause BSD

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Expand Down
2 changes: 1 addition & 1 deletion debian/rules
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ SNAKE=/usr/bin/python3
PACKAGE=$(shell dh_listpackages)
VERSION=$(shell parsechangelog | grep ^Version: | sed -re 's/[^0-9]+([^-]+).*/\1/')
SDIST_DIR=debian/$(PACKAGE)-$(VERSION)
EXTRA_REQUIREMENTS=--upgrade-pip --preinstall "setuptools>=57" --preinstall "wheel>=0.36"
EXTRA_REQUIREMENTS=--upgrade-pip-to 23.2 --preinstall "setuptools==68.0.0" --preinstall "wheel==0.40.0"
DH_VENV_ARGS=--builtin-venv --python ${SNAKE} $(EXTRA_REQUIREMENTS) \
--extra-pip-arg=--progress-bar=on

Expand Down
2 changes: 1 addition & 1 deletion debian/wlanpi-profiler.1
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ Bugs and issues can be reported on GitHub:
https://github.com/wlan-pi/profiler
.SH COPYRIGHT
.PP
Copyright \[co] 2021 Josh Schmelzle.
Copyright \[co] 2024 Josh Schmelzle.
License BSD-3-Clause.
.SH SEE ALSO
.PP
Expand Down
2 changes: 1 addition & 1 deletion debian/wlanpi-profiler.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ https://github.com/wlan-pi/profiler

# COPYRIGHT

Copyright © 2021 Josh Schmelzle. License BSD-3-Clause.
Copyright © 2024 Josh Schmelzle. License BSD-3-Clause.

# SEE ALSO

Expand Down
32 changes: 17 additions & 15 deletions etc/wlanpi-profiler/config.ini
Original file line number Diff line number Diff line change
@@ -1,33 +1,35 @@
# ___ _ _ ___ _
# ___ ___ ___| _|_| |___ ___ ___ ___ ___| _|_|___
# | . | _| . | _| | | -_| _| | _| . | | _| | . |
# | _|_| |___|_| |_|_|___|_| |___|___|_|_|_| |_|_ |
# |_| |___|
#
# _ _ __ _ _
# __ _| | __ _ _ __ _ __ (_) _ __ _ __ ___ / _(_) | ___ _ __
# \ \ /\ / / |/ _` | '_ \| '_ \| |_____| '_ \| '__/ _ \| |_| | |/ _ \ '__|
# \ V V /| | (_| | | | | |_) | |_____| |_) | | | (_) | _| | | __/ |
# \_/\_/ |_|\__,_|_| |_| .__/|_| | .__/|_| \___/|_| |_|_|\___|_|
# |_| |_|
#
# The following settings define the default config.
# NOTE: Command-line options will take precedence over this config.
# WARNING: Changing the section names or keys *will* break things.
# The following configuration controls the default behavior for the profiler
# Note command-line arguments supersede defaults found here
# WARNING: Changing section or key names (channel, interface, SSID) will break profiler

[GENERAL]

# channel for profiler AP
channel: 36

# SSID name for profiler AP
# blank means SSID will be `Profiler xxx` where `xxx` is the last 3 characters of the eth0 MAC.
ssid:

# interface used by profiler AP
# interface for profiler AP
interface: wlan0

# SSID for profiler AP (no value after : means SSID will be `Profiler xxx` where xxx is the last 3 characters of the eth0 MAC)
ssid:

# enable or disable 802.11r information elements (True/False)
ft_disabled: False

# enable or disable 802.11ax information elements (True/False)
he_disabled: False

# disables beacons and instead only listens for assoc req frames (True/False)
# enable or disable 802.11be information elements (True/False)
be_disabled: False

# disables beacons and instead only listens for assoc req. frames (True/False)
listen_only: False

# use the system's hostname as the profiler AP SSID (True/False)
Expand Down
10 changes: 10 additions & 0 deletions extras.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
black
isort
autoflake
mypy
flake8
pytest
pytest-cov
pytest-mock
tox
coverage-badge
Loading

0 comments on commit 0131aca

Please sign in to comment.