在 C# 中捕获和编辑 TCP/UDP 个数据包

Capture and edit TCP/UDP packets in C#

我正在尝试创建一个工具,在将特定数据包发送到特定网站之前,它将 append/edit 某些内容放入特定数据包中。

目前我正在使用 Wpe Pro 应用此过滤器。

在 C# 中是否有类似的东西来创建这个工具?

确实没有通用的方法来做到这一点。您必须考虑多种可能性,看看它们是否适合您的情况。例如,您可以在官方 Pcap.NET 论坛上使用 Pcap.NET (as said in the comments) easily. There are dozens of examples out there on the web that will guide you in modifying packets using Pcap, for example this discussion 编辑使用 HTTP 发送的数据包。

但是,如果数据包使用的是 HTTPS (SSL/TLS),则有效负载(即正在发送的实际数据)将被加密,这可能会被绕过;如果 one/multiple precondition(s) of SSL are broken or by using a tool like sslstrip (python)。请注意,sslstrip 将尝试强制通过 HTTP 发送套接字,即使请求 HTTPS 也是如此,但不能保证这会起作用。

就我个人而言,我总是尽量避免接触插座,即使是任何与网络相关的东西。尤其是当它涉及 HTTPS 时,因为您现在可能已经明白,这是很难绕过的。我不知道你试图破坏什么程序,但我觉得这对这个答案有好处。

对于 HTTP,可以轻松创建一个具有 hooks the Windows Socket API. You should be looking into the send function and possibly even the recv(接收)功能的简单程序。您可以根据需要修改有效负载,甚至可以根据需要将其替换为其他有效负载。 请注意,通过 winsock.send 函数发送的数据已经加密(如果正在使用 SSL/TLS),因为应用程序将处理第 7 层(应用层)、第 6 层(表示层)和第 5 层(会话层) ,这是第 5 层和第 4 层之间的 where SSL gets applied) of the OSI model. Winsock is a bridge

对于 HTTPS,您仍然可以使用挂钩,但您必须挂钩处理连接的应用程序部分,并确保在它初始化连接/设置负载之前应用您的(修改后的)负载。这听起来很难做,说起来其实很容易,只要你肯学,有时间。