7

我有一个我一直在使用 C++ 进行的小项目,由于它的性质,我需要将数据包插入到实时 TCP 流中。(目的很单纯,http ://ee.forumify.com/viewtopic.php?id=3299,如果你必须知道的话)我正在为游戏创建一个关卡编辑器,由于握手的性质,我不能简单地与 WinSock 等高级库建立新连接。到目前为止,它一直依靠 Winsock Packet Editor 来做这些脏活,但如果我让应用程序来处理这一切,它会让每个人都开心。

所以我的问题是:是否有一个 API 可以让我控制实时 TCP 流,最好是在它完成后保持有效的 API?而且我宁愿不必注入任何 DLL。此外,Detours 是一个禁忌,因为我使用的是 GCC/Mingw。

我玩过 WinPCap 并且我有一些工作代码(我可以收集一个数据包,并从中生成一个适当的数据包以发送)但由于它在如此低的级别上运行,我无法预料到所有潜在的协议最终用户可能会使用。是的,他们很可能会使用基于以太网的 IPv4,但是那些仍然使用 PPP 或其他一些晦涩的协议的人呢?此外,在我的连接完成后,客户端应用程序会断开连接,因为数据包中的最新 ID 值已更改并且客户端假定它已断开连接。

所以,如果有人能提供一个高级的 TCP 流操纵器,我会很高兴的。如果没有,我会继续修补 WinPCap 并告诉所有拨号用户去获得更好的互联网。

目标平台:Microsoft Windows XP 至 Windows 7

4

3 回答 3

2

创建一个单独的进程以绑定到本地端口。创建初始 tcp 流后,通过该进程对其进行代理,然后将其转发到网络。当您需要“注入”到流中时,您可以让此代理进程执行此操作。只是一个想法。

于 2011-09-22T10:30:26.257 回答
1

你应该看看ettercap的源代码http://ettercap.sourceforge.net/ 或者hunt, tcp hijacker http://packetstormsecurity.org/files/view/21967/hunt-1.5.tgz

这 2 个软件可以满足您的需求。

于 2011-06-02T10:00:40.110 回答
0

我认为没有任何合理的 API 可以让您劫持 TCP 流。这样的事情本质上是一个安全问题。

您可以插入您的程序作为相关连接的代理吗?也就是说,让打开连接的程序打开它到你的程序,然后让你的程序打开到真实目标的连接。

这个想法是,如果所有数据包都通过你的程序,那么修改 TCP 流就变得相对微不足道了。

于 2011-05-09T09:54:33.177 回答