我不太清楚从哪里开始所有这些,但我假设我需要某种网络驱动程序来捕获所有的UDP流量。 (请告诉我哪一个最好记录并且有效)
在我成功捕获C#中的UDP数据包之后,我将通过TCP连接将它们发送到我的服务器,我需要将UDP发送到目的地,然后将响应发送回客户机(正在捕获数据包)然后将响应发送到程序,就像它直接来自相关服务器一样。
所以基本上我的联系如下:
Client running UDP program <<==TCP connection==>> Conversion Server <<==UDP connection==>> UDP Server
好的,让我澄清一下。我的计算机上有一个程序,我无法控制。我没有它的来源,没有办法修改源,我不能使用注入技术告诉它做一些不同的事情。当然,它使用UDP连接服务器,我需要工作。
现在,我需要让该程序正常运行,但我支持安全网络,不允许UDP流量(不要问)。我需要创建一个网络驱动程序,捕获我的计算机上所有程序生成的所有UDP流量,将其发送到专用服务器(我将在其中编码服务器守护程序,将TCP转换为UDP并将其发送到原始目的地)。
答案 0 :(得分:2)
您需要编写LSP(分层服务提供商)并进行安装。在实现LSP时,您的代码将获得从UDP端口接收的实际数据包,然后将其发送到TCP服务器,这将进行一些修改。完成后,您可以将修改后的数据包从LSP代码而不是实际的数据包发送到应用程序。您可以找到一些详细信息here。
资源:
答案 1 :(得分:0)
您需要将网卡设置为混杂模式(如Ethereal / Wireshark)。您需要按特定模式过滤所有UDP数据包,以确定它是正在发送的应用程序(可能是目标地址,可能是有效负载)。这将照顾到捕获。
然后在一侧创建一个带有UDP服务器(在防火墙内)的服务器,在另一侧创建一个TCP客户端,它将UDP流量封装在TCP中,并将其发送到您的其他服务器(防火墙外)对面。
总的来说,这是可行的,而不是火箭科学只需要对网络有一个很好的理解。
P.S。它让我想起一个人如何获得一次银行系统,它只有ICPM(ping)。所以他写了TCP-over-PING并且能够以这种方式telnet。有趣的。