linux_tcpdump命令抓包(Wireshark使用)
tcpdump是一个强大的命令行网络抓包分析工具,它允许用户捕获和分析经过计算机网络接口的数据包。捕获流经网络接口的原始数据包解析各种网络协议的数据包显示或保存捕获的数据包内容。
一、什么是tcpdump?
tcpdump 是一个强大的命令行网络抓包分析工具,它允许用户捕获和分析经过计算机网络接口的数据包。
-
捕获 流经网络接口的原始数据包
-
解析 各种网络协议的数据包
-
显示 或 保存 捕获的数据包内容
二、tcpdump的使用指南
1.基本语法
tcpdump [选项] [过滤表达式]
2.接口相关
tcpdump -i eth0 # 指定网卡接口
tcpdump -i any # 监听所有接口
tcpdump -D # 列出所有可用接口
3.输出控制
tcpdump -c 10 # 只捕获10个包
tcpdump -w file.pcap # 保存到文件
tcpdump -r file.pcap # 从文件读取
tcpdump -v # 详细输出
tcpdump -vv # 更详细输出
tcpdump -vvv # 最详细输出
tcpdump -n # 不解析主机名
tcpdump -nn # 不解析主机名和端口名
tcpdump -A # ASCII格式输出
tcpdump -XX # 十六进制和ASCII格式输出
4.协议过滤
tcpdump icmp # ICMP包
tcpdump tcp # TCP包
tcpdump udp # UDP包
tcpdump arp # ARP包
5.逻辑运算符&&复杂组合
tcpdump host 192.168.1.1 and port 80 # 与
tcpdump host 192.168.1.1 or host 192.168.1.2 # 或
tcpdump not port 22 # 非
tcpdump -i eth0 -c 5 -nn 'src host 192.168.1.100 and dst port 80'
tcpdump -i any -c 10 'tcp and (port 80 or port 443)'
# 过滤表达式要用引号: 包含空格或特殊字符时
以上是我们tcpdump命令的基本使用情况!!
三、如何在linux系统使用tcpdump抓包查看通信流程
1.实操(常用命令参数)
sudo tcpdump -i ens33 -s 0 host 192.168.9.156 and port 60000 -w /mnt/hgfs/Project\ Code/out.pcap
# -i ens33 捕获流经网卡名称为ens33的数据包
# -s 0 表示捕获每个数据包的完整内容,不进行任何截断
#host 192.168.59.233 and port 60000 IP为192.168.9.156 端口为60000
#-w -w /mnt/hgfs/Project\ Code/out.pcap 将内容保存到此文件
在使用tcpdump需要权限,通常需要root权限或使用sudo(如下)

2.测试:
(1)在数据接收端使用tcpdump进行抓包监听

(2)使用本文章提供的网络调试组手工具进行测试(在作者的资源处可下载)

如图选择的是UDP协议,工具还提供别的协议提供参考
(3)“ctrl + c” 结束进程 将抓到的内容使用Wireshark打开

上面的红框内容是抓到的包体大致信息
下面的红框的内容则是ISO网络结构模型的体现

可以看到除数据(Data)以外各协议的具体封装
3.使用wireshark自带参数简单筛选抓包内容

直接用命令抓网卡内容不过滤

常用示例:
IP 过滤 ip.addr == 192.168.1.1 - 显示所有与 192.168.1.1 相关的 IP 包(源或目标)。
ip.src == 192.168.1.100 - 显示源 IP 是 192.168.1.100 的包。
ip.dst == 8.8.8.8 - 显示目标 IP 是 8.8.8.8 的包。
端口过滤
tcp.port == 80 - 显示 TCP 源或目标端口是 80 的包。
udp.port == 53 - 显示 UDP 源或目标端口是 53 的包。
tcp.dstport == 3389 - 显示目标端口是 RDP (3389) 的 TCP 包。
协议过滤
http - 显示所有 HTTP 协议包。 dns - 显示所有 DNS 协议包。
arp 或 icmp - 显示 ARP 或 ICMP 包。
应用层内容过滤 (非常强大)
http.request.method == "GET" - 显示所有 HTTP GET 请求。
http contains "facebook" - 显示 HTTP 协议中包含 "facebook" 字符串的包。
dns.qry.name contains "google.com" - 显示查询的域名包含 "google.com" 的 DNS 请求。
TCP 标志过滤 (用于分析连接)
组合条件
ip.src == 192.168.1.100 and tcp.dstport == 443 - 显示从 192.168.1.100 发往 443 端口的 TCP 包。
http and (ip.dst == 192.168.1.1 or ip.dst == 192.168.1.2) - 显示发往两个特定 IP 的 HTTP 流量。 dns and not (ip.addr == 192.168.1.1) - 显示所有不涉及 192.168.1.1 的 DNS 流量。
如图筛选出我测试发的内容

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)