使用Wireshark捕获的数据包发送

14

我捕获了一些HTTP POST请求,希望能再次发送它们。该怎么做? 搜索并没有得出任何简单的方法,而不涉及某些复杂的东西,导致只能发送特定请求的脚本,没有任何灵活性。


网络接口处于混杂模式吗? - hashbrown
不是的,据我所知它不是。我没有在 Wireshark 中启用这个模式,而且我想在 Mac OS 中默认也没有启用它。 - RomaValcer
3个回答

14

你可以看一下 tcpreplay

它非常适合回放由Wireshark或libpcap格式的tcpdump捕获的整个流量流。


Tcpreplay现在已被AppNeta接管 - 他们的最新版本可在此处获得:https://github.com/appneta/tcpreplay - Pierz
1
请参阅https://wiki.wireshark.org/Tools,其中包含这些和其他工具的列表,感谢@Pierz更新了tcpreplay和tcprewrite的URL。 - Christopher Maynard
1
有一些免费的实用工具,例如tcprelay,您也可以使用scapy在Python中编写脚本。然而,这些都是命令行工具,在Windows上可能有些难以使用。由于我自己遇到了这个问题,我编写了一个轻量级工具,名为Player,它可以从PCAP文件发送数据包。它基于GUI(使用C#编写,并在Windows上运行)。您可以从此处尝试:https://github.com/Blondy314/Player - Blondy314

1

PlayCap 是一个非常易于使用的解决方案,用于重放网络捕获数据。您只需要将其指向 PCAP 文件并按播放按钮即可。


0

如果HTTP请求是从浏览器发送的,那么您可以利用大多数现代浏览器中可用的Web开发者模式-通过转到“网络”部分并右键单击特定的GET / POST请求,然后可以选择性地修改和重新发送所选的请求和/或使用curl(例如请参见FireFoxChrome)。

要仅重新发送由Wireshark捕获的HTTP交互并不简单,因为HTTP通过TCP传输,每个交互需要建立新连接,因此TCP序列号等内容需要不同。一种方法是从数据包跟踪中提取HTTP内容,并将其通过新的TCP连接重新发送-Wireshark允许提取HTTP跟踪,这些跟踪可以被重新发送。但是,来自AppNeta的tcpreplay套件的最新版本现在提供了一个工具tcpliveplay,它可以重放TCP流,因此似乎是最佳选择。

否则,如果需要更多对数据包重放的编程控制,可以使用 scapy,正如这个答案中所建议的那样。不过,你需要提取HTTP内容并在新连接上重新发送它们。

这会执行相同的请求吗?例如,我在 Twitter 上发布了一个帖子。我通过 curl 重新发送具有相同标头的 HTTP 请求。它会再次发布该帖子吗?还是会话 ID 只存储在最初登录的节点浏览器上,第二个请求会失败? - Jaquarh
它将使用相同的URL、头部和Cookies发送完全相同的请求。如果你在Twitter上发送重复的帖子,它将被过滤。 - Pierz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接