Dis*_*ame 7 networking grep internet tcpdump
我正在使用
sudo tcpdump -A -s0 -ien0 port 80 | grep schemas-microsoft >> ~/Downloads/convert.txt
Run Code Online (Sandbox Code Playgroud)
捕获通过 Internet 发送的 microsoft-schema xmls,何时tcpdump
应该捕获:(例如)
<xml>
<sample>h</sample>
<samp2>j</sample>
</xml>
Run Code Online (Sandbox Code Playgroud)
它只捕获:
<xml>
<sample>h</sample
<sam
Run Code Online (Sandbox Code Playgroud)
并在文件中的某处随机停止。这可能是由于什么?
Wireshark 文档的指南建议使用以下命令捕获数据包的全部内容:
$ tcpdump -i <interface> -s 65535 -w <some-file>
Run Code Online (Sandbox Code Playgroud)
查看tcpdump
指南的手册页表明-s0
应该是等效的:
-s
从每个数据包中获取 snaplen 字节数据,而不是默认的 65535 字节。由于快照有限而被截断的数据包在输出中用“[|proto]”表示,其中 proto 是发生截断的协议级别的名称。请注意,拍摄更大的快照既会增加处理数据包所需的时间,也能有效地减少数据包缓冲量。这可能会导致数据包丢失。您应该将 snaplen 限制为将捕获您感兴趣的协议信息的最小数字。将 snaplen 设置为 0 会将其设置为默认值 65535,以便与最近的旧版本 tcpdump 向后兼容。
我怀疑您可能会因为该指南中间的句子而丢失一些数据,主要是:
请注意,拍摄更大的快照既会增加处理数据包所需的时间,也能有效地减少数据包缓冲量。这可能会导致数据包丢失。您应该将 snaplen 限制为将捕获您感兴趣的协议信息的最小数字。
在搜索如何执行此操作时,我注意到其他人建议使用与此类似的命令行:
$ tcpdump -nnXSs 0 'port 80'
Run Code Online (Sandbox Code Playgroud)
/etc/services
)中查找主机名,以分别获得更快和更清晰的输出。我建议添加-nn
以查看是否可以提高您的性能,从而减少缓冲的数据,并希望保护更多的数据免于被丢弃。其他开关可能会有所帮助,但我不清楚它们在您的情况下如何提供帮助(如果有的话)。