在多文件模式下压缩 tshark 的输出

在多文件模式下压缩 tshark 的输出

我正在运行 tshark 来转储无线流量。我目前在多文件模式下运行,将输出拆分为 50MB 块。有没有办法用 gzip 或 lzma 之类的东西压缩这些 50MB 块?

我知道在单文件模式下,我可以将 tshark 的输出通过管道传输到 gzip,然后再传输到 split,但我希望每个 pcap 文件都可以单独读取,而不需要解压压缩文件的每个部分。

答案1

Wireshark 可以使用支持,因此 Wireshark 图形应用程序和tshark命令行应用程序都可以读取 gzip 文件。

这是我捕获的流量:

# tcpdump -n -i br0 -w tcpdump.pcap
tcpdump: listening on br0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C281 packets captured
281 packets received by filter
0 packets dropped by kernel

然后压缩它:

$ gzip tcpdump.pcap 
$ ls -lgo
total 88
-rw-r--r--. 1 89875 Jul 24 22:11 tcpdump.pcap.gz

并直接从压缩文件中读取:

$ tshark -nr tcpdump.pcap.gz | head -n5
1   0.000000 192.168.1.69 41342 192.168.1.1  53 DNS 75 Standard query 0x1716  A plus.google.com
2   0.004990  192.168.1.1 53 192.168.1.69 41342 DNS 251 Standard query response 0x1716  A 74.125.237.134 A 74.125.237.135 A 74.125.237.136 A 74.125.237.137 A 74.125.237.132 A 74.125.237.129 A 74.125.237.128 A 74.125.237.130 A 74.125.237.133 A 74.125.237.142 A 74.125.237.131
3   0.005274 192.168.1.69 54794 74.125.237.134 443 TCP 74 54794 > 443 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=612252515 TSecr=0 WS=128
4   0.024052 74.125.237.134 443 192.168.1.69 54794 TCP 74 443 > 54794 [SYN, ACK] Seq=0 Ack=1 Win=42540 Len=0 MSS=1376 SACK_PERM=1 TSval=639245311 TSecr=612252515 WS=64
5   0.024078 192.168.1.69 54794 74.125.237.134 443 TCP 66 54794 > 443 [ACK] Seq=1 Ack=1 Win=29312 Len=0 TSval=612252534 TSecr=639245311

答案2

我刚才正在研究同样的问题。我不知道您是否找到了解决方案,但我最终使用 Linux Bash 脚本来解决这个问题。

以下是脚本..

#!/bin/bash
FILENO=300 
COUNTER=0
while [  $COUNTER -lt $FILENO ]; do
    sudo tshark -i any -a duration:300 -a filesize:500000 -w - | gzip -9 -f > TRACE/trace_$COUNTER.gzip
    let COUNTER=(COUNTER+1)%FILENO
done

相关内容