文章目录
1 Wireshark介绍
Wireshark 是开源网络包分析工具,支持Windows/Linux/Unix环境。网络包分析工具的主要作用是尝试捕获网络包,并尝试显示包的尽可能详细的情况。可以从网站下载最新版本的Wireshark (http://www.wireshark.org/download.html 。 Wireshark通常在4-8周内发布一次新版本。目前我司主流的版本是wireshark 3.0.0,主要是试用该版本进行协议分析。
2 功能介绍
Wireshark支持图形和命令行两种抓报文方式。
3 图形界面抓报文
3.1 选择网卡抓报文
第一步 打开wireshark抓包软件,点击“Capture–>Interfaces”,如图3-1
图3-1选择网卡
第二步 选择抓包的网卡,点击”Strart“开始抓包,这样将抓取流经此网卡的所有报文,并临时保存在内存中。因此,如果持续抓包将消耗掉系统所有内存。如图3-2和图3-3
图3-2启动抓包
图3-3抓包界面
图标 说明
重新抓报文
停止抓报文
表1-1
3.2 显示报文抓取时间
打开wireshark抓包软件,点击“View–>TimeDisplay Format–>Date and Time of Day”,如图3-4和图3-5
图3-4
效果图:
图3-5
3.3 Wireshark界面布局
Wireshark界面主要分为三部分(如图3-6),区域一显示抓取的报文,区域二显示选中报文的包头详细信息,区域三显示选中报文的详细信息,默认以十六进制显示。
图3-6
功能 说明
区域一 显示抓取的报文
区域二 显示选中报文的包头详细信息
区域三 显示选中报文的详细信息,默认以十六进制显示
Packets 抓取的所有报文计数
Displayed 满足过滤条件的报文计数
表1-2
3.4 报文过滤条件
Wireshark能够根据应用的需要设置灵活方便的过滤条件,迅速筛选出符合条件的报文。
Wireshark的Filter过滤能够自动检测语法合法性,如果过滤条件设置正确,则Filter输入框为绿色,如果过滤条件设置错误,则Filter输入框为红色。如图3-7
图3-7
3.4.1 常用过滤条件
功能 说明
ip.addr10.23.7.113 源IP地址或目的IP地址是10.23.7.113的报文
ip.src10.23.7.113 源IP地址是10.23.7.113
ip.dst10.23.7.113 目的IP地址是10.23.7.113
ip.src10.23.7.113 and ip.dst==10.23.7.113 报文源IP地址是10.23.7.113且目的IP地址是106.28.142.181
IPip
udp/tcp.port==80 过滤udp或tcp源端口或目的端口是80的报文
udp/tcp.srcport==40004 过滤udp或tcp源端口是40004的报文
udp/tcp.dstport80 过滤udp或tcp目的端口是80的报文
tcp.srcport40004 and tcp.dstport80 过滤tcp协议源端口是40004且目的端口是80的报文
tcp/udp/http 过滤tcp/udp/http报文
tcp.flags.syn0x02 抓tcp syn报文
ip.id==0xadcd 过滤ip报文id是0xadcd的报文
表1-3
3.4.2 Wireshark expression
当然,如果你对Filter过滤规则不熟悉或者不知道如何怎么写时,可以使用wireshark的Expression,这里列出了wireshark所支持的所有过滤协议以及过滤方式
图3-8
3.4.3 高级过滤条件
上述的过滤条件都是wireshark内置的,主要是根据已知的包头字段内容过滤。同时wireshark也支持根据报文负载内部过滤。
项目 说明
tcp/udp[offset:n] 从tcp或udp偏移指定字节后,命中指定n个字节的内容
tcp[20:8] 表示从20开始,取8个字节
udp[8:3] 表示从8开始,取3个字节
udp[8:3]==81:60:03 不可以写为udp[8:3]==816003
表1-4
根据负载单字节过滤,如图3-9
图3-9
根据udp负载过滤双字节,如图3-10
图3-10
根据tcp包头后3字节内容,如图3-11
图3-11
3.4.4 Wireshark capture filter
根据3.1抓报文,wireshark默认抓取所选网卡的所有报文,并且保存在内存中。如果忘记停止抓报文,会耗尽系统内存。我们完全可以设置wireshark只抓取满足过滤条件的报文。
图3-12
点击图中的“Options”选择,进入图3-13
图3-13
设置好过滤条件后,点击”Start“,wireshark就只抓取符合过滤条件的报文。
在”Capture Filter“输入框内输入过滤条件。语法正确,输入框背景显示为绿色,语法错误,输入框背景显示为红色。请注意,此处的语法与3.4.1不相同。
功能 说明
Host 10.23.7.113 源IP地址或目的IP地址是10.23.7.113的报文
host 10.23.7.113 and tcp port 4444 源IP地址或目的IP地址是10.23.7.113的报文且tcp端口是4444的报文
udp port 69 udp 端口是69的报文
常用过滤条件:
表1-5
4 命令行抓报文
命令行抓包可以让抓取的报文直接保存在硬盘上,这样既不用担心wireshark抓大流量报文时(例如笔记本抓1Gbps速率的报文)崩溃,又不用担心迅速耗尽系统内存的风险。
4.1 选择网卡
使用cmd进入wireshark的安装目录,如图4-1
图4-1
执行dumpcap.exe -D列出所有网卡
图4-2
根据wireshark图形界面,选择你需要抓包接口ID
图4-3
4.2 命令行过滤条件
Dumpcap.exe -i 1 -s 0 -B 256 filesize:10000 -w f:\1.pcap -f “ tcp port 80”
图4-4
项目 说明
-i 1 接口ID值,可使用dumpcap.exe -D查看
-s 0 指定抓取报文的长度,0表示抓取报文全部长度
-B 256 size of kernel buffer,即系统内核缓存。默认是2M
Filesizes:10000 每10M一个文件保存
-w f:\1.pcap 抓取的报文保存在F盘,文件名为1.pcap
-f “tcp port 80” 抓报文的过滤条件
表1-6
4.3 常用过滤条件
1、dumpcap.exe -i 4 -s 65535 -b filesize:100000 -w F:\radius_filter_test.pcap -f “udp[30:4]==0x30383734”
2、dumpcap.exe -i 1 -s 65535 -B 256 -b filesize:200000 -w F:\pcap1\3.pcap -f “udp port 1813”
3、dumpcap.exe" -i 2 -s 65535 -B 256 -b filesize:10000 -w F:\pcacp\3.pcap -f “host 182.244.157.105”
5 批量转换报文格式
在我们的日常工作中排查一些局点问题,往往需要从前方局点抓一些报文在公司进行回放测试,以帮助分析和定位问题,但往往通过wireshark自动执行抓包后保存的报文格式默认是.pcapng类型,使用公司的报文回放工具SendPcap_v1.1.exe因识别不了此类格式的报文而无法进行回放,若通过手动方式将报文一个一个打开后再保存为我们能用的格式,工作量是非常大的。这个时候我们就需要借助自动化脚本进行批量转化,大大简化工作量来达到我们的目的。本文重点介绍通过自动化执行脚本方式来批量转化报文的方法。按照本文介绍的方法,我们可以很轻松的实现将大批量的报文在短时间内进行转化。
步骤1、确定wireshark安装目录,如图5-1
图5-1
步骤2、操作方法:【计算机】=>【属性】=>【高级系统设置】=>【高级】=>【环境变量】
在弹出的窗口中确认“用户变量”有没有“path”变量,如果没有则选择“新建”,在弹出的窗口中“变量名”为“path”,对应的变量值则为wireshark的安装路径。若已经存在“path”变量,则只需要编辑“path”变量,将wireshark的安装路径作为变量值输入,注意:若“path”变量中已存在其他变量,则需要用“;”分号将各个变量隔开。系统变量的设置方法与用户变量的设置方法一致。
【说明】
“用户变量”与“系统变量”的区别:用户变量只对当前用户有效,而系统变量对所有用户都生效。所以如果需要此设置对其他用户也生效,则只需设置系统变量即可。
图5-2
图5-3
图5-4
步骤3、操作方法:将下面的内容复制到记事本中,然后保存为.bat格式,命名为“批量转化报文格式.bat”
if exist subdirs.txt del subdirs.txt>nul
dir /d /b /a:-d> subdirs.txt
for /f %%i in (subdirs.txt ) do tshark -r %%i -F pcap -w converted/%%i
pause
del subdirs.txt>nul
图5-5
步骤4、操作方法:将上一步创建的脚本放到需要转化的报文目录下,然后新建一个文件夹并命名为“converted”,用于存放格式转化后的报文。
图5-6
步骤5、操作方法:双击脚本“批量转化报文格式.bat”,弹出一个cmd窗口会显示脚本正在执行转化的状态,文件转化完成后会显示如下图所示文字提醒“请按任意键继续”,敲击任意键即可完成脚本执行,脚本自动退出。
图5-7
步骤6、操作方法:脚本执行过程中会自动生成subdirs.txt,该文件内容记录的是成功完成转化的报文列表。打开converted目录,我们就可以看到已完成格式转化的报文了。
图5-8
打开converted目录
图5-9
更多信息请访问www.wireshark.org