大脑是用来思考的,不应该用来存储。CPU不应该用来做存储。因此工具多记笔记,多完善笔记。重要的是具备逻辑思维。逻辑思维加上笔记,你就是大牛。

用简单的话来定义tcpdump,就是:dump the traffic on a network,对网络上的数据包进行截获的包分析工具。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

命令格式

tcpdump [ -DenNqvX ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ]
        [ -s snaplen ] [ -w file ] [ expression ]

常见命令

1、安装tcpdump

yum install tcpdump


2、列出本机所有的网卡接口

tcpdump -D


3、捕获特定网卡的数据包

tcpdump -i eth0


4、捕获具体数量的数据包

tcpdump -c 5 -i eth0


5、捕获的数据包保存到指定的文件

tcpdump -w 0001.pcap -i eth0


6、捕获的数据包显示IP而不是域名

tcpdump -n -i eth0


7、捕获指定协议的数据包

tcpdump -i eth0 tcp


8、捕获特定端口的数据包

tcpdump -i eth0 port 22

        dst port  22为目的端口为22;src port为源接口;port两目的和源接口。


9、捕获从指定IP过来的数据包

tcpdump -i eth0 src 192.168.0.2


10、捕获去往目的IP数据包

tcpdump -i eth0 dst 50.116.66.139


11、捕获HTTP请求的URL

tcpdump -s 0 -v -n -l | egrep -i "POST /|GET /|Host:"


12、捕获HTTP的POST请求的密码

tcpdump -s 0 -A -n -l | egrep -i "POST /|pwd=|passwd=|password=|Host:"


13、以ASCII码的格式打印

tcpdump -A -i eth0


14、以ASCII码和十六进制打印

tcpdump -XX -i eth0


15、读取捕获的数据包文件

tcpdump -r 0001.pcap

16、抓取本地环路数据包

tcpdump -i lo udp    // 抓取UDP数据
tcpdump -i lo udp port 1234 // 抓取端口1234的UDP数据
tcpdump -i lo port 1234  // 抓取端口1234的数据

17、抓取特定类型的数据包:

tcpdump -i eth1 'tcp[tcpflags] = tcp-syn'

        抓取所有经过网卡1的SYN类型数据包

tcpdump -i eth1 udp dst port 53

        抓取经过网卡1的所有DNS数据包(默认端口)

18、逻辑语句过滤

tcpdump -i eth0 '(( tcp) and ((dst net 172.16) and (not dst host 192.268.1.200)))'

        抓取所有经过网卡1,目的网络是172.16,但目的主机不是192.168.1.200的TCP数据

19、宿主机抓包docker实例

        在宿主机上监听指定Docker 实例的网络流量,需要首先找到在宿主机上与实例配对的网卡。再使用tcpdump 命令进行监听。

(1)进入到Docker实例中。

docker exec ‐it 1a /bin/bash 

(2)容器中执行查看参数的命令。

cat /sys/class/net/eth0/iflink 135

(3)退出容器,在宿主机上找到对应数字的网卡

 bridge link show

133: veth54e9e5c state UP @(null): <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master docker0 state forwarding priority 32 cost 2 
135: veth98165f5 state UP @(null): <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master docker0 state forwarding priority 32 cost 2

也可以得到网卡名称: veth98165f5 , @if134 的意思是与134号网卡通过 Veth pair 技术连通网络

(4)对docker网卡进行抓包,并将抓包结果写入到文件中,该文件可以在Windows上的wireshark解析。

# 将抓包写入文件后,控制台上将不再显示抓包数据。 
sudo tcpdump ‐i veth98165f5 ‐w veth98165f5.pcap

# 读入抓包的文件并解析显示 
sudo tcpdump ‐r veth98165f5.pcap

 # 通过组合键,将抓包写入到文件,同时控制台显示出来。 
 # tcpdump抓包,写入标准输出;tee获取标准输出的内容,写入文件,并输出到标准 输出;tcpdump从标准输入中获取数据并解析。
sudo tcpdump ‐i veth98165f5 ‐w ‐ | tee veth98165f5.pcap | tcpdump ‐r ‐


 # 带有过滤条件的抓包
sudo tcpdump ‐i veth98165f5 port not 13506 and port not 5391 and port not 1883

参考

超级实用的tcpdump抓包命令,赶紧收藏吧!

抓包一张tcpdump小抄就够了 - Captain_Li - 博客园

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐