我是 tcpdump 新手,当我使用以下命令捕获传入的 http 数据包时,我无法识别任何可读的内容,例如 HTTP、GET 等。我需要检查标头和内容部分。如何以可读格式显示它们?
# tcpdump -i eth0 -s 0 -A 'tcp dst port 80'
E.....@[email protected]..
...
...PlV.l...K...........
.....fx
答案1
对于你正在尝试做的事情,你可能不想要使用该选项。运行不带该选项的 tcpdump 将使您更容易跟踪总结正在发生的事情的行。如果您只想直观地跟踪,-A
您可能也不想要该选项。因此您的命令将是这样的:-s 0
$ sudo tcpdump -ni eth0 tcp dst port 80
如果你真的想深入了解数据包的实际内容并跟踪整个 TCP 流,那么你做想要使用-s 0
选项捕获整个数据包,并且还想使用-w filename.cap
选项将捕获的数据包写入二进制文件而不是终端。您的命令将类似于以下内容:
$ sudo tcpdump -s 0 -w /tmp/dump.cap -ni eth0 tcp dst port 80
执行或等待您想要捕获的活动,然后按 control-C 退出 tcpdump。使用其他程序,例如优秀且免费的 GUI 程序wireshark打开捕获文件并轻松查看捕获的内容,并根据需要详细查看。不过请注意,如果您对网络没有扎实的了解,一开始可能会有点不知所措。看起来您正在运行 Linux,大多数 Linux 发行版都提供 wireshark 软件包。Windows 和 MacOS 也有免费的 wireshark 下载。如果您运行 tcpdump 的计算机是服务器,并且您无法在其上运行 GUI 程序,那么您只需将使用 tcdump 编写的捕获文件复制到另一台可以运行 GUI 程序并在 wireshark 中打开它的计算机即可。
希望这可以帮助。