wireshark学习使用

本文详细介绍了Wireshark抓包的安装、本地与远程机器抓取方法、数据包分析、MTU分包实例,以及实用技巧,适合网络通信和数据包分析初学者

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

零、安装

安装的话网上很多。

TCP/IP协议族的分层与代表协议类型:
(1)应用层:DNS(基于UDP)、ping(基于ICMP)、telnet(TCP)
注:应用层负责梳理应用程序的逻辑。
(2)传输层:TCP、UDP
注:传输层为两台主机上的应用程序提供端到端(end to end)的通信。传输层只关心通信的起始端和目的端,而不在乎数据包中转的过程。
(3)网络层:IP、ICMP(IP的重要补充:1)回应网络错误2)查询网络信息)
注:网络层实现数据包的路由和转发,强调的是逐跳的中转。通常数据包不能直接发送给目标主机,IP协议做的就是为他寻找合适的下一跳。
(4)数据链路层:以太网、ARP、RARP
注:实现了网卡接口的网络驱动程序,处理数据在物理媒介上的传输;驱动隐藏不同物理硬件的电气特性,为上层提供统一接口。

tcpdump抓的是网络层的数据包,所以分包都是能感知的!!!!!!!!!!

一、抓安装机本地网卡的数据、以及常用的filter语法。

入门使用的话可以参考这个链接。

wireshark抓包新手使用教程 - jack_Meng - 博客园

其实主要就是Capture→Options→ Wi-Fi:en0应该就是本地网卡。

 

注:包体中的字符串是可以直接在ascii处原模原样显示出来的,但是数字等不可以。

二、远端机器玩法一 —— tcpdump输出.cap文件,wireshark分析之

对于远端机器一个常用的玩法就是使用tcpdump抓取数据包文件,然后用本地的wireshark来看。

具体玩起来也很简单。就是tcpdump的时候指定 -w a.cap 将原始包写入a.cap文件。如下都是可以的。tcpdump的玩法参见  https://blog.youkuaiyun.com/mijichui2153/article/details/81356044

tcpdump -i eth1 host 10.56.114.22 -w a.cap
tcpdump -i eth1 host 10.56.114.22 -X -w b.cap

然后就是wireshark→file→open,打开后就和实时抓取的是一样的了(选中消息、展开看详情等等)。

三、远端机器玩法二 —— wireshark连过去直接抓数据包

网上搜“wireshark 抓取远程linux服务器 数据包” 之类的就能搜到很多。

我们这里就看一下,mac wireshark是怎么抓取远程服务器的数据包的。如下:

四、具体数据包分析

1、udp数据包分析:

2、各层分析

还是很直观的。分别对应物理层、数据链路层、网络层、传输层、应用层。 

这篇博客对每一层及其内容的含义做了详细的介绍,非常详尽!!!!

WireShark入门使用详解_莫瑞与甜甜圈的博客-优快云博客

五、分析发出请求与收到回包

0.背景

在工具集100.116.191.98上给11.167.8.13所在的服务发送一个请求,期望收到对应回包。这里通过wireshark抓包确定 ①请求确实发出去了 ②确实收到rsp了。

1.验证req确实发出去了

通过如下语句抓包:

tcpdump -i eth1 -X '(src host 100.116.191.98) and (dst host 11.167.8.13)'
tcpdump -i eth1 -X '(src host 100.116.191.98) and (dst host 11.167.8.13)' -w req.cap

2.验证确实是收到rsp了的

通过如下语句抓包:

tcpdump -i eth1 -X '(src host 11.167.8.13) and (dst host 100.116.191.98)'
tcpdump -i eth1 -X '(src host 11.167.8.13) and (dst host 100.116.191.98)'  -w rsp.cap

六、数据包超过MTU引发分包

MTU是IP层面的限制,一般都是1500字节。考虑到ip包头为20字节(ipv4),所以包体内容超过1480就会引发分包。注:对于ping操作器传输层为icmp,此时TCP Header应该是icmp的head,其长度为8字节。

(1)ping操作指定通过-s选项指定每次发送的字节数。这里指定为1473,则整个ip包的长度应该为1473+8+20=1501,显然是超过MTU了的。

ping 118.195.193.69 -s 1473

(2)抓取数据包

tcpdump -i eth1 dst host 118.195.193.69 -X -w ping.cap

(3)关于抓取的数据包各个字段含义参考 IP数据包详解非常符合预期。

 第一分片数据包解析

  第二分片数据包解析

七、过滤数据包

当数据包比较多的时候如何过滤刷选自己关注的数据包。

(1)筛选目标ip为xx的数据包

(1)在上述方框中输入过滤条件,绿色说明过滤条件正确。

(2)点击右侧应用的箭头即可进行过滤,过滤后如下。

(3)关于过滤语句,后续重点介绍。

 (2)筛选目标ip为xx且协议是http的包

(3)筛选http请求中请求数据(主体)长度大于1M(1024*1024字节)的请求

注:我们下载的图片大小在1.4M左右!!

关于过滤语句:

1、根据ip过滤
#筛选源IP或者目的IP为9.136.13.191的数据包
ip.addr==9.136.13.191

#筛选源地址是9.136.13.191的数据包
ip.src_host==9.136.13.191

#筛选目的地址是9.136.13.191的数据包
ip.dst_host==9.136.13.191

2、根据端口过滤
#根据tcp端口过滤数据包(包括源端口和目的端口)
tcp.port==80

#根据tcp源端口过滤数据包
tcp.srcport==80

#根据tcp目的端口过滤数据包
tcp.dstport==80

#根据udp端口刷选数据包(包括源端口和目的端口)
udp.port==80

#根据udp源端口过滤数据包
udp.srcport==80

#根据udp目的端口过滤数据包
udp.dstport==80


3、根据网络协议过滤
注:常见的网络协议有 udp、tcp、dns、ip、ssl、http、ftp、arp、icmp、smtp、pop、telnet、ssh、rdp、sip 等

#筛选出http协议中的get请求的数据包
http.request.method==GET  
注意: GET一定要大写。

4、组合条件过滤

#筛选出源 IP 地址是 192.168.3.77 且目的 IP 地址是 192.168.3.78 的数据包
ip.src_host == 192.168.3.77 && ip.dst_host == 192.168.3.78

#筛选出源 IP 地址是 192.168.3.77 或目的 IP 地址是 192.168.3.78 的数据包
ip.src_host == 192.168.3.77 || ip.dst_host == 192.168.3.78

#ip地址不是192.168.3.77的数据包
 !(ip.addr == 192.168.3.77)

参见: Wireshark内容过滤方法_wireshark根据内容过滤-优快云博客

八、mac下wireshark抓取chrome浏览器的https请求

重要:wireshark是可以抓取https明文请求的(浏览器记录秘钥至文件,wireshark利用其进行解密)!!!!!!

(1)查找浏览器地址
sudo find / -iname "Google Chrome"

这里找到路径如下:

/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
(2)启动chrome(需指定ssl-key-log的存储路劲)

chrome其从参数需要配置以下内容:
--ssl-key-log-file: 用于指定ssl-key-log的存储路径。

注:设置ssl-key-log-file的作用是指定浏览器在访问SSL/TLS网站时将对应的秘钥保存到本地文件中,有了这个日志文件后wireshark就可以将报文进行解密了。

在mac终端执行如下指令,启动一个新的chrome。注:此处指定ssl-key-log-file为/tmp/.ssl-key.log

sudo /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --user-data-dir=/tmp/chrome --ssl-key-log-file=/tmp/.ssl-key.log
执行上述命令后会开启一个全新的chrome,我们后续的操作都在这个全新的chrome进行。
 
(3)修改ssl-key-log的权限为777
sudo chmod 777 /tmp/.ssl-key.log
(4)启动wireshark并配置sslkeylog

Wireshark → Preferences → Protocals → TLS(老版本是SSL) 

(5)抓包测试

直接点击左上角的鲨鱼头标识,开始抓包。

这里要抓http数据包,在filter处直接筛选http数据包(否则包太多了)。

然后在之前开启的浏览器里面打开会话记录页面,就可以看到wireshark中有很多对应http数据包的记录。

在wireshark中可以看到很多熟悉的接口。

选中一个数据包。右键→Follow → HTTP Stream 就可以看大这个完整的http请求及响应了。

Follow -> Follow Http stream 能重组TCP流,便于人工查看!!!

注:上述请求其实都是https请求,因为我们通过浏览器记录了秘钥文件所以wireshark才可以解密。

(6)经验证不记录秘钥果然是不行的

使用普通方式启动的浏览器且不配置wireshark的TLS,会发现包确实抓了很多但是完全看不到明文。

九、一些其他实用技能

结论:抓包其实很简单!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焱齿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值