我正在编写一个linux无线网络扫描程序,它提供有关接入点的信息,但它也必须检查接入点是否已连接并且是否可以通信(即加密工作正常)。仅ioctl(.., SIOCGIWAP, ..)
检查它是不够的,因为它并不真正检查WPA密钥是否正确以及是否可以通信AP。
我正在做的是检查无线接口是否与AP关联:
ioctl(...,SIOCGIWAP,...)
是否返回某个AP的MAC地址我遇到了最新的问题 - 我可以检测到AP使用的加密,但我真的不知道如何检查主机使用的加密方式。你知道如何检查吗?或者您可能知道更好的方法来确定AP和客户端之间的连接是否正常工作(我不想使用ICMP或类似的东西 - 我的工具必须快速,因此在本地执行所有操作)
答案 0 :(得分:0)
使用SIOCGIWENCODE调用ioctl可以打开或关闭加密密钥(区分开放和加密)。
使用SIOCGIWESSID调用ioctl查询ESSID,然后您可以在主机和AP之间播放ESSID匹配。
使用SIOCGIWENCODEEXT调用ioctl会查询加密类型(区分WEP,WPA和WPA2等),但前提是无线卡的内核驱动程序支持加密类型。