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

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

  • 前言
    • beacon发送速率和模式
    • 使用iwconfig查看网卡设备信息
    • 首先利用iw关闭网卡进入 monitor模式。
    • 安装wireshark抓包分析工具
    • tcpdump抓包
    • 也可以用C++或python直接处理数据
  • 参考链接

前言

因为项目需要比较精确和快速的获取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的帧功率强度随着时间变化的曲线。
网卡抓包利用beacon帧测量wi-fi热点功率_第1张图片

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

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

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

参考链接

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

你可能感兴趣的:(无线电磁感知,wireshark,wifi,linux,爬虫,python)