StupidBeauty
Read times:640Posted at:Thu Apr 29 00:07:50 2010本座写用户手册写累了,于是来写一写无线网络扫描的原理吧。 无线网络的扫描分成两种:
  1. 被动扫描
  2. 主动扫描
被动扫描就是让你的无线网卡监听由接点广播的Beacon(信标)帧,从中取出SSID等信息。 主动扫描就是让你的无线网卡主动广播出Probe Request(探测请求)帧,并且等待接入点回复的Probe Response(探测回复)帧,从中取出SSID等信息。 如果你想写一个无线网络扫描器的话,在不同的系统中,你能做的事是不同的。 在Linux系统中,如果使用了开源驱动程序的话,你往往能够利用开源驱动程序所提供的功能来打开无线网卡的RFMON模式,在这种模式下,你可以获得无线网卡所接收到的所有的原始的802.11帧,这样,你就能解析其中的Beacon帧、Probe Response帧,能发送Probe Request帧。 为什么这里本座要强调原始的802.11帧呢?因为按照本座的理解,一般模式下,无线网卡的驱动程序会将802.11的数据帧直接翻译成802.3的数据帧并且上交到系统。在这里又要扯远一点,802.11的帧是分成管理帧、控制帧、数据帧三种的。按照802.11标准(不知道是不是啊,说错了莫怪本座,指出就行了),驱动程序在正常通信时,应当将802.11的数据帧翻译成802.3的数据帧,去掉802.11的帧头,加上等同的802.3帧头,而控制帧、管理帧,由于没有对应的802.3帧格式,因此不会被翻译并提交。所以,在正常模式下,网络层的软件根本看不到802.11帧的原来模样,而控制帧、管理帧更是根本就见不到,然而很荣幸的是,Beacon帧、Probe Request帧、Probe Response帧都是控制帧。所以,你在写无线网络扫描器时,如果准备自己亲自来处理Beacon帧、Probe Request帧、Probe Response帧的话,在Linux上,你就需要使用RFMON模式。当然,如果你不准备亲自处理这些帧,只想使用驱动程序提供的接口来间接获取它所扫描到的无线网络的话,系统应该提供了相应的API,不过本座没有研究过那些API是什么。使用系统API这种方法来获取网络列表,应该是非常简单的。 在Mac系统中,由于本座没有用过Mac系统,所以本座什么话都说不上。 在Windows系统中,由于驱动程序都是闭源的驱动程序,厂商都只按照标准做自己的本分工作,让驱动程序将802.11数据帧翻译成802.3数据帧上交给系统,根本不支持RFMON模式,所以很荣幸地,对于一般的网卡你是接触不到它的原始的802.11帧的。只有一个例外,就是AirPCap的无线网卡,它是专为嗅探(或者其它目的)而设计的,用这个网卡,你可以亲自处理它的原始802.11帧,还是很荣幸,它很贵,本座是不会买的。所以,在Windows系统中,对于一般的网卡,你是不可能亲自处理到那些控制帧的,只有使用驱动程序所提供的接口来获取它扫描到的网络的情况。由于这些接口是按照NDIS规范来做的,所以Windows又将这些接口按照NDIS封装成了WlanApi。所以,使用WlanApi来命令网卡发起主动扫描,再使用WlanApi来取出网卡所扫描到的网络列表就行了。事情比较简单,只是不那么过瘾了。本座下期将介绍的毕业设计中的世纪之作飞豚扫描器在Windows系统上就是使用WlanApi来工作的,先期待着吧。 总结一下,无论是被动扫描还是主动扫描,本座认为只有在你能够接触到原始的802.11帧的时候才有意义。否则的话,只通过API,你根本没接触到原始的Beacon帧、Probe Request帧、Probe Response帧,也决定不了驱动程序使用何种扫描方式,因此就无所谓主动扫描还是被动扫描了。 使用一套代码来做一个跨平台的无线扫描器,是做不到的。在代码中必须判断自己所处的操作系统。
Your opinions
Posted at:Sun May 2 15:28:14 2010砖家Enter your comments here... 啊……好高端……
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands

 
Recent comments
2017年4月~2019年4月垃圾短信排行榜Posted at:Thu Sep 26 04:51:48 2024
Qt5.7文档翻译:QWebEngineCookieStore类,QWebEngineCookieStore ClassPosted at:Fri Aug 11 06:50:35 2023盲盒kill -9 18289 Grebe.20230517.211749.552.mp4