0.查看是否安装
which tcpdump
1.基本使用
tcpdump #您可以使用-v选项获得更多详细信息,而-vv可以获取更多信息
tcpdump -D #检查哪些网络接口可用于捕获,tcpdump --list-interfaces
tcpdump --interface any #使用任何活动接口捕获网络数据包,tcpdump -i interface_id,tcpdump --interface interface_id
tcpdump -c 5 #抓取5次
tcpdump -c 3 udp #抓取3次,协议类型为udp
#ctrl+z可以中断命令
tcpdump -w linuxmi.pcap#tcpdump 命令的输出存储到文件
tcpdump -r linuxmi.pcap #读文件
2.有用的选项
假设您已登录到要管理的远程计算机。如果您不带任何选项运行“ tcpdump”,则输出将被来自您的SSH连接的数据包淹没。为避免这种情况,只需从输出中消除端口22
tcpdump not port 22 #消除22端口
tcpdump not port 143 and not port 25 and not port 22 #消除多个端口
tcpdump port 143 #仅监视143端口
tcpdump host hal9000 #从网络上的特定主机获取数据
tcpdump -i eth1 #指定要收听的网络接口
tcpdump udp -c 3 #指定协议,可以在/etc/ protocols中找到协议列表
tcpdump -c 3 host 192.168.174.135
tcpdump -c 3 host 192.168.174.135 and port 443 #指定主机和端口
tcpdump -c 3 -x #-x 16进制显示,-A ascii显示
3.保存输出以备后用
tcpdump -l | tee tcpdump_`date +%Y%m%e-%k.%M`
tcpdump -w tcpdump_raw_`date +%Y%m%e-%k.%M` #转换为二进制格式
tcpdump -r tcpdump_raw_YYYMMDD-H.M #读取上面二进制文件,或者wireshark看
tcpdump port 32772 -w dump_32772 #为端口32772运行了一个特定的转储
读取原始输出,举例1个包
17:26:22.924493 IP www.linux.org.www > test.linux.org.34365: P 2845:3739(894) ack 1624 win 9648 <nop,nop,timestamp 326501459 24374272>
我们所拥有的是对https://www.linux.org/的Web服务器请求。时间戳记过后,您会在主机名(即端口80)的末尾注意到.www。这将被发送到发出请求的主机test.linux.org的端口34365。“ P”代表TCP“ oush”功能。这意味着应该立即发送数据。在2845:3739(894)之后的数字中,2845标记第一个数据包的八位位组的编号。数字3739是数据包发送的最后一个字节的数字加1。数字894是发送的数据包的长度。表示“ ack 1624”的部分是“ acknowledge”的TCP术语-表示该数据包已被接受,下一个预期的数据包编号为1624。之后,我们看到“ win 9648”发送主机正在等待窗口大小为9648个八位位组的数据包。这之后是时间戳
如果您认为难以解释,则使用-x选项,它将在十六进制输出中包含数据包内容
18:12:45.149977 IP www.linux.org.www > test.linux.org.34536: . 1:1449(1448)
ack 487 win 6432 <nop,nop,timestamp 329284215 27156244>
0x0000: 4500 05dc 6a81 4000 4006 493b c0a8 0006 E...j.@.@.I;....
0x0010: c0a8 0009 0050 86e8 8fa4 1d47 1c33 e3af .....P.....G.3..
0x0020: 8010 1920 b4d9 0000 0101 080a 13a0 7a77 ..............zw
0x0030: 019e 5f14 4854 5450 2f31 2e31 2032 3030 .._.HTTP/1.1.200
0x0040: 204f 4b0d 0a44 6174 653a 2054 6875 2c20 .OK..Date:.Thu,.
0x0050: 3135
我们可以从输出中得知这是一个HTTP请求。至于其余的,它不是人类可读的,但是我们很容易知道这是一个合法的数据包。使用这种格式的另一个好处是,即使我们无法完全解释此数据包的状况,也可以将其发送给可能的人。最终,这是未经任何过滤通过网络传输的原始数据