使用 Wireshark 命令行工具(如 tshark)从 pcap 文件获取第一次和最后一次
Get first and last times from pcap file with Wireshark command line tools (like tshark)
我收集了大量 PCAP 文件,其中一些文件在被捕获后 "touched"。这意味着文件上的系统时间戳可能不等于数据捕获的时间。此外,大多数文件都是来自 Wireshark 的自动保存,有时主机直到捕获时间之后才从 tap 中获取数据,因此如果这发生在文件自动保存之后,下一个顺序文件实际上在捕获之前已经捕获了上一个文件的结束时间。
我有一个自动解析器,它使用 tshark 来浏览这些文件。但是,每个文件到 运行 大约需要 2 分钟,而且我有数万个文件,直到 运行 通过问题文件后我才知道存在时间戳问题。
有没有一种简单的方法可以使用 tshark(或其他命令行工具)从 PCAP 文件中获取第一个 "epoch time" 和最后一个 "epoch time" 而无需扫描整个文件?
否(不适用于 tshark
)。
但是,Wireshark 提供了一个程序,capinfos
,它读取捕获文件以获得有关捕获文件的信息,如开始时间、结束时间、数据包数等(参见帮助了解详情)。
capinfos
不进行解剖,因此会比 tshark
.
快得多
$capinfos -a -e wireless_080224_first.pcap.gz
File name: wireless_080224_first.pcap.gz
First packet time: 2008-02-24 13:10:09.637336
Last packet time: 2008-02-24 13:40:23.026171
$capinfos -T -r -a -e wireless_080224_first.pcap.gz
wireless_080224_first.pcap.gz 2008-02-24 13:10:09.637336 2008-02-24 13:40:23.026171
;默认输出
$capinfos wireless_080224_first.pcap.gz
File name: wireless_080224_first.pcap.gz
File type: Wireshark/tcpdump/... - pcap (gzip compressed)
File encapsulation: Ethernet
File timestamp precision: microseconds (6)
Packet size limit: file hdr: 65535 bytes
Number of packets: 15 k
File size: 12 MB
Data size: 13 MB
Capture duration: 1813.388835 seconds
First packet time: 2008-02-24 13:10:09.637336
Last packet time: 2008-02-24 13:40:23.026171
Data byte rate: 7705 bytes/s
Data bit rate: 61 kbps
Average packet size: 894.31 bytes
Average packet rate: 8 packets/s
SHA1: 222837342c170e8fb0c2673aef9c056a2ddc08ae
RIPEMD160: ecf83704b912da3d2f69f4257fa9ee1658aac6cb
MD5: b82eda24d784e69ac0828a4ebffed885
Strict time order: True
Number of interfaces in file: 1
Interface #0 info:
<snip>
capinfos
是更好的解决方案,但如果您无法访问它或想使用 tshark,这就是您可能想要的解决方案
tshark -r $file -Tfields -e frame.time_delta | sort -n | tail -1
我收集了大量 PCAP 文件,其中一些文件在被捕获后 "touched"。这意味着文件上的系统时间戳可能不等于数据捕获的时间。此外,大多数文件都是来自 Wireshark 的自动保存,有时主机直到捕获时间之后才从 tap 中获取数据,因此如果这发生在文件自动保存之后,下一个顺序文件实际上在捕获之前已经捕获了上一个文件的结束时间。
我有一个自动解析器,它使用 tshark 来浏览这些文件。但是,每个文件到 运行 大约需要 2 分钟,而且我有数万个文件,直到 运行 通过问题文件后我才知道存在时间戳问题。
有没有一种简单的方法可以使用 tshark(或其他命令行工具)从 PCAP 文件中获取第一个 "epoch time" 和最后一个 "epoch time" 而无需扫描整个文件?
否(不适用于 tshark
)。
但是,Wireshark 提供了一个程序,capinfos
,它读取捕获文件以获得有关捕获文件的信息,如开始时间、结束时间、数据包数等(参见帮助了解详情)。
capinfos
不进行解剖,因此会比 tshark
.
$capinfos -a -e wireless_080224_first.pcap.gz
File name: wireless_080224_first.pcap.gz
First packet time: 2008-02-24 13:10:09.637336
Last packet time: 2008-02-24 13:40:23.026171
$capinfos -T -r -a -e wireless_080224_first.pcap.gz
wireless_080224_first.pcap.gz 2008-02-24 13:10:09.637336 2008-02-24 13:40:23.026171
;默认输出
$capinfos wireless_080224_first.pcap.gz
File name: wireless_080224_first.pcap.gz
File type: Wireshark/tcpdump/... - pcap (gzip compressed)
File encapsulation: Ethernet
File timestamp precision: microseconds (6)
Packet size limit: file hdr: 65535 bytes
Number of packets: 15 k
File size: 12 MB
Data size: 13 MB
Capture duration: 1813.388835 seconds
First packet time: 2008-02-24 13:10:09.637336
Last packet time: 2008-02-24 13:40:23.026171
Data byte rate: 7705 bytes/s
Data bit rate: 61 kbps
Average packet size: 894.31 bytes
Average packet rate: 8 packets/s
SHA1: 222837342c170e8fb0c2673aef9c056a2ddc08ae
RIPEMD160: ecf83704b912da3d2f69f4257fa9ee1658aac6cb
MD5: b82eda24d784e69ac0828a4ebffed885
Strict time order: True
Number of interfaces in file: 1
Interface #0 info:
<snip>
capinfos
是更好的解决方案,但如果您无法访问它或想使用 tshark,这就是您可能想要的解决方案
tshark -r $file -Tfields -e frame.time_delta | sort -n | tail -1