0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux环境下Wi-Fi抓包说明

jf_14701710 ? 来源:jf_14701710 ? 作者:jf_14701710 ? 2025-05-12 09:36 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

当你拿到一台linux电脑,你可以把它配置成Wi-Fi抓包器,用以捕获空中Wi-Fi包,为网络问题分析提供依据。

一.无线网卡的监听模式

默认情况下,无线网卡和无线接入点(Wireless Access Point,WAP)建立连接后,就处于托管模式(Managed mode),在托管模式下,无线网卡只专注于接收从 WAP发给自己的数据报文。如果想让无线网卡监听所有的空中无线包,需要将无线网卡设置成监听模式(Monitor mode,也叫 RFMON 模式),然后再使用Wireshark 等软件对捕获的数据报文进行分析。 无线网卡除了 Managed mode 和 Monitor mode 这两种模式之外,还支持其他模式,如:Ad hoc(也叫IBSS模式)和Master mode, Linux Wireless 站点上对此有详细的介绍。

二.linux系统的网卡信息

为了将无线网卡设置成监听模式,我们需要先获取网卡驱动信息并设置网卡。

确保无线网卡正常工作。若Linux电脑能正常通过无线网络上网则无线网卡驱动正常。否则需要:

?a. 确定无线网卡型号

~$ lsusb

b.安装驱动

linux无线网卡驱动的安装可以参考这里。

确定网卡是否支持Monitor Mode,查看自身网卡驱动命令:

? ~$ sudo lshw -c network

-network
    description: Wireless interface
    ...
    logical name: wlp0s20f3
    ...
    configuration: broadcast=yes driver=iwlwifi
    driverversion=6.2.0-34-generic firmware=72.daa05125.0 QuZ-
    a0-hr-b0-72.u
    ip=172.20.2.187 latency=0 link=yes multicast=yes
    wireless=IEEE 802.11
    resources: iomemory:600-5ff irq:16 memory:6055294000-
    6055297fff

通过查阅Linux Wireless 论坛,我们可以得知:网卡驱动iwlwifi支持monitor mode,即监听模式。

Driver Manufacturer cfg80211 AP IBSS mesh monitor PHY modes
adm8211 ADMtek/Infineon yes no no no ? B
iwlegacy Intel yes no yes no no A/B/G
iwlwifi Intel yes yes (6) yes no yes A/B/G/N/AC
ath12k Qualcomm Atheros yes yes no yes (6) yes (6) A/B/G/N/AC/AX/BE

三.Linux系统无线网卡的配置

3.1 使用iwconfig查看无线网卡状态

1. Linux系统可以使用iwconfig工具查看当前网卡状态:

~$ iwconfig

lo        no wireless extensions.
gpd0      no wireless extensions.
wlp0s20f3  IEEE 802.11  ESSID:"@Hyatt_WiFi"
    Mode:Managed  Frequency:5.805 GHz  Access Point:
    8C:7A:15:2E:56:4C
    Bit Rate=360 Mb/s   Tx-Power=22 dBm
    Retry short limit:7   RTS thr:off   Fragment thr:off
    Power Management:on
    Link Quality=51/70  Signal level=-59 dBm
    Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid
    frag:0
    Tx excessive retries:2  Invalid misc:0   Missed
    beacon:0

可以看出无线网卡名称为:wlp0s20f3 ;当前处于托管模式(Managed Mode)。

2. 使用iwconfig 将网络配置为Monitor Mode时参考命令序列(optional):

?$ su ?
$ ifconfig your_driver_name down          //将无线网卡 your_driver_name 停用 ?
$ ifconfig your_driver_name down          //将无线网卡 your_driver_name 停用 ?
$ iwconfig your_driver_name mode monitor  //设置 your_driver_name 的模式为monitor mode ?
$ ifconfig your_driver_name up            //启用无线网卡 ?
$ iwconfig your_driver_name channel 3     //可选项,设置channel ?
$ iwconfig                                //重新检查网卡状态

为什么使用iwconfig将无线网卡设置成监听模式后,过几秒又会自动变成托管模式?大多数情况下归咎于Network Manager服务。如果无线网卡已经连接了 AP,则Network Manager会检测无线通常将无线网卡设置成监听模式后,即可以使用如 Wireshark 之类的抓包工具截取无线网络报文了。但是由于抓包时网卡是处于监听模式的,这时不能通过Wi-Fi连接互联网,否则网卡会自动切换回托管模式。为了避免自动切换,我们可以使用airmon-ng工具配置Managed Mode。所以用户可以尝试断开无线连接,或者使用“service network-manager stop”停止Network Manager服务 。

考虑到停止Network Manager可能造成其他网络服务问题,我们不推荐直接使用iwconfig设置网络的Monitor Mode。

3.2 使用airmon-ng监听无线网络

通常将无线网卡设置成监听模式后,就可以使用如 Wireshark 之类的抓包工具抓取无线网络空中报文了。但是由于抓包时网卡是处于监听模式的,此时不能通过Wi-Fi连接互联网,否则网卡会自动切换回托管模式。为了避免自动切换,我们可以使用airmon-ng工具 。

安装抓包需要使用的工具

~$ sudo apt install -y wireshark net-tools wireless-tools aircrack-ng

~$ sudo airmon-ng //查看当前网卡及驱动状态`

PHY   Interface    Driver	   Chipset
phy0  wlp0s20f3    iwlwifi	   14.3    

Network controller: Intel Corporation  Wi-Fi 6  AX201 (rev 20)

根据列出的当前系统所使用的无线网卡类型,以及安装的驱动程序,使用airmon-ng相关命令将网卡设置成监听模式

~$ sudo airmon-ng start wlp0s20f3

Found 4 processes that could cause trouble.Kill them using
airmon-ng check kill' before putting the card in monitor mode,
they will interfere by changing channels and sometimes putting
the interface back in managed mode
    PID Name
    820 avahi-daemon
    825 NetworkManager
    856 wpa_supplicant
    860 avahi-daemon
PHY	Interface	Driver		Chipset
phy0	wlp0s20f3	iwlwifi		14.3 Network controller: Intel
Corporation Wi-Fi 6 AX201 (rev 20)
(mac80211 monitor mode vif enabled for [phy0]wlp0s20f3 on
[phy0]wlp0s20f3mon)
(mac80211 station mode vif disabled for [phy0]wlp0s20f3)

查看Monitor Mode是否设置成功

~$ sudo airmon-ng

PHY   Interface	    Driver		Chipset
phy0  wlp0s20f3mon	iwlwifi		14.3

Network controller: Intel Corporation Wi-Fi 6 AX201 (rev 20)

设置抓包频带(channel)和带宽

~$ sudo iw dev wlp0s20f3mon set channel 10 HT20

抓包

~$ sudo wireshark

抓包结束,返回托管模式(Managed Mode)

~$ sudo airmon-ng stop wlp0s20f3mon

3.3 使用iw监听无线网络

随着Wi-Fi技术的发展进步,cfg80211和nl80211作为一种新的无线驱动框架用于无线程序的开发。而cfg80211不使用ioctl系统调用,而是使用Netlink(基于socket通信)。iw就是完全基于cfg80211框架重新设计并开发的网络配置工具

使用iw查看网卡信息以及支持的频带和带宽:

~$ iw list

列出本地的无线设备,以及每个无线设备的详细信息

~$ iw dev

phy#0
Unnamed/non-netdev interface
    wdev 0x5
          addr 7c:21:4a:21:c3:57
    type P2P-device
    txpower 0.00 dBm
Interface wlp0s20f3
    ifindex 5
    wdev 0x4
    addr 7c:21:4a:21:c3:58
    ssid Nordicsh-5G
    type managed
    channel 44 (5220 MHz), width: 160 MHz, center1: 5250 MHz
    txpower 22.00 dBm
    multicast TXQ:
qsz-byt	qsz-pkt	flows	drops	marks	overlmt	hashcol	tx-bytes	tx-packets
0	0	0	0	0	

查看指定网卡设备信息

~$ iw dev wlp0s20f3 info

将网卡设置为监听模式: ? ~$ sudo iw dev wlp0s20f3 interface add mon0 type monitor 或者 ~$ sudo iw phy phy0 interface add mon0 type monitor

使能虚拟网卡:

~$ sudo ifconfig mon0 up

上述两条命令新增了一个虚拟网卡接口mon0,并将mon0设置为监听模式。这个命令和3.2的airmon-ng的效果相同,wlp0s20f3仍然保持 managed模式不变,新增的mon0运行在Monitor模式下。虚拟接口新增之后需要使用ifconfig up启用 设置成功后可以用“iw dev”或者“iwconfig”查看无线网卡信息,可发现多了Interface mon0的网卡设备

设置虚拟网卡工作的频带(channel)和带宽

~$ sudo iwconfig mon0 set channel 3 HT20

注意,设置mon0为monitor之后直接设置channel可能会报错:Error for wireless request “Set Frequency” (8B04) : SET failed on device mon0 ; Device or resource busy. 此时需要删除managed mode 网卡(删除该网卡后暂时无法上网):

? ~$ sudo iw dev wlp0s20f3 del (然后重新设置网卡频段)

抓包:

~$ sudo wireshark

抓包完后返回托管模式:

~$ sudo iw phy phy0 interface add wlp0s20f3 type managed

~$ sudo iw dev mon0 del

检查网卡状态:

~$ iw dev (或者 ~$ iwconfig)

四.使用wireshark抓包

4.1 通过wireshark抓包必须的配置

安装必要工具。

~$ sudo apt install -y wireshark net-tools wireless-tools aircrack-ng

为实现抓包,我们将网卡设置为监听模式并使能虚拟网卡后;需要启用wireshark: (~$ sudo wireshark), 由于wireshark中不能显式地设置抓包的频带(channel)和带宽,我们需要后台设置频带(channel)和带宽

~$ sudo iw dev wlp0s20f3mon set channel 149 80MHz

如果只是动态地修改频带(channel),也可简化为:

~$ sudo iwconfig mon0 channel 140

如何获取所需监听AP的通信频带(channel)?

通过查看路由器配置

通过wifi Shell sample的 wifi scan 命令获取 ?

通过sudo iwlist your_driver_name scan | egrep "Cell|ESSID|Channel" 命令获取,注意网卡需处于托管模式(Managed Mode),例如:

~$ sudo iwlist wlp0s20f3 scan | egrep "Cell|ESSID|Channel"

Cell 01 - Address: 94:98:69:51:A9:47
          Channel:153
          ESSID:"CMCC-6XyY-5G"
Cell 02 - Address: 96:BE:09:91:9C:E2
          Channel:161
          ESSID:""
Cell 04 - Address: 04:AB:08:A0:F6:16
          Channel:1
          Frequency:2.412 GHz (Channel 1)
          ESSID:"CMCC-MF9H"

4.2 频带和带宽说明(optional)

动态设置频带和带宽:

~$ iw dev wlp0s20f3mon set channel 3 HT20

Wi-Fi 频段频率与channel存在对应关系,把频率划分成很多宽度相等的子频段(频带)就是信道Channel,每个信道的频率宽度称为带宽。同版本的Wi-Fi协议,其无线电载波可以工作在不同的频率范围如2.4GHz和5GHz频段内。

固定频率的波是无法承载信息的,只有能切换频率的波才能承载信息,无线信号通讯必须工作在一定频段内而非某个频率点。

对2.4 GHz (802.11 b/g/n)频率进行频段分配,一共可以有14个信道(频带)。

如果每个信道的带宽是22MHz,那么2.4G最多只能同时使用三个互不重叠的信道(1,6和11)。其中信道14在全球大多数国家都不允许使用。

?如果信道带宽是20MHz,那么最多可以同时使用四个信道(1,5,9,13)。2.4G频道带宽典型值说明:

#     NoHT  : 不使用802.11n,基本很少用
#     HT20  :  802.11n/ac/ax 20Mhz频宽
#     HT40+ : 802.11n/ac/ax 双20Mhz,控制信道比扩展信道频率高
#     HT40-  : 802.11n/ac/ax 双20Mhz,控制信道比扩展信道频率低
wKgZO2ghUIKAWmJzAAA7V0SQzQE90.jpeg

2.4G频段分布图

对于5GHz频段,信道从5.000GHz(信道0)开始编码,每5MHz一个信道。各国开放频率范围有所不同,如EN301 893规范是从 5.150GHz开始的。通常实际允许使用的信道是从36开始的,频宽20MHz,可用信道每次+4,如36,40,44,48 … 64 。 查阅每个国家可用的信道可参考:无线局域网信道列表 - 维基百科,自由的百科全书 (wikipedia.org)

监听模式下查看网卡支持的频带和带宽信息:

~$ iw wlp0s20f3mon info

4.3 实时跳频(optional)

?信道×带宽的排列组合选项太多,普通用户并不知道哪些组合是合法的,以及自己的网卡是否支持这些组合。我们用2个脚本来自动完成一些工作。

配置识别脚本test-channels.sh:自动识别出当前网卡哪些信道+带宽的排列组合是合法的,并记录下来;

自动跳频脚本:在前一个脚本的范围内,无限循环跳频扫描: channel-hopping.sh

注意:需要将脚本里网卡接口改为自身监听网络所使用的网卡,如:DEFAULT_INTERFACE="wlp0s20f3mon";

使能执行权限chmod +x ./test-channels.sh;chmod +x channel-hopping.sh执行权限;并用sudo执行。

1.test-channels.sh

此脚本列举出了5G、2.4G频段下,各个带宽下支持的扫描信道,执行结果如: ?

~$ chmod +x ./test-channels.sh ?

~$ sudo ./test-channels.sh

===================================================
2.4G:
Width:HT20, Valid Channels:1 2 3 4 5 6 7 8 9 10 11 12 13
Width:HT40+, Valid Channels:1 2 3 4 5 6 7 8 9
Width:HT40-, Valid Channels:5 6 7 8 9 10 11 12 13
Width:80MHz, Valid Channels:
Width:160MHz, Valid Channels:
5G:
Width:HT20, Valid Channels:36 40 44 48 52 56 60 64 100 104 108 112       116 120 124 128 132 136 140 144 149 153 157 161 165
Width:HT40+, Valid Channels:36 44 52 60 100 108 116 124 132 140 149 157

2.channel-hopping.sh

自动跳频的脚本内记录了每种带宽下,网卡可以支持的信道。这些数据来源是前一个脚本的输出结果此时需要设置抓包频段和带宽:

?~$ chmod +x channel-hopping.sh ?

~$ sudo ./channel-hopping.sh HT20

执行脚本时,指定要使用的带宽,脚本将会每0.5s切换一次信道。脚本只会循环执行一次,之后你可以手动指定信道和带宽。

4.4 过滤器

抓包时,可以在wireshark中设置过滤器来选取自己设备的包。根据MAC地址过滤的语法如下:

Source Address: wlan.sa==XX:XX:XX:XX:XX:XX

Destination Address: wlan.da==XX:XX:XX:XX:XX:XX

Receiver Address: wlan.ra==XX:XX:XX:XX:XX:XX

Transmitter Address: wlan.ta==XX:XX:XX:XX:XX:XX

wKgZO2ghUIOAQfwIAADLzZvqnEE45.jpeg

五.小结

5.1 使用airmon-ng+wireshark抓包

sudo apt install -y wireshark net-tools wireless-tools aircrack-ng
Iwconfig
sudo iwlist wlp0s20f3 scan | egrep "Cell|ESSID|Channel"
=> wlp0s20f3
sudo airmon-ng start wlp0s20f3 //switch to monitor mode:
iwconfig (optional)
=> wlp0s20f3mon
sudo wireshark
iw wlp0s20f3mon info

#网卡名:wlp0s20f3mon
频道:149
带宽:可选的参数有
频道:149
带宽:可选的参数有
noHT : 不使用802.11n,基本很少用
HT20 : 802.11n/ac/ax 20mhz频宽
HT40+ : 802.11n/ac/ax 双20Mhz,控制信道比扩展信道频率高
HT40- : 802.11n/ac/ax 双20Mhz,控制信道比扩展信道频率低
5MHz : 5MHz,基本很少用
10MHz : 10MHz,基本很少用
80MHz : 802.11ac/ax
160MHz: 802.11ac/ax

sudo iw dev wlp0s20f3mon set channel 11 HT20 //when setting,not require to close wireshark
sudo ./test-channels.sh //optional
chmod +x channel-hopping.sh //optional
sudo ./channel-hopping.sh HT20 //optional, if required:chmod +x channel-hopping.sh
wlan.da==f4:ce:36:00:1d:52 or wlan.sa==f4:ce:36:00:1d:52 //in wireshark GUI
sudo airmon-ng stop wlp0s20f3mon //close monitor mode.

5.2 使用iw+wireshark抓包

sudo apt install -y wireshark net-tools wireless-tools aircrack-ng
sudo iw dev
iwconfig
=>wlp0s20f3
sudo iwlist wlp0s20f3 scan | egrep "Cell|ESSID|Channel"

=>channel 3
sudo iw dev wlp0s20f3 interface add mon0 type monitor
iwconfig
sudo ifconfig mon0 up
sudo iw dev wlp0s20f3 del
sudo iwconfig mon0 channel 3 //or sudo iw dev mon0 set channel 3 HT20
sudo wireshark

sudo ./test-channels.sh //optional, change wifi-driver to mon3 in the xxx.sh
sudo ./channel-hopping.sh HT20 //optional

sudo iw phy phy0 interface add wlp0s20f3 type managed
sudo iw dev mon0 del
iwconfig

注意:如果wireshark 因权限问题问题无法启动,可执行以下命令序列:

sudo apt-get install libcap2-bin wireshark

sudo chgrp nordic /usr/bin/dumpcap

sudo chmod 750 /usr/bin/dumpcap

sudo setcap cap_net_raw,cap_net_admin+eip /usr/bin/dumpcap

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11522

    浏览量

    214219
  • wi-fi
    +关注

    关注

    14

    文章

    2269

    浏览量

    127212
  • Nordic
    +关注

    关注

    9

    文章

    217

    浏览量

    48187
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Wi-Fi 定位服务

    Wi-Fi 是一种著名的无线网络技术,用于设备的局域网和互联网接入。Wi-Fi 通过 Wi-Fi 网络为家庭、办公室和学校等环境提供便捷的无线互联网接入服务。
    发表于 04-17 15:01

    WiMAX与Wi-Fi的区别

    每秒108mbyte 的最高速度,而实际环境也有45mbps的速度。我可以去商场买一个Wi-Fi MIMO的基地台回家组装,自行确认其速度约为45mbps,然而WiMAX 的产品至今却尚未
    发表于 12-03 19:09

    Wi-Fi CERTIFIED?交流会的Wi-Fi?技术的性能提升到新的高度

    CERTIFIED n网络。对于用户来说,这意味着一个网络可以支持同时多个高清质量的视频流,到多个设备。大容量 -更多设备可以同时连接到一个Wi-Fi CERTIFIED交流网络在不降低性能的情况
    发表于 06-27 10:25

    【LinkIt 7687试用体验】NO.4 Wi-Fi功能初体验

    `今天主要是探索了一LinKit 7687的初步联网的功能在官方给的例程中 iot_sdk_demo这个程序中,已经封装好了Wi-Fi的连接如上图所示,输入家里的Wi-Fi名称和密码即可
    发表于 01-17 13:44

    AP和网络运行方式低功耗Wi-Fi

    的SimpleLink? Wi-Fi? 器件采用高级算法来学习且适应环境,以便在仍旧保持系统稳健耐用性的同时提高性能,并降低能耗。此外,我们已经用超过200个AP测试了SimpleLink Wi-Fi
    发表于 09-03 15:53

    如何优化低功耗Wi-Fi

    如需了解更多信息?在以下链接中可以找到低功耗网络互联主要方面的详细说明:SimpleLink Wi-Fi CC3100/CC3200 Internet-on-a-chip? 器件网络互联子系统电源管理
    发表于 09-04 14:48

    3分钟读懂Wi-Fi 6于Wi-Fi 5的优势

    通企业级芯片,5G的极限速度可接近千兆,性能可达900M+,可以说完全榨干家庭千兆宽带,替代有线!02 高带机在Wi-Fi 5协议,当多个终端需要与AP、路由器等网络设备通信时,只能一个一个的排队完成;而
    发表于 08-12 10:54

    什么是Wi-Fi?WLAN和Wi-Fi的区别是什么?

    什么是Wi-Fi?有什么特点?WLAN和Wi-Fi的区别有哪些?
    发表于 05-25 06:02

    什么是wi-fi认证

    1. 什么是wi-fi认证?若要了解 Wi-Fi 认证的价值,必须知道 Wi-Fi 是“Wireless Fidelity (无线保真度)”的简称,是基于已通过 Wi-Fi
    发表于 10-10 13:21 ?6922次阅读

    什么是Wi-Fi6你期待Wi-Fi6吗Wi-Fi 6的说明

    即将于2019半年发布的WI-Fi 6,将使无线网络比以往更快、更可靠、更节能,但这究竟意味着什么呢?Wi-Fi 6是Wi-Fi联盟为802.11ax命名的新名字,旨在使
    的头像 发表于 04-20 10:53 ?1.1w次阅读

    Wi-Fi联盟宣布正式启动Wi-Fi 6认证计划

    Wi-Fi 6括多项新技术,它们使Wi-Fi变得更加高效。这一点特别重要,因为现在每个家庭都有十几部或更多设备连接Wi-Fi网络。所以Wi-Fi
    发表于 09-18 09:12 ?973次阅读

    Wi-Fi HaLow 和传统 Wi-Fi 的区别是什么

    Wi-Fi 就像我们互联世界的氧气。它是当今使用最广泛的无线网络协议,承载了所有互联网一半以上的流量。“Wi-Fi”是一个包罗万象的术语,用于描述不断发展的 802.11 协议家族,这些协议已经发展
    发表于 06-18 17:35 ?1276次阅读

    Wi-Fi HaLow与传统Wi-Fi有何不同

    Wi-Fi HaLow很快就会出现在人们日常生活的智能门锁、安保摄像头、可穿戴设备和无线传感器网络上。什么是Wi-Fi HaLow,与传统的Wi-Fi(4/5/6)有何不同,是什么让Wi-Fi
    发表于 08-09 11:31 ?1139次阅读

    Wi-Fi HaLow和传统Wi-Fi的区别

    Wi-Fi HaLow和传统Wi-Fi的区别? Wi-Fi是一种无线网络技术,可以连接到互联网或局域网,为用户提供无线上网的便利。随着科技的发展和互联网的普及,Wi-Fi也在不断演进和
    的头像 发表于 02-02 15:28 ?2291次阅读

    Wi-Fi 4到Wi-Fi 7:网速飙升40倍的无线革命

    Wi-Fi 6具有更高效率,适合密集设备环境,支持更低的延迟和更高的节能表现。 ? Wi-Fi 7 Wi-Fi 7是2024年发布的新一代标准,提供超高数据速率,支持
    的头像 发表于 12-09 10:10 ?1085次阅读
    从<b class='flag-5'>Wi-Fi</b> 4到<b class='flag-5'>Wi-Fi</b> 7:网速飙升40倍的无线革命