如何使tcpdump不打印tcp标头?


28

我尝试了这个:

tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'

我只需要它的ascii部分。如何删除其余部分?


1
使用tshark可以使用:tshark -l -i eth0 -f'端口6667和更大的74'-T字段-e数据
Marcin 2010年

它说捕获了28个数据包,但没有将任何内容打印到STDOUT。
编码器2010年

您是说ASCII7吗?
Mircea Vutcovici 2011年

Answers:


15

正如Josh所建议的,tcpflow可以仅将TCP数据包数据打印到文件或STDOUT。您可以像这样通过管道将tcpdump传递到tcpflow:

tcpdump -i lo -l -w - port 23 | tcpflow -C -r -

要仅查看对话的一侧,可以对tcpdump使用过滤器,例如dst port 23


4
为什么需要以tcpflowroot 身份启动?
Ruslan 2014年

5

我不确定确切的语法tcpdump...实际上,我已将此问题标记为收藏,因为我想知道!但是,作为替代解决方案,您可以尝试使用tcpflow。它的工作原理基本相同,但是打印ASCII输出要好得多。它排除了标题,并按流顺序打印数据包,因此有时比容易阅读和遵循tcpdump


5

我觉得最优雅的解决方案就是放弃tcpdump。没有任何种类的管道:

tcpflow -c port 6667

就是这样。


您救了我的命,我想给您买一个饼干
gdaras

4

一种快速而肮脏的方法是通过字符串过滤输出:

tcpdump -nli eth0 '(port 6667) and (length > 74)' -s 0 -w - | strings

有时您没有其他工具,并且快速浏览一下负载就足够了。当然,如果您需要精确的有效载荷来进行注入或精确的分析,那就不好了。



1

上周我遇到了同样的问题-我改用wireshark gui,并对有趣的数据包进行了“可复制的ascii复制”。

我(成功地)试图解决Web服务及其XML答案的http请求问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.