检查无线AP是否已连接

时间:2011-05-04 11:41:55

标签: c linux encryption posix wlan

我正在编写一个linux无线网络扫描程序,它提供有关接入点的信息,但它也必须检查接入点是否已连接并且是否可以通信(即加密工作正常)。仅ioctl(.., SIOCGIWAP, ..)检查它是不够的,因为它并不真正检查WPA密钥是否正确以及是否可以通信AP。

我正在做的是检查无线接口是否与AP关联:

  • 检查ioctl(...,SIOCGIWAP,...)是否返回某个AP的MAC地址
  • 检查接口是否配置了IP(我知道在静态配置的情况下它不会提供任何信息,但我可以接受它)
  • 检查AP和客户端使用的加密(例如WEP,WPA,WPA2)是否相同(以确保在AP端更改加密方法后,它不会被正确检测为已连接)。

我遇到了最新的问题 - 我可以检测到AP使用的加密,但我真的不知道如何检查主机使用的加密方式。你知道如何检查吗?或者您可能知道更好的方法来确定AP和客户端之间的连接是否正常工作(我不想使用ICMP或类似的东西 - 我的工具必须快速,因此在本地执行所有操作)

1 个答案:

答案 0 :(得分:0)

使用SIOCGIWENCODE调用ioctl可以打开或关闭加密密钥(区分开放和加密)。

使用SIOCGIWESSID调用ioctl查询ESSID,然后您可以在主机和AP之间播放ESSID匹配。

使用SIOCGIWENCODEEXT调用ioctl会查询加密类型(区分WEP,WPA和WPA2等),但前提是无线卡的内核驱动程序支持加密类型。