Ubuntu下用wireshark抓取802.11封包并进行过滤分析

要用wireshark抓802.11的包 需要在linux下进行。

要在linux下抓802.11的包 需要在linux下安装无线网卡驱动。

所以 在正式抓取之前先把这两样东西搞起来。

*没有特殊说明,均使用root权限 sudo su*

一 安装无线网卡驱动

无线网卡:DWA-160 USB无线网卡

网卡驱动:http://alris1.dlinkddns.com/download/dlink/DWA-160/DWA-160_B2_DPO_RT5572_LinuxSTA_2.6.1.3_20121022.tar.bz2

  DWA-160_B2_DPO_RT5572_LinuxSTA_2.6.1.3_20121022.tar.bz2  解压=>

    DWA-160_B2_DPO_RT5572_LinuxSTA_2.6.1.3_20121022文件夹

安装步骤:

在DWA-160_B2_DPO_RT5572_LinuxSTA_2.6.1.3_20121022文件夹下执行以下命令:

# make
# make install
# cp RT2870STA.dat  /etc/Wireless/RT2870STA/RT2870STA.dat
# cd ./os/linux
# insmod rt5572sta.ko

不出意外,到这里就可以连接到wifi了

二 安装wireshark

wireshark的安装非常简单

# apt-get install wireshark

就可以了。

三 使用wireshark抓802.11封包

• 需要注意的是

因為工作的緣故,需要去監聽無線網路的封包,特別是IEEE802.11的管理控制訊框(frame ... 其實我還是比較喜歡直接叫作封包)。同事直接打開 wireshark 卻擷取 wifi 介面,卻發現聽到了一堆 ethernet 的訊框而聽不到 wifi 的訊框。為什麼呢?來看看 wireshark 的官網怎麼說:

If you‘re trying to capture network traffic that‘s not being sent to or from the machine running Wireshark or TShark, i.e. traffic between two or more other machines on an Ethernet segment, or are interested in 802.11 management or control packets, or are interested in radio-layer information about packets, you will probably have to capture in "monitor mode". This is discussed below.

Without any interaction, capturing on WLAN‘s may capture only user data packets with "fake" Ethernet headers. In this case, you won‘t see any 802.11 management or control packets at all, and the 802.11 packet headers are"translated" by the network driver to "fake" Ethernet packet headers.  

答案揭曉,原來這是因為 wifi driver 會自動把 wireless frame 轉成 ethernet frame 後再給 kernel,這樣 kernel 裏面的 protocol stack 會比較好處理。

問題是,如果我想要聽到 wifi frame 的話,要怎麼做呢?答案很簡單,將 wifi adapter 設成 monitor mode。在 wifi adapter 中,通常都有 SSID/ESSID filter,所以就算把 wifi adapter 設定成為 promiscuous mode 也沒有用,因為還是無法收到非自己加入的 SSID 的 frame。那 monitor mode 呢?我們可以看看下面這句話:

In monitor mode the SSID filter mentioned above is disabled and all packets of all SSID‘s from the currently selected channel are captured.

最後的問題就是,如何在 Linux 裏面把無線網卡設定成 monitor mode了。步驟如下:
1.	iw dev wlan0 interface add mon0 type monitor
2.	ifconfig mon0 up
接下來就可以透過 mon0 這虛擬介面來聽封包了。要移除這介面的方法也很簡單:
1.	iw dev mon0 interface del

所以要做完上述设定之后再打开wireshark

# wireshark

四 打开wireshark出现的异常解决

错误如下:

直接运行wireshark的话会报错:

Lua: Error during loading:
[string "/usr/share/wireshark/init.lua"]:45: dofile has been disabled

解决方案:修改init.lua要对其进行修改,终端运行
sudo gedit /usr/share/wireshark/init.lua

倒数第二行原来为:
dofile(DATA_DIR.."console.lua")

改为:
--dofile(DATA_DIR.."console.lua")

五 对抓到的802.11包进行过滤

在Expression下Field name为
"802.11 MGT - IEEE 802.11 wireless LAN management frame"
"802.11 Radiotap - IEEE 802.11 Radiotap Capture header"
"IEEE 802.11 - IEEE 802.11 wireless LAN"
"IEEE 802.11 Aggregate Data - IEEE 802.11 wireless LAN aggregate frame"
"WLANCERTEXTN - Wlan Certificate Extention"
"Wi-Fi P2P - WiFi Peer-to-Peer"
"WiMax (wmx) - WiMax protocol"
...
中进行查找所需条件

下面列出一些比较常用的条件表达式

wlan.da - Destination address (Destination Hardware Address)
wlan.sa - Source address (Source Hardware Address)
wlan.addr - Source or Destination address (Source or Destination Hardware Address)
wlan.ra - Recevier address (Receiving Station Hardware Address)
wlan.ta - Transmitter address (Transmitting Hardware Address)
wlan.bssid - BSS id (Basic Service Set ID)
wlan_mgt.ssid - SSID (Indicates the identity of an ESS or IBSS)

六 简单的802.11封包分析 

至此 就可以自如的进行抓包了

下面是一些简单的分析

802.11帧的抓取以及分析

802.11抓包分析

至于高级一点的包的分析,等我学会了再回来写

时间: 2024-10-24 15:31:09

Ubuntu下用wireshark抓取802.11封包并进行过滤分析的相关文章

Android利用wireshark抓取网络数据包

Android利用tcpdump和wireshark抓取网络数据包:http://blog.csdn.net/forlong401/article/details/23538737 Mac OS X上使用Wireshark抓包:http://blog.csdn.net/phunxm/article/details/38590561 Mac mini下wireshark抓包的使用:http://blog.sina.com.cn/s/blog_50da19a50101nxzn.html 如何mac下

利用wireshark抓取Telnet的用户名和密码

使用wireshark抓取Telnet   目标ip地址(telnet  192.168.88.1 ) 1,首先打开wireshark,然后选择网卡,点击开始. 2,为了在filter中输入telnet 或者输入(ip.dst == 目标ip地址 and  tcp.port== 23). 3,看下面的数据包,找到telnet  并且能够看到data:\r\n:如下图 4,接下来再看下面的数据包,就能看到明文用户名和密码了.如下图 这时候你就可以看到明文用户名的首字母x了,继续看下去你可以找到后面

ubuntu下解决wireshark权限问题

wireshark要监控eth0,但是必须要root权限才行.但是,直接用root运行程序是相当危险,也是非常不方便的. 解决方法如下: 1.添加wireshark用户组 sudo groupadd wireshark 2.将dumpcap更改为wireshark用户组 sudo chgrp wireshark /usr/bin/dumpcap 3.让wireshark用户组有root权限使用dumpcap sudo chmod 4755 /usr/bin/dumpcap 4.将需要使用的用户名

(win和ubuntu下)codeblocks不支持c++11

在 CodeBlocks 中的 设置(setting)-> Compiler 中,选择 Compiler settings,将里面对应的 C++11 选项选中后,即可支持 C++11 了, windows下图片如下: ubuntu下图片如下:(注意刚开始可能找不到settings,你要把鼠标点到最上面就出现菜单项了,ubuntu软件中心安装的codeblocks是the coming c++0x跟windows下不一样) (win和ubuntu下)codeblocks不支持c++11

在python3下使用OpenCV 抓取摄像头图像并实时显示3色直方图

以下代码为在Python3环境下利用OpenCV 抓取摄像头的实时图像, 通过OpenCV的 calHist函数计算直方图, 并显示在3个不同窗口中. import cv2 import numpy as np from matplotlib import pyplot as plt import time cap  = cv2.VideoCapture(0) for i in range(0, 19):     print(cap.get(i)) while(1):     ret, fram

WireShark抓取QQ邮箱

WireShark抓取QQ邮箱 实验环境:MacOS + WireShark 1.QQ邮箱是网址是基于HTTPS协议的 HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)能够加密信息,由HTTP+TLS/SSL组成,在原本的HTTP协议上增加了一层加密信息模块,服务端和客户端的信息传输都要经过TLS进行加密,所以传输的数据都是加密后的数据. 2.TLS/SSL 简介 握手过程: 1.初始化阶段.客户端创建随机数,发送Client

使用wireshark 抓取 http https tcp ip 协议进行学习

使用wireshark 抓取 http https tcp ip 协议进行学习 前言 本节使用wireshark工具抓包学习tcp ip http 协议 1. tcp 1.1 tcp三次握手在wireshark中的体现 1.1.1 三次握手过程 1.1.1 wireshark中三次握手过程 在wireshark中抓一次三次握手过程 客户端 客户端发送SYN=1 的请求连接的标记位,以及一个随机序列号X 服务端 服务端发送一个ACK标志位(ack之前的syn),随之一个ack号码为X+1 确认接收

Asp 使用 Microsoft.XMLHTTP 抓取网页内容(没用乱码),并过滤需要的内容

Asp 使用 Microsoft.XMLHTTP 抓取网页内容,并过滤需要的内容 Asp 使用 Microsoft.XMLHTTP 抓取网页内容无乱码处理,并过滤需要的内容 示例源码: <% Dim xmlUrl,http,strHTML,strBody xmlUrl = Request.QueryString("u") REM 异步读取XML源 Set http = server.CreateObject("Microsoft.XMLHTTP") http.

wireshark抓取OpenFlow数据包

在写SDN控制器应用或者改写控制器源码的时候,经常需要抓包,验证网络功能,以及流表的执行结果等等,wireshark是个很好的抓包分析包的网络工具,下面简介如何用wireshark软件抓取OpenFlow数据包 一. wireshark2.0.0 wireshark2.0.0直接内置了OpenFlow协议,只需要安装wireshark2.0.0即可. 在安装wireshark之前需要安装一些依赖包: sudo apt-get install bison flex libpcap-dev gcc