     [](https://github.com/joshschmelzle/lswifi/blob/main/CODE_OF_CONDUCT.md)
<img src="https://raw.githubusercontent.com/joshschmelzle/lswifi/main/docs/lswifi_orange_crop.png" width="400">
`lswifi` is a CLI-centric Wi-Fi scanning tool for Windows that provides more information about nearby Wi-Fi networks than built-in tools (e.g. `netsh show wlan networks`). Examples include Received Signal Strength Indicator (RSSI), showing security AKMs and ciphers, parsing 802.11 feature set, looking at 6 GHz Reduced Neighbor Reports, and more. With capable Wi-Fi adapters, lswifi can detect and show networks in 2.4 GHz, 5 GHz, and 6 GHz bands.
Installation
------------
Note: The Python Scripts directory must be added to the PATH environment variable.
``` {.sourceCode .bash}
> python -m pip install lswifi
```

Usage
-----
Output nearby Wi-Fi networks:
``` {.sourceCode .bash}
> lswifi
```
Output nearby Wi-Fi networks that have a detected signal of `-60 dBm` or stronger:
``` {.sourceCode .bash}
> lswifi -t -60
```
Output only networks that match `SegaGenesis` (partial match support):
``` {.sourceCode .bash}
> lswifi -include SegaGenesis
```
Output verbose information (including Information Elements) for BSSID `00:00:00:00:00:00` (exact match):
``` {.sourceCode .bash}
> lswifi -ies 00:00:00:00:00:00
```

Print help information:
``` {.sourceCode .bash}
> lswifi -h
```

Print and add detected AP names column in output:
``` {.sourceCode .bash}
> lswifi --ap-names
```
Print and add detected AP names and QBSS column in output (try adding --mfp or --tpc too!):
``` {.sourceCode .bash}
> lswifi --ap-names --qbss
```
Print an alternative table for BSSes which may contain 6 GHz Reduced Neighbor Reports:
``` {.sourceCode .bash}
> lswifi -rnr
```
Watch event notifications (inc. roaming, connection, scanning, etc.):
``` {.sourceCode .bash}
> lswifi --watchevents
```
Export scan results to pcap:
``` {.sourceCode .bash}
> lswifi -export
```
CLI options
-----------
```ascii
options:
-h, --help show this help message and exit
-version, --version, -V
show program's version number and exit
-n, --scans # set how many scans to do before exiting
--time # set test in seconds to perform scans for
-i, --interval # seconds between scans
-ies [BSSID] print extra information about information elements for a specified BSSID
-threshold, -t -82 threshold which excludes networks with weak signal strength from results (-82 is default)
-all remove threshold filtering which excludes results with weaker signal
-g display filter to limit output by 2.4 GHz band
-a display filter to limit output by 5 GHz band
-six display filter to limit output by 6 GHz band
-include, -inc SSID display filter to limit results by specified SSIDs (partial matching supported)
-exclude, -exc SSID display filter to exclude results by specified SSIDs (partial matching supported)
-bssid, -bss BSSID display filter to limit results by specified BSSIDs (partial matching supported)
--ap-names adds an ap name column to output and will cache ap names locally to help provide consistent results
--qbss adds station and utilization columns to output using information from AP beacon QBSS IE
--tpc adds TPC column to output using information from AP beacon 802.11h
--mfp, --pmf adds Protected Management Frame column to output using information from AP beacon RSNE
--period adds beacon period column to output using information from AP beacon
--uptime, -uptime sort output by access point uptime based on beacon timestamp
-rnr, --rnr special mode to create an alternate table based on RNR results
--channel-width 20|40|80|160|320
display filter to limit output by a specified channel width
-ethers adds an ap name column to output and use an ethers file for the ap names
--append-ethers BSSID,APNAME
append BSSID and AP name to ethers file for AP names
--display-ethers display the list of saved ethers; (BSSID,APNAME) mapping
--data-location displays where config items are stored on the local machine
-ap print the BSSID of the connected AP
-channel print the channel of the connected AP
-raw format output as the raw value for other scripts (for -ap and -channel only)
--get-interfaces print current Wi-Fi status and information
--list-interfaces print a list of available WLAN interfaces
--json [JSON] output will be formatted as json
--indent 4 JSON output will be formatted with pretty print with provided indent level
--csv [CSV] output will be formatted as csv
-exportraw, -expraw [BSSID]
export raw bss and ies bytefiles. default behavior will export all from a scan. to export only one, provide full mac address of the BSSID as argument.
-export, -exp [BSSID]
export scan results to pcapng file. default behavior will export all from a scan. to export only one, provide full mac address of the BSSID as argument.
-path EXPORT_PATH specify output path for pcapng export (defaults to app data directory)
-decoderaw BYTE_FILE decode a raw .BSS or .IES file
-decode PCAPNG_FILE parse scan results from pcapng file. by default shows all networks in the file, can be combined with filtering options.
--bytes BSSID output debugging bytes for a specified BSSID found in scan results.
--watchevents a special mode which watches for notification on a wireless interface such as connection and roaming events
--syslog <server IP> syslogs events from --watchevents to a remote syslog server
--debug increase verbosity for debugging
```
Raw data
{
"_id": null,
"home_page": "https://github.com/joshschmelzle/lswifi",
"name": "lswifi",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "lswifi, scanner, wireless, wifi, 802.11, wlan, rlan, native wifi, wlanapi",
"author": "Josh Schmelzle",
"author_email": "josh@joshschmelzle.com",
"download_url": "https://files.pythonhosted.org/packages/59/c2/63413b3d19d4793ad692540c5fa06ed5c1da7259d876a6f31e1ab95c061e/lswifi-0.1.53.tar.gz",
"platform": "win32",
"description": "     [](https://github.com/joshschmelzle/lswifi/blob/main/CODE_OF_CONDUCT.md)\r\n\r\n<img src=\"https://raw.githubusercontent.com/joshschmelzle/lswifi/main/docs/lswifi_orange_crop.png\" width=\"400\">\r\n\r\n`lswifi` is a CLI-centric Wi-Fi scanning tool for Windows that provides more information about nearby Wi-Fi networks than built-in tools (e.g. `netsh show wlan networks`). Examples include Received Signal Strength Indicator (RSSI), showing security AKMs and ciphers, parsing 802.11 feature set, looking at 6 GHz Reduced Neighbor Reports, and more. With capable Wi-Fi adapters, lswifi can detect and show networks in 2.4 GHz, 5 GHz, and 6 GHz bands.\r\n\r\nInstallation\r\n------------\r\n\r\nNote: The Python Scripts directory must be added to the PATH environment variable.\r\n\r\n``` {.sourceCode .bash}\r\n> python -m pip install lswifi\r\n```\r\n\r\n\r\n\r\nUsage\r\n-----\r\n\r\nOutput nearby Wi-Fi networks:\r\n\r\n``` {.sourceCode .bash}\r\n> lswifi\r\n```\r\n\r\nOutput nearby Wi-Fi networks that have a detected signal of `-60 dBm` or stronger:\r\n\r\n``` {.sourceCode .bash}\r\n> lswifi -t -60\r\n```\r\n\r\nOutput only networks that match `SegaGenesis` (partial match support):\r\n\r\n``` {.sourceCode .bash}\r\n> lswifi -include SegaGenesis\r\n```\r\n\r\nOutput verbose information (including Information Elements) for BSSID `00:00:00:00:00:00` (exact match):\r\n\r\n``` {.sourceCode .bash}\r\n> lswifi -ies 00:00:00:00:00:00\r\n```\r\n\r\n\r\n\r\nPrint help information:\r\n\r\n``` {.sourceCode .bash}\r\n> lswifi -h\r\n```\r\n\r\n\r\n\r\nPrint and add detected AP names column in output:\r\n\r\n``` {.sourceCode .bash}\r\n> lswifi --ap-names\r\n```\r\n\r\nPrint and add detected AP names and QBSS column in output (try adding --mfp or --tpc too!):\r\n\r\n``` {.sourceCode .bash}\r\n> lswifi --ap-names --qbss\r\n```\r\n\r\nPrint an alternative table for BSSes which may contain 6 GHz Reduced Neighbor Reports:\r\n\r\n``` {.sourceCode .bash}\r\n> lswifi -rnr\r\n```\r\n\r\nWatch event notifications (inc. roaming, connection, scanning, etc.):\r\n\r\n``` {.sourceCode .bash}\r\n> lswifi --watchevents\r\n```\r\n\r\nExport scan results to pcap:\r\n\r\n``` {.sourceCode .bash}\r\n> lswifi -export\r\n```\r\n\r\nCLI options\r\n-----------\r\n\r\n```ascii\r\noptions:\r\n -h, --help show this help message and exit\r\n -version, --version, -V\r\n show program's version number and exit\r\n -n, --scans # set how many scans to do before exiting\r\n --time # set test in seconds to perform scans for\r\n -i, --interval # seconds between scans\r\n -ies [BSSID] print extra information about information elements for a specified BSSID\r\n -threshold, -t -82 threshold which excludes networks with weak signal strength from results (-82 is default)\r\n -all remove threshold filtering which excludes results with weaker signal\r\n -g display filter to limit output by 2.4 GHz band\r\n -a display filter to limit output by 5 GHz band\r\n -six display filter to limit output by 6 GHz band\r\n -include, -inc SSID display filter to limit results by specified SSIDs (partial matching supported)\r\n -exclude, -exc SSID display filter to exclude results by specified SSIDs (partial matching supported)\r\n -bssid, -bss BSSID display filter to limit results by specified BSSIDs (partial matching supported)\r\n --ap-names adds an ap name column to output and will cache ap names locally to help provide consistent results\r\n --qbss adds station and utilization columns to output using information from AP beacon QBSS IE\r\n --tpc adds TPC column to output using information from AP beacon 802.11h\r\n --mfp, --pmf adds Protected Management Frame column to output using information from AP beacon RSNE\r\n --period adds beacon period column to output using information from AP beacon\r\n --uptime, -uptime sort output by access point uptime based on beacon timestamp\r\n -rnr, --rnr special mode to create an alternate table based on RNR results\r\n --channel-width 20|40|80|160|320\r\n display filter to limit output by a specified channel width\r\n -ethers adds an ap name column to output and use an ethers file for the ap names\r\n --append-ethers BSSID,APNAME\r\n append BSSID and AP name to ethers file for AP names\r\n --display-ethers display the list of saved ethers; (BSSID,APNAME) mapping\r\n --data-location displays where config items are stored on the local machine\r\n -ap print the BSSID of the connected AP\r\n -channel print the channel of the connected AP\r\n -raw format output as the raw value for other scripts (for -ap and -channel only)\r\n --get-interfaces print current Wi-Fi status and information\r\n --list-interfaces print a list of available WLAN interfaces\r\n --json [JSON] output will be formatted as json\r\n --indent 4 JSON output will be formatted with pretty print with provided indent level\r\n --csv [CSV] output will be formatted as csv\r\n -exportraw, -expraw [BSSID]\r\n export raw bss and ies bytefiles. default behavior will export all from a scan. to export only one, provide full mac address of the BSSID as argument.\r\n -export, -exp [BSSID]\r\n export scan results to pcapng file. default behavior will export all from a scan. to export only one, provide full mac address of the BSSID as argument.\r\n -path EXPORT_PATH specify output path for pcapng export (defaults to app data directory)\r\n -decoderaw BYTE_FILE decode a raw .BSS or .IES file\r\n -decode PCAPNG_FILE parse scan results from pcapng file. by default shows all networks in the file, can be combined with filtering options.\r\n --bytes BSSID output debugging bytes for a specified BSSID found in scan results.\r\n --watchevents a special mode which watches for notification on a wireless interface such as connection and roaming events\r\n --syslog <server IP> syslogs events from --watchevents to a remote syslog server\r\n --debug increase verbosity for debugging\r\n```\r\n",
"bugtrack_url": null,
"license": "BSD-3-Clause",
"summary": "a CLI-centric Wi-Fi scanning tool for Windows",
"version": "0.1.53",
"project_urls": {
"Homepage": "https://github.com/joshschmelzle/lswifi"
},
"split_keywords": [
"lswifi",
" scanner",
" wireless",
" wifi",
" 802.11",
" wlan",
" rlan",
" native wifi",
" wlanapi"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "a27a9e3cd10d91be89e969778727261676f7f175c73bc105015533251467da98",
"md5": "37a3515c0c686504fad60d6c8a44c181",
"sha256": "5e1b20469adec7d84370f3002b5720c1752b64bce0cbcd4bec1ff2778a772900"
},
"downloads": -1,
"filename": "lswifi-0.1.53-py3-none-any.whl",
"has_sig": false,
"md5_digest": "37a3515c0c686504fad60d6c8a44c181",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 96624,
"upload_time": "2025-07-22T19:30:43",
"upload_time_iso_8601": "2025-07-22T19:30:43.570947Z",
"url": "https://files.pythonhosted.org/packages/a2/7a/9e3cd10d91be89e969778727261676f7f175c73bc105015533251467da98/lswifi-0.1.53-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "59c263413b3d19d4793ad692540c5fa06ed5c1da7259d876a6f31e1ab95c061e",
"md5": "86e15a553b37d56ed1589f9092f31faf",
"sha256": "960e24479d3129979440dd19a48cfbcdc4a77cd2be77b8b9916a590e1366226c"
},
"downloads": -1,
"filename": "lswifi-0.1.53.tar.gz",
"has_sig": false,
"md5_digest": "86e15a553b37d56ed1589f9092f31faf",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 94340,
"upload_time": "2025-07-22T19:30:45",
"upload_time_iso_8601": "2025-07-22T19:30:45.376403Z",
"url": "https://files.pythonhosted.org/packages/59/c2/63413b3d19d4793ad692540c5fa06ed5c1da7259d876a6f31e1ab95c061e/lswifi-0.1.53.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-22 19:30:45",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "joshschmelzle",
"github_project": "lswifi",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"tox": true,
"lcname": "lswifi"
}