2011-05-04 130 views
1

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

我在做什么检查,如果无线接口与AP关联是:如果接口有IP配置

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

我被卡住了最新的一点 - 我可以检测到AP使用的加密,但我真的不知道如何检查我的主机使用什么加密。你有想法如何检查?或者,也许你知道更好的方法来确定AP和客户端之间的连接是否正在工作(我不想使用ICMP或类似的东西 - 我的工具必须快速并因此在本地做所有事情)

回答

0

使用SIOCGIWENCODE查询加密调用ioctl键打开或关闭(区分打开和加密)。

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

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