我想要一个 http POST 请求方法 CAPTURE 过滤器。
我知道通过显示过滤器可以轻松做到这一点,http.request.method==POST
但我需要兼容 tcpdump。
我写了tcp dst port 80 and (tcp[13] = 0x18)
但它并不完美......
tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)
效果更好,但是...包不被视为 http 包,所以我无法进行进一步的显示过滤......
有没有办法不显示框架,tcp,ip 和 http 标头信息,只显示数据文本行字段值(POST 的内容)?
或者 tcpdump 中也是一样,只转储 POST 的 html 表单内容?
答案1
无法保证所有发布的数据都与 POST 命令字符串本身位于同一个数据包中。事实上,如果发布的数据超过 1500 字节(由于存在其他 HTTP 标头,可能略少一些),则几乎可以保证它们不会全部位于同一个数据包中。因此,为了获得最佳结果,您需要一种能够理解多数据包 HTTP 事务的过滤方法,以及 libpcap 的过滤语言(tcpdump 使用的语言和 wireshark 使用的语言)捕获过滤器)不是吗。
答案2
什么操作系统?
如果是 Linux,您可以使用tcpdump -s 0 -A -i <if> port 80
任何其他过滤器来捕获和打印您感兴趣的 http 数据包,然后将其传输到 perl/bash/awk/whatever 脚本以从那里过滤该内容。
答案3
很难理解你在问什么,但我猜你只需要在 Wireshark 捕获中找到数据包,右键单击它,然后从菜单中选择“跟随流”。这只是一个猜测……只是想帮忙?