ネットリンク ライブラリ nl80211.h を使用して wifi ネットワークをスキャンし、ssid、MAC アドレス、ステータス、周波数、信号を正常に取得しています。同じライブラリを使用して、すべてのネットワークのセキュリティ タイプを追加したいと考えています。セキュリティのためにコードにハードコーディングしている整数を与える列挙型の 1 つとして NL80211_BSS_CAPABILITY を使用しています。これは面倒なようで、このアプローチでは多くのデータ (整数値) を入力する必要があります。WPA/WPA2 を取得することは問題ありませんが、オープン ネットワークが存在する場合、コードは失敗します。以下は、これまでに使用した値です。できれば wpa_supplicant および netlink Library に類似した、ネットワーク (ESS または WEP) を開くことができるより良いロジックが評価されます。
int keynum;
char *keytype;
keynum = nla_get_u32(bss[NL80211_BSS_CAPABILITY]);
if(keynum==5153 || keynum == 34)
keytype="NONE";
else if(keynum==5169 || keynum == 1297 || keynum==1073|| keynum == 5393)
keytype="WPA2";
else if (keynum == 1041)
keytype="WPA WPA2";
else
keytype="WPA WPA2";