我收集了大量的PCAP文件,其中一些文件在被捕获后被"触摸"过。这意味着文件上的系统时间戳可能不等于数据捕获的时间。此外,大多数文件都是从Wireshark自动保存的,有时主机直到捕获时间之后才从tap中获取数据,所以如果这发生在文件自动保存之后,下一个顺序文件实际上在前一个文件结束时间之前进行捕获。
我有一个自动解析器,它使用tshark来遍历这些文件。但是,每个文件运行大约需要2分钟,而且我有成千上万个文件,在运行完问题文件之后,我才知道存在时间戳问题。是否有一种简单的方法可以使用tshark(或其他命令行工具)从PCAP文件中获取第一个"epoch time"和最后一个"epoch time",而无需扫描整个文件?
No (not with 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