如何使用套接字欺骗IP地址?

Ars*_*ray 9 c# sockets ip-protocol

我正在研究网站测试框架,我希望能够欺骗用户ip.我已经读过,像Loadrunner这样的软件可以做到这一点,我也希望能够做到这一点.

关于如何正常使用套接字的教程可以在这里找到,但是如果我想欺骗ip,我将不得不以某种方式编辑ip头.这是在套接字级别完成的,还是在.Net中还有其他更深层次的,这可以让我这样做?

Pho*_*cUK 9

您不能再这样了,因为在桌面版Windows中限制了对原始套接字的访问:

在Windows 7,Windows Vista,Windows XP Service Pack 2(SP2)和Windows XP Service Pack 3(SP3)上,通过原始套接字发送流量的能力受到以下几种限制:

  • TCP数据无法通过原始套接字发送.
  • 无法通过原始套接字发送具有无效源地址的UDP数据报.任何传出UDP数据报的IP源地址必须存在于网络接口上,否则数据报将被丢弃.此更改旨在限制恶意代码创建分布式拒绝服务攻击的能力,并限制发送欺骗数据包(具有伪造源IP地址的TCP/IP数据包)的能力.
  • 不允许bind使用IPPROTO_TCP协议的原始套接字调用该函数.
    注意bind具有原始套接字函数被允许用于其它协议(IPPROTO_IP,IPPROTO_UDP,或IPPROTO_SCTP,例如).

(来自开发人员中心 - 桌面 - TCP/IP原始套接字)

您可以非常轻松地创建原始套接字:

Socket s = new Socket(ip.AddressFamily, SocketType.Raw, ProtocolType.Ip); 
Run Code Online (Sandbox Code Playgroud)

在这一点上你可以构建适当的数据报(如果你没有关于如何做到这一点的文档,这将是一个单独的问题)

  • 是的,只有服务器版本允许您伪造数据包的来源(因为服务器可能必须这样做以用于路由目的) (2认同)