Security News
PyPI’s New Archival Feature Closes a Major Security Gap
PyPI now allows maintainers to archive projects, improving security and helping users make informed decisions about their dependencies.
github.com/bmegli/wifi-scan
This is a small C/C++ library for monitoring signal strength of WiFi networks. It can collect data from:
Any platforms supporting nl80211 netlink interface (new 802.11 interface). Generally *nix platforms.
Wireless devices that have cfg80211/mac80211 driver (typically everything in use nowadays).
From wireless.wiki.kernel.org:
All new Linux wireless drivers should be written targeting either cfg80211 for fullmac devices or mac80211 for softmac devices.
The return values of public library functions are subject to change (mainly error codes). Currently if anything goes wrong library dies cleanly with error message on stderr explaining what happened. Note that if library dies - it also kills your program and you have no chance to recover.
The library depends on libmnl for netlink nl80211 user space - kernel space communication.
# update package repositories
sudo apt-get update
# get compilers and make
sudo apt-get install build-essential
# get dependencies
sudo apt-get install libmnl0 libmnl-dev
# get git
sudo apt-get install git
# clone the repository
git clone https://github.com/bmegli/wifi-scan.git
# finally build the library and examples
cd wifi-scan
make all
Check your wireless interface name with ifconfig
:
ifconfig
Run wifi-scan-station
with your interface, e.g. wlan0
./wifi-scan-station wlan0
Run wifi-scan-all
with your interface, e.g. wlan0
.
Triggering a scan needs permission so:
sudo ./wifi-scan-all wlan0
See examples directory for more complete and commented examples with error handling.
Normally you would call wifi_scan_station
or wifi_scan_all
in a loop.
struct station_info station;
struct wifi_scan *wifi = wifi_scan_init("wlan0");
if (wifi_scan_station(wifi, &station) > 0 )
printf("%s signal %d dBm avg %d dBm rx %u tx %u\n",
station.signal_dbm, station.signal_avg_dbm,
station.rx_packets, station.tx_packets);
wifi_scan_close(wifi);
int status, i;
struct bss_info bss[10];
struct wifi_scan *wifi = wifi_scan_init("wlan0");
status=wifi_scan_all(wifi, bss, 10);
for(i=0;i<status && i<10;++i)
printf("%s signal %d dBm on %u MHz seen %d ms ago status %s\n",
bss[i].signal_mbm/100, bss[i].frequency, bss[i].seen_ms_ago,
(bss[i].status==BSS_ASSOCIATED ? "associated" : ""));
wifi_scan_close(wifi);
Don't forget to link with lmnl
C
gcc wifi_scan.c your_program.c -lmnl -o your-program
C++
gcc -c wifi_scan.c
g++ -c your_program.cpp
g++ wifi_scan.o your_program.o -lmnl -o your-program
Here are some of the resources that helped writing this library:
And finally the implementation wifi-scan.c
has some comments that may be usefull to you.
Library is licensed under Mozilla Public License, v. 2.0
This is similiar to LGPL but more permissive:
Like in LGPL, if you modify this library, you have to make your changes available. Making a github fork of the library with your changes satisfies those requirements perfectly.
Alternatively build examples and shared library with Cmake
sudo apt-get install cmake
cd wifi-scan
mkdir build
cd build
cmake ..
make
Some notable uses found with google search:
FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now allows maintainers to archive projects, improving security and helping users make informed decisions about their dependencies.
Research
Security News
Malicious npm package postcss-optimizer delivers BeaverTail malware, targeting developer systems; similarities to past campaigns suggest a North Korean connection.
Security News
CISA's KEV data is now on GitHub, offering easier access, API integration, commit history tracking, and automated updates for security teams and researchers.