本人习惯使用 Omnipeek 抓包分析,所以 wireshark 的实验只讲到抓包完成。
Windows 环境采用 wireshark 抓包是比较麻烦的,因为支持在 Windows 环境中支持抓包的网卡并不多,所以本次直接用 Linux 环境来做试验。
使用网卡为:RT3070L,70块钱一张的网卡。
何为 monitor?顾名思义和监视有关,但是和有线网络监视不同,对有线网络监视抓包只需要运行 wireshark 选择一张网卡即可。无线网络的抓包稍微复杂一点,因为需要一张网卡作为 monitor 放置于要监视抓包的两张网卡之间,用 Linux 电脑连接 monitor 网卡,这样才能接收到要抓包的两张网卡的无线包。
其次是无线抓包的目标层,我们都知道 osi 把网络分为 7 层,各层协议分布情况如下:
而无线网实际上是L2:数据链路层。所以 monitor 将会抓到的包也是链路层的数据包。
先安装必要的软件(不同网卡实际需要的软件不完全相同)
sudo apt-get install tcpdump wireless-tools net-tools
然后要将网卡配置成monitor模式:
$ sudo ifconfig wlan0 down #关闭网卡,才可以设置mode $ sudo iwconfig wlan0 mode monitor #设置网卡为monitor模式 $ sudo ifconfig wlan0 up #开启网卡,让设置生效
除了monitor模式外,无线网卡还可以设置成以下几种模式:
查看无线网卡是否支持 monitor 模式:
$ sudo iwconfig lo no wireless extensions. enp8s0 no wireless extensions. wlan0 IEEE 802.11 Mode:Monitor Frequency:2.412 GHz Tx-Power=14 dBm Retry short limit:7 RTS thr:off Fragment thr:off Power Management:off
查看&设置WiFi RF信道:
$ sudo iwlist wlan0 channel wlan0 13 channels in total; available frequencies : Channel 01 : 2.412 GHz Channel 02 : 2.417 GHz Channel 03 : 2.422 GHz Channel 04 : 2.427 GHz Channel 05 : 2.432 GHz Channel 06 : 2.437 GHz Channel 07 : 2.442 GHz Channel 08 : 2.447 GHz Channel 09 : 2.452 GHz Channel 10 : 2.457 GHz Channel 11 : 2.462 GHz Channel 12 : 2.467 GHz Channel 13 : 2.472 GHz Current Frequency:2.462 GHz (Channel 11) #设置当前信道为6 $ sudo iwconfig wlan0 channel 6 $ sudo iwlist wlan0 channel wlan0 13 channels in total; available frequencies : Channel 01 : 2.412 GHz Channel 02 : 2.417 GHz Channel 03 : 2.422 GHz Channel 04 : 2.427 GHz Channel 05 : 2.432 GHz Channel 06 : 2.437 GHz Channel 07 : 2.442 GHz Channel 08 : 2.447 GHz Channel 09 : 2.452 GHz Channel 10 : 2.457 GHz Channel 11 : 2.462 GHz Channel 12 : 2.467 GHz Channel 13 : 2.472 GHz Current Frequency:2.437 GHz (Channel 6)
也可以用 iw list 代替。
设置完成,启动 wireshark:
sudo wireshark
点击“捕获”。
选择绑定了目标网卡的网口:wlan0,并开启混杂模式,此模式所有的无线帧都可以捕捉到。
随后点击开始,将陆续抓取环境中所有的无线数据包,不会局限于目标中的两张网卡。
注意:wireshark抓取的数据包都是固定信道的,所以要抓取特定信道的数据包的话,那么需要首先手动设定。
但是这样也有一个好处,可以抓目标信道的无线包。