高分求助:如何在已连接的socket(TCP/IP连接)中插入包?

bailee 2011-03-19 04:02:50

在C/S结构中,客户端已经与服务器端建立了Socket(TCP/IP)连接,知道客户端、服务器端的IP及端口。

请问:
如果从另一个程序(不是已连接上的客户端)向这个连接插入一个包,并发送到服务器端?

只要解决得好,要分的自己开,谢谢!

希望有C++的源代码 :)
...全文
136 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
IsItNothing 2011-03-23
  • 打赏
  • 举报
回复
ndis
哈利路亚1874 2011-03-21
  • 打赏
  • 举报
回复
可以在spi中挂钩WSPSend,对数据包进行重组。具体实现方法很简单,就不多说了
jwybobo2007 2011-03-20
  • 打赏
  • 举报
回复
1.原始套接字模拟发送,但是难度较高,主要是tcp的问题,不太好控制以及生成序列号,UDP的话方便一些
2.楼上一些兄弟说的api hook或者spi之类的得到socket句柄,然后直接调用3.还是api hook或者spi之类的,hook send函数,直接往buffer里面加东西
4.winpcap那类东西,但可能也有第一条说的问题
5.NDIS,TDI之类的驱动来修改发送内容或者实现发送等等
6.直接通过修改上层用户代码来实现
7.其它讨巧的方法
...

注:红色标记的应该实现的难度低些

其它兄弟们再添加吧,看有哪些方式
tcbo 2011-03-20
  • 打赏
  • 举报
回复
udp协议是无连接的,没有这个问题,对着Ip port发就是。

tcp协议的话,比较难。因为插一包数据进去,会影响原来的两端的发送和确认的sequence号。估计ring3的hook比较困难。也许SPI也能实现吧。。。
野男孩 2011-03-20
  • 打赏
  • 举报
回复
udp协议是无连接的,没有这个问题,对着Ip port发就是。

tcp协议的话,比较难。因为插一包数据进去,会影响原来的两端的发送和确认的sequence号。估计ring3的hook比较困难。也许SPI也能实现吧。。。
bailee 2011-03-19
  • 打赏
  • 举报
回复
To Jace3010:
首先谢谢您对本贴的关注。
1、关于插入包的方式,随机插入或特定插入其实都是一样的,只要能插入就行;
2、第三者与客户端在一起运行。
谢谢
smwhotjay 2011-03-19
  • 打赏
  • 举报
回复
r3下hook目标进程的socket. 比如socket初始化时,或send recv时的sock参数. 有了socket,随你怎么搞
Jace3010 2011-03-19
  • 打赏
  • 举报
回复
不明白LZ的意思。
1、插入包的方式,即随机插入一个数据包呢,还是在特定数据后插入数据包?
2、第三者程序运行的环境,是和客户端在一起呢?还是在网络中的其他计算机上?
bailee 2011-03-19
  • 打赏
  • 举报
回复
截包、Socket hook都想过,就是不知道如何才能插入一个数据包,哎
fishion 2011-03-19
  • 打赏
  • 举报
回复
如果不用驱动的话,可以用用SPI,LSP挂接下connect,得到套节字,不知道行不,或者就是挂接下send这个方法
Jace3010 2011-03-19
  • 打赏
  • 举报
回复
提供两个思路,不知是否可行:
1、原始套接字
2、NDIS编程.
Eleven 2011-03-19
  • 打赏
  • 举报
回复
估计要用到网络驱动编程的东西了

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧