网卡抓包利用beacon帧测量wi-fi热点功率

前言

因为项目需要比较精确和快速的获取wifi热点信号接收功率,网上教程不够全面,在此整理。
最开始项目方案打算用hack-rf直接采集无线信号计算功率,但是工作地点热点过多,无法准确辨认自己的无线路由器发射的信号,遂采用笔记本无线网卡抓包的方案。

beacon发送速率和模式

Beacon帧是所有基于802.11协议的无线热点用来建立连接,宣告自己存在的管理帧。Beacon帧的发送时间周期稳定,信号强度大,调制方式简单基本,且一般会包含ESSID(wifi热点的名称)信息,比较方便进行身份识别。

  1. 在2.4Ghz频段,一般使用802.11b协议,以1mpbs的速度,DSSS直接序列扩频的方法,调制发送beacon,兼容11g。
  2. 在5Ghz频段,使用802.11a,6mbps的模式发送beacon,6bmps是11a的最低速率啦。
    beacon的发送间隔一般为100ms,但是可以在路由器的设置界面设置。

使用iwconfig查看网卡设备信息

~$ iwconfig

可以查看网卡工作模式,发射功率,接收信号功率和连接速度(连接速度由网卡物理层协议自适应调整,beacon 等管理帧一般工作在802.11协议最原始协议的最低速度,方便建立)
有网络连接时一般工作在Manged 模式。

首先利用iw关闭网卡进入 monitor模式。

查看网卡支持模式,和接口名称

iw list

添加一个虚拟网卡接口,将下面指令的wlan0改为自己的网卡接口(interface)名称,mon0为虚拟网卡的名称。

sudo iw dev wlan0 interface add mon0 type monitor

启动虚拟网卡

sudo ifconfig mon0 up

若抓包完成后,希望删除虚拟接口

sudo iw dev mon0 interface del

安装wireshark抓包分析工具

开源软件wireshark集抓包分析于一体,在monitor模式下可以抓取到网卡自动添加的Radiotap协议层,它提供了无线协议帧相关信号强度、噪声强度、信道、时间戳等信息。
wireshark直接安装即可

sudo apt-get install wireshark

打开软件

sudo wireshark

在设置中选中mon0的Monitor模式点击start,点击左上角鲨鱼鳍开始抓包。
点击某一个包,下拉选择感兴趣的数据如发送端的mac地址,可以右键选择filter,回车,筛选出目标无线路由器的发送数据包,通过wireshark自带的statistics工具中的I/O graph可以绘制无线网卡接收到的目标WAP的帧功率强度随着时间变化的曲线。
wireshark

tcpdump抓包

在实际接收过程中发现直接通过wireshark捕获的包数量很慢且不全,暂时未找到可以设置网卡信道的方法。尝试了使用tcpdump工具进行抓包,抓包后将保存好的文件用wireshark打开分析。
设置无线网卡工作信道,这一步似乎有问题,新建的虚拟网卡无法调整接收信道,如果出现device or resource busy 这个选项则可直接跳过信道设置。

ifconfig #查看链接状态
sudo ifconfig mon0 down
sudo iw dev mon0 set channel 1#设置工作信道
sudo ifconfig mon0 up

使用tcpdump抓包

sudo tcpdump -i mon0 -w test1.pcap

在wireshark中打开后发现,漏包是mon1虚拟网卡的原因,直接将网卡改为monitor模式会好很多。

iwconfig #查看网卡信息

在设备右上角关闭wi-fi,也可以使用

service network-manager start

更改自己的网卡为monitor模式

sudo iwconfig wlx30b49e22ab5b mode moniter

如果返回SIOCSIFFLAGS: Operation not possible due to RF-kill错误则

sudo rfkill unblock wifi
sudo rfkill unblock all

之后开启wifi

sudo ifconfig (your device name)up
iwconfig #Mode:Monitor表示成功

再使用tcpdump抓包

sudo tcpdump -i mon0 -w test1.pcap

ubuntu 安装网卡驱动

为了可以自己安装网卡的天线,在网上购买了定向天线一体的无线网卡,无线网卡采用了8811的芯片,可以在github上直接搜索到相关驱动,网卡驱动
。安装过程中遇到了usb模式无法识别新网卡的问题,按照原文提供的方案可以很好的解决。

sudo iw dev wlx200db032ea5f set monitor none
iwconfig
sudo tcpdump -i wlx200db032ea5f -w test1.pcap

修改网卡名称

sudo ip link set enp4s0f1 down //关闭网卡
sudo ip link set enp4s0f1 name eth0 //重命名为eth0
sudo ip link set eth0 up //启用eth0

也可以用C++或python直接处理数据

Radiotap头信息解析
无线网络嗅探中的Radiotap

参考链接

iw用法
使用IW工具配置和连接WIFI
ubuntu 下 开启无线网卡的monitor mode
Ubuntu下用wireshark抓取802.11封包并进行过滤分析
过滤规则
无线破解Aircrack-ng套件详解(一)--airmon-ng与airodump-ng

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值