我想将tcpdump输出传递给我选择的程序的stdin。但是,我不知道tcpdump捕获的每个数据包之间的分隔符是什么。我已经浏览了联机帮助页,但没有找到任何设置来在每个数据包之间设置自定义分隔符。
我想将以下格式用于我选择的程序:
Src_IP_of_Packet, data
数据是原始数据(不是ASCII和/或HEX格式)。即我使用以下命令获得的data
。
tcpdump udp port 2112 -i eth0 -s0 -w-
使用上面的命令,我只获取数据而不是源IP。此外,每个数据包似乎都包含一个换行符,因此我的程序会将每一行视为一个新数据包,因为我的程序默认使用换行符作为每个数据包之间的分隔符。
没有分隔符,也没有办法大大修改tcpdump
的输出,使输出更加冗长。如果您正在寻求解析数据,最好将每行文本视为单个数据包,但添加一个或多个-v
选项将修改该显示,从而导致每个数据包的行数可变。
如果您想控制数据包标题中的哪些字段显示并添加/修改分隔符,您将要查看tshark
,它是Wireshark
的一部分,或者通过脚本语言与数据包交互;在这种情况下,使用Scapy
的Python是一个很好的选择。