2011-05-04 132 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等),但僅限於無線卡的內核驅動程序支持。