tcpdump,如何只捕获实际数据?

tcpdump,如何只捕获实际数据?

例如,我有一个在端口 8001 上监听的服务器,一个客户端程序打开一个 TCP 套接字连接到该端口,发送一些二进制数据,我只想捕获实际数据,而不需要任何 TCP/IP 标头(例如 TCP 握手内容)。

使用 tcpdump 可以实现这个功能吗?

答案1

您应该运行 tcpflow。

https://linux.die.net/man/1/tcpflow

$ sudo tcpflow port 8001

答案2

您可以使用获得类似的结果tcpdump -i any <your_filter> -A。从人tcpdump:

-A 以 ASCII 格式打印每个数据包(减去其链接级标头)。方便捕获网页。

为了获得更集中的转储(即:删除一些握手包),您可以使用过滤规则,例如tcp-syn从过滤中删除数据包。

答案3

是的,您可以使用以下命令仅捕获 TCP PUSH 消息:

sudo tcpdump "tcp[tcpflags] & (tcp-push) != 0" 

答案4

不,tcpdump 没有提取有效负载(截断报头)的功能。此外,它没有任何关于深入分析应用层数据的内置功能。但您可以将流量写入文件,并使用 wireshark 功能提取实际数据。

相关内容