给定一个pcap文件,我可以使用neat filters provided by Wireshark从重建的HTTP请求和响应中提取大量信息。我也能够split the pcap file into each TCP stream。
麻烦我现在遇到的是我能用tshark
的所有酷过滤器,我找不到一个能让我打印出完整的请求/响应机构的过滤器。我在说这样的话:
tshark -r dump.pcap -R "tcp.stream==123 and http.request" -T fields -e http.request.uri
我是否可以将一些过滤器名称传递给-e
以获取请求/响应正文?我最接近的是使用-V
标志,但它也打印出一堆我不需要的信息,并且希望避免使用“哑”过滤器。
答案 0 :(得分:8)
如果您愿意使用-e选项切换到其他工具tcptrace can do this。它还有一个HTTP分析扩展(xHTTP选项),为每个TCP流生成HTTP请求/ repsonse对。
以下是一个用法示例:
tcptrace --csv -xHTTP -f'port=80' -lten capturefile.pcap
答案 1 :(得分:3)
如果您捕获了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;
我只是让diyism回答更容易理解(你不需要sudo,多线脚本很容易看到)
答案 2 :(得分:2)
问问题时,这可能不是一个选择,但是较新版本的tshark可以“关注”对话。
tshark -nr dump.pcap -qz follow,tcp,ascii,123
我知道这是一个非常老的问题。我只是为最终在这里寻找当前解决方案的任何人添加此代码。
答案 3 :(得分:0)
我使用此行显示最后10秒请求正文和响应正文(https://gist.github.com/diyism/eaa7297cbf2caff7b851):
sudo tshark -a duration:10 -w /tmp/input.pcap;for stream in `sudo tshark -r /tmp/input.pcap -R "tcp and (http.request or http.response) and !(ip.addr==192.168.0.241)" -T fields -e tcp.stream | sort -n | uniq`; do sudo tshark -q -r /tmp/input.pcap -z follow,tcp,ascii,$stream; done;sudo rm /tmp/input.pcap