无线产品如蓝牙、zigbee开发过程中,由于没有直接连接,通常开发中都要用到一个dongle用于抓取空中数据包,然后分析定位网络、通讯问题。Wi-Fi开发中同样需要空中抓包,但是Wi-Fi用于抓包的设备不叫dongle,通常叫sniffer。
我们知道,无论有线以太网还是无线Wi-Fi,在正常工作模式下,mac层只处理广播包或者发给自己的数据包,目标地址与自己mac地址不符的数据包都将会被丢弃。sniffer其实是将Wi-Fi芯片设置为混杂模式,该模式下Wi-Fi芯片将会把收到的所有数据都传到上层,这样上层应用软件就可以实现数据抓包、分析了。
要实现Wi-Fi空中抓包,需要满足以下几个条件:
1:一台电脑
2:一个支持进入混杂模式的网卡
3:一个数据分析软件
如果你用的是纯Linux系统或苹果mac电脑,那么通常可以直接使用wireshark,通过电脑自带的网卡来抓取无线数据包,Linux和mac一般都支持网卡进入混杂模式。但你如果用的是和我一样的windows系统,那么就得慢慢看完下面的文章了。Windows下的网卡好像没进混杂模式这么一说吧?那么我们就需要用到一个叫omnipeek的软件和支持sniffer的外置USB网卡及对应的sniffer网卡驱动。
Omnipeek是一款功能强大的网络报文扫描软件,它不仅可以扫描有线网络下的报文信息,还可以针对无线网卡进行监控和扫描。通过该软件我们可以更清晰更快捷的定位无线网络故障,根据扫描结果调整自己的无线设备的参数信息。和其他sniffer工具一样Omnipeek可以针对自己网卡接收和发送的每个报文进行分析和保存,还可以针对一些报文进行分析,结果各种过滤规则可以让我们更清楚的了解 当前网络中存在的问题。同时Omnipeek可以针对无线网卡进行监控,通过对无线报文的分析,了解无线网络的运行状态,让用户可以清楚的知道无线网络使用的频段、信号强弱、SSID等信息。
目前使用较多的版本为Omnipeek_enterprise_11,可支持Windows 64bit操作系统。
Omnipeek并不支持所有无线网卡,支持的无线网卡可在https://mypeek.wildpackets.com/driver_downloads.php查询,同时需要安装特殊的驱动才可以抓包。
我使用的是很多Wi-Fi芯片厂家工程师都在使用的“ Cisco WUSB600N V2双频无线网卡”,淘宝上可以买到,价格略高。
卖家会提供抓包专用windows驱动,普通驱动程序无法实现抓包,安装完成可在设备管理器中查到该网卡。
下载和安装好Omnipeek之后启动Omnipeek,在windows10下,必须“以管理员身份运行”。
启动Omnipeek之后,首先我们需要建立一个新的捕捉。在启动页面中“New Capture"启动新普通,在该页面下可以进行进行“捕捉”、“存储”等相关设置。
Omnipeek支持有线网卡和无线网卡,在Adapter窗口中选择适配器。我当前使用的是“WLAN4”,其中只有Omnipeek API显示为“Yes”表明该网卡Omnipeek支持捕捉。
Omnipeek抓包需要指定对应信道,在“802.11”项中设置,有2种模式可以选择,“Number”中选择固定1个信道。或“Scan”中选择多个信道。
点击“确定”后,点击右上角“Start Capture”即可开始抓包。
要通过Omnipeek来达到我们预设的目标,最重要的用好“过滤”功能。Omnipeek提供了强大了过滤器功能,可通过多个入口编辑“Filters”。
在过滤器中,选择软件自带的过滤条件,或点击“Insert”,可添加自定义过滤条件。
选中“address filter”并在地址栏中输入地址,并在地址类型中选择相关的类型。
配置完过滤器后,可点击“New Capture”立即开始捕捉。此时抓包的数据已经进行了过滤,与过滤项无关的数据已经被过滤。
同时我们也可以先抓包再过滤,点击“Capture”页面左上角“筛选”选择过滤条件。
过滤栏会显示当前选中的过滤项。
还可以通过插入多个操作,进行多个过滤项同时过滤。
点击右边栏开始绿色箭头,软件会弹出结果选择页面,可进行不同操作,如“Copy selected packets to new widow”复制到新的窗口分析。
新窗口数据显示的都是当前过滤器选中的数据包。