如何使用tshark从pcap文件中打印请求 - 响应对?

Ste*_*ven 9 packet-capture pcap wireshark tshark

给定一个pcap文件,我可以使用Wireshark提供整洁过滤器从重建的HTTP请求和响应中提取大量信息.我也能够将pcap文件拆分成每个TCP流.

麻烦我现在遇到的是我可以使用的所有酷过滤器tshark,我找不到一个可以让我打印出完整的请求/响应机构.我打电话的是这样的:

 tshark -r dump.pcap -R "tcp.stream==123 and http.request" -T fields -e http.request.uri
Run Code Online (Sandbox Code Playgroud)

我可以传递一些过滤器名称-e来获取请求/响应正文吗?我最接近的是使用-V旗帜,但它也打印出一堆我不需要的信息,并且希望避免使用"哑"过滤器.

rup*_*llo 9

如果您愿意切换到另一个工具,tcptrace可以使用-e选项执行此操作.它还具有HTTP分析扩展(xHTTP选项),可为每个TCP流生成HTTP请求/ repsonse对.

这是一个用法示例:

tcptrace --csv -xHTTP -f'port=80' -lten capturefile.pcap
Run Code Online (Sandbox Code Playgroud)
  • --csv将输出格式化为逗号分区变量
  • -xHTTP用于写入'http.times'的HTTP请求/响应,这也会打开-e以转储TCP流有效负载,所以你真的不需要-e
  • -f'port = 80'过滤掉非网络流量
  • -l用于长输出形式
  • -t给我进度指示
  • -n关闭主机名解析(没有这个就快得多)


edi*_*999 5

如果您捕获了 pcap 文件,则可以执行以下操作来显示所有请求+响应。

filename="capture_file.pcap"
for stream in `tshark -r "$filename" -2 -R "tcp and (http.request or http.response)" -T fields -e tcp.stream | sort -n | uniq`; do
    echo "==========BEGIN REQUEST=========="
    tshark -q -r "$filename" -z follow,tcp,ascii,$stream;
    echo "==========END REQUEST=========="
done;
Run Code Online (Sandbox Code Playgroud)

我只是让 diyism 答案更容易理解(你不需要 sudo,而且多行脚本在我看来很容易查看)


小智 5

当提出问题时,这可能不是一个选项,但较新版本的 tshark 可以“跟踪”对话。

tshark -nr dump.pcap -qz follow,tcp,ascii,123
Run Code Online (Sandbox Code Playgroud)

我知道这是一个非常古老的问题。我只是为那些最终在这里寻找当前解决方案的人添加这个。