我没有任何关于 tshark 的基础知识,而且很难找到任何教程来帮助我。
所以现在我有一个包含大量网络流的 pcap 文件;一个时间范围;一个 ip 地址;一个 tcp 端口号;ip 地址发送的数据包数量或 ip 地址接收的数据包数量。
我想要做的是,首先让 tshark 读取该 pcap 文件,然后使用时间范围过滤出该时间范围内的所有网络流,然后使用 ip addr 过滤出该 ip addr 上已经按时间过滤掉的网络流,然后使用 tcp 端口号和 ip addr 发送/接收的数据包数量最终找到我想要的流。然后跟踪此流并将整个对话保存到新的 pcap 文件中。
有人能帮忙吗?我将非常感激。
答案1
我要做的是,首先让 tshark 读取该 pcap 文件,然后使用时间范围过滤掉该时间范围内的所有网络流
你应该这样做editcap
:
$ editcap -A "2011-07-12 09:49:16" -B "2011-07-12 09:49:20" in.pcap out.pcap
然后使用ip addr过滤掉所有来自该ip addr的网络流,然后使用tcp端口号和ip addr发送/接收的数据包数最终找到我想要的流。
$ tshark -r out.pcap -R "ip.addr == $IP && tcp.port == $PORT"
然后按照这个流程
$ tshark -r out.pcap -R "ip.addr == $IP && tcp.port == $PORT" \
-T fields -e ip.src -e tcp.srcport -e ip.dst -e tcp.dstport | \
while read line; do tshark -r out.pcap \
-R "ip.addr == `echo $line | awk '{ print $1 }'` && \
tcp.port == `echo $line | awk '{ print $2 }'` && \
ip.addr == `echo $line | awk '{ print $3 }'` && \
tcp.port == `echo $line | awk '{ print $4 }'`" \
echo \
done
答案2
看通过 TCP 连接分割 pcap 文件的工具?,然后感到有点难过,我找不到任何适用于 Linux 的东西,可以将 PCAP 保持在正确的格式并按流进行过滤。如果你可以在不关注流的情况下做到这一点,那么 tshark 将尊重所有正常的tcpdump (pdf 链接)过滤器。读取转储并设置-w output
标志和过滤器,您将获得更精简的文件。