我希望将数据包内容描述和数据包数据捕获到tcpdump
的文件中,以便以后检查。
目前我使用-w
选项将数据包数据保存到文件中:
tcpdump -c 100 -w /root/tcpdump.txt
这会将数据包数据保存到文件中,但在每个数据包之前还包含几行二进制文件。但是,我想在没有二进制文件的数据包数据本身(在同一文件中)之前显示数据包内容描述(在运行tcpdump
时通常显示在STDOUT上的内容)。
因此该文件应为每个数据包保存以下内容:
我要保存到文件的示例:
17:17:42.847059 IP some.server.com.17845 > some.host.net.55618: Flags [P.], seq 137568:137888, ack 1185, win 167, length 320
<-- Followed by the raw packet data here -->
此信息将用于以后的文件分析,以便我们查看发往特定主机/地址的完整数据包。
有人可以建议怎么做吗?
答案 0 :(得分:7)
tcpdump -c 100 -w /root/tcpdump.txt
如果您使用名称以-w
结尾的.txt
,则会误解-w
的内容。
-w
以pcap格式写出完全二进制文件,该文件旨在由tcpdump或其他程序(如Wireshark, NOT < / em> 由人类直接阅读!
IF 数据包在某个层上带有基于文本的协议,例如FTP控制协议,SMTP或HTTP请求/响应及其标题,然后 某些 文件中的数据将是文本,但 NOT 都是文本。 NOT 将其视为表明文件是或应该是文本文件。
但是,我希望在没有二进制文件的数据包数据本身(在同一文件中)之前显示数据包内容描述(运行tcpdump时通常显示在STDOUT上的内容)。
数据包数据本身是二进制!
如果您的意思是想要包含数据的文本十六进制转储,请使用
等格式 0x0000: 0001 0800 0604 0001 0001 0000 0010 0a78
0x0010: 0452 0000 0000 0000 0a78 0452 0101 0600
在数据包描述之后,所以你看到的是这样的:
17:49:38.007886 ARP, Request who-has 10.120.4.82 tell 10.120.4.82, length 32
0x0000: 0001 0800 0604 0001 0001 0000 0010 0a78
0x0010: 0452 0000 0000 0000 0a78 0452 0101 0600
然后你应该做
tcpdump -c 100 -x >/root/tcpdump.txt
这样tcpdump的 text 输出 - 当不使用-w
时得到的输出 - 被重定向到/root/tcpdump.txt
而不是打印在您的终端或终端仿真器上,以便写入十六进制转储以及数据包描述(这是-x
告诉tcpdump要做的事情。)
这不会在十六进制转储中写出数据包的链路层头;如果你想要数据包的链路层标头,例如
17:49:38.007886 ARP, Request who-has 10.120.4.82 tell 10.120.4.82, length 32
0x0000: ffff ffff ffff 0001 0000 0010 0806 0001
0x0010: 0800 0604 0001 0001 0000 0010 0a78 0452
0x0020: 0000 0000 0000 0a78 0452 0101 0600
然后使用-xx
而不是-x
。