TCP连接劫持
TCP Connection Hijacking
我有一个用c++开发的小项目,由于它工作的性质,我需要将数据包插入到一个实时TCP流中。(目的是无辜的,http://ee.forumify.com/viewtopic.php?id=3299如果你一定要知道)我正在为一款游戏创建关卡编辑器,由于握手的性质,我不能简单地与WinSock等高级库建立新连接。到目前为止,它一直依赖于Winsock包编辑器来完成这些繁琐的工作,但如果我让应用程序来处理这一切,这将使每个人都高兴。
所以我的问题是:是否有一个API的地方,将允许我采取一个实时TCP流的控制,最好是一个保持它有效后,它完成?我希望不用注射任何dll。另外,由于我使用的是GCC/Mingw,所以Detours是一个禁忌。
我已经玩弄了WinPCap,我有一些工作代码(我可以收集一个数据包,并从中生成一个适当的数据包发送),但由于它在如此低的级别上运行,我无法预测最终用户可能使用的所有潜在协议。是的,他们可能会在以太网上使用IPv4,但是那些仍然使用PPP或其他晦涩协议的人怎么办?此外,在我的连接完成后,客户机应用程序将丢弃连接,因为数据包中的最新ID值已经更改,并且客户机假定它已断开连接。
所以,如果有人能提供一个高级TCP流操纵器,我会很高兴。如果没有,我就继续摆弄WinPCap,并告诉所有拨号用户去获得更好的互联网。
目标平台:Microsoft Windows XP到Windows 7
创建一个单独的进程绑定到本地端口。当创建初始tcp流时,代理它通过该进程,然后将其转发到网络。当你需要"注入"到流中时,你可以让这个代理进程来做这件事。只是一个想法。
您应该查看ettercap http://ettercap.sourceforge.net/的源代码或者追捕,TCP劫机者http://packetstormsecurity.org/files/view/21967/hunt-1.5.tgz
我不认为有任何合理的API允许你劫持TCP流。这样的事情,从本质上讲,是一个安全问题。
您可以插入您的程序作为正在讨论的连接的代理吗?也就是说,让打开连接的程序将其打开到您的程序,然后让您的程序打开到真正目标的连接。
这个想法是,如果所有的数据包都通过您的程序,那么修改TCP流就变得相对微不足道了。
- 当套接字连接断开时检测C/C++Unix
- 无法在windows上使用mingw将sqlite3与c连接
- 到连接组件算法的问题(递归)
- QTcpSocket在不阻塞GUI的情况下重新连接到服务器
- 无法在C++中建立与MySQL数据库的连接
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 在Qt Creator中,如何在连接到正在运行的进程后查看控制台输出
- 连接 dockerized 模型和 dockerized 数据库时出现"无法 SQLConnect"错误
- 使用 bfs 解决连接组件问题时得到错误的答案
- 在C++的两个字符串中连接以逗号分隔的唯一值
- 如何修复valgrind启动时的致命错误(与libc6-dbg和libc6-dbg:i386连接)
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- OSX蓝牙打开RFCOMMChannelAsync声称已连接,但未建立连接,并且从未调用过委托
- 在 libcurl 连接池中预创建连接
- 套接字连接"Operation not permitted"错误,甚至使用升压/平发器根.cpp
- libcurl 和 DNS ttl 中的内部连接管理
- 如何应用 libcurl 的持久连接选项
- 提升 ASIO - io_service 不要等待连接到线程
- WinSock2:connect() 提供"连接被拒绝"
- TCP连接劫持