将 pcap 文件转换为 csv:Tshark 为某些数据包在一行中显示多个 src、dst IP 地址

Converting a pcap file to csv: Tshark displays multiple src,dst IP addresses in a single line for some packets

我想使用“Tshark”将 pcap 文件转换为 csv/tsv,其中每一行对应一个数据包,格式如下: 时间戳src_ipdst_ip协议

我使用这个命令: tshark -r -T 字段 -e frame.time_epoch -e ip.src -e ip.dst -e ip.proto

但是,在显示的输出中,我看到一些行有两个 src、dst IP 地址和协议号,如下所示: 1525794300.3842 92.153.107.1,203.46.108.229 203.46.108.229,85.50.172.78 1,1

而对于其余部分,每一行都有一个 src IP,一个 dst IP 和一个协议,如下所示:

1525794300.3843 185.61.46.124 163.218.99.213 6

tshark 在一行中显示多个 src 和 dst ip 地址是否有任何原因?我们可以做些什么让 tshark 不这样做吗?

谢谢!

之所以tshark显示多个src和dst IP地址以及多个协议号是因为数据包中有多个IP headers。在这种情况下,它是 ICMP 数据包,其中包含有关另一个 ICMP 数据包的信息,可能是“传输中超过生存时间”或其他类似错误。如果您在 Wireshark 或 运行 tshark -r <file_name.pcap> -Y "icmp" 中打开该文件,您将能够自己看到它。

如果您只对第一个(外部)IP src 和 dst 地址以及协议号感兴趣,那么您可以将输出限制为每个字段的第一次出现,如下所示:

tshark -r <file_name.pcap> -T fields -E occurrence=f -e frame.time_epoch -e ip.src -e ip.dst -e ip.proto

或者,您可以通过这种方式指定列,同时限制字段出现次数:

在 *nix 上:

tshark -r <file_name.pcap> -o 'gui.column.format:"Epoch Time","%Cus:frame.time_epoch","Src","%Cus:ip.src:1","Dst","%Cus:ip.dst:1","Proto","%Cus:ip.proto:1"'

在 Windows:

tshark.exe -r <file_name.pcap> -o "gui.column.format:\"Epoch Time\",\"%Cus:frame.time_epoch\",\"Src\",\"%Cus:ip.src:1\",\"Dst\",\"%Cus:ip.dst:1\",\"Proto\",\"%Cus:ip.proto:1\""

运行 tshark -G column-formats 以获得有关列格式的更多帮助。