我正在尝试将 HTTP 流量发送到文件中的端口 8007,然后稍后查看它们。
# tcpdump -i eth0 -s0 -n -w /tmp/capture port 8007 &
# tcpdump -r /tmp/capture -A | grep '10.2.1.50'
我希望看到 ASCII 格式的数据包数据,但事实并非如此。我得到的是这样的:
23:03:16.819935 IP 10.2.1.50.8007 > 10.2.1.120.57469: . ack 1369 win 272 <nop,nop,timestamp 188139705 215355175>
23:03:16.819943 IP 10.2.1.120.57469 > 10.2.1.50.8007: P 1369:1592(223) ack 1 win 12 <nop,nop,timestamp 215355175 188139703>
23:03:16.819947 IP 10.2.1.50.8007 > 10.2.1.120.57469: . ack 1592 win 272 <nop,nop,timestamp 188139705 215355175>
23:03:17.029587 IP 10.2.1.50.8007 > 10.2.1.120.57469: P 1:780(779) ack 1592 win 272 <nop,nop,timestamp 188139758 215355175>
23:03:17.029736 IP 10.2.1.50.8007 > 10.2.1.153.49989: F 822:822(0) ack 3494 win 272 <nop,nop,timestamp 188139758 1641992210>
23:03:17.040759 IP 10.2.1.120.57469 > 10.2.1.50.8007: . ack 780 win 15 <nop,nop,timestamp 215355396 188139758>
23:03:17.079305 IP 10.2.1.153.49989 > 10.2.1.50.8007: . ack 823 win 15 <nop,nop,timestamp 1642053303 188139758>
如何修复写入或读取以查看实际内容?我尝试过其他选项,例如 -v 但这不适用于内容。我使用的是 SLES 11 SP2。这是tcpdump
合适的工具吗?
多谢。
- 编辑
# tcpdump --version
tcpdump version 3.9.8
libpcap version 0.9-PRE-CVS
我也尝试使用 -X 选项,但仍然看不到有效负载数据。
答案1
您只能看到标头而不是数据包内容,因为您将输出通过管道传输到 grep。所以它只是获取 IP 地址所在的行。
-A
选项tcpdump
也给出了数据包内容。
答案2
使用tcpdump -X
例如(适用于我使用的 Fedora/Centos):
sudo tcpdump -nvvvXi br0
13:29:20.311228 00:1c:73:86:12:f9 > 01:00:5e:00:01:81, ethertype IPv4 (0x0800), length 86: (tos 0x0, ttl 5, id 0, offset 0, flags [none], proto UDP (17), length 72)
10.134.245.1.ptp-general > 224.0.1.129.ptp-general: Ptp MessageType: Follow_Up, SequenceId: 8208
0x0000: 4500 0048 0000 0000 0511 d49c 0a86 f501 E..H............
0x0010: e000 0181 0140 0140 0034 0cd0 0802 002c .....@[email protected].....,
0x0020: 0100 0000 0000 0000 0000 0000 0000 0000 ................
0x0030: 444c a8ff ffc7 1f6b 0236 2010 0200 0000 DL.....k.6......
0x0040: 5f2a b430 0d5e b480 _*.0.^..
答案3
这就是内容。您可能使用过一些命令来过滤内容。
答案4
我猜 OP 想要查看来自 IP 10.2.1.50 的数据包内容。
我刚刚偶然发现了这篇文章,所以想更新一下。使用tcpdump 中的
开关我从未使用过带有开关的保存的 pcap 文件,但希望它能工作。如何在实时 tcpdump 中使用 示例 -查看“进出”10.2.1.50 的流量或查看来自网络的结果或查看源自 10.2.1.50 的流量希望有帮助
host
tcpdump -nnA host 10.2.1.50
tcpdump -nnA net 10.2.1.0/24
tcpdump -nnA src 10.2.1.50
编辑另外,如果你想正确地 grep,请使用 -A 开关
tcpdump -r /tmp/capture -A | grep -A5 '10.2.1.50'
-A5 开关将在与 10.2.1.50 匹配的行之后显示接下来的 5 行