如何使用 tshark 完成此任务

如何使用 tshark 完成此任务

我没有任何关于 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标志和过滤器,您将获得更精简的文件。

相关内容