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

时间:2012-10-18 21:16:03

标签: c# sockets ip-protocol

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

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

2 个答案:

答案 0 :(得分: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_IPIPPROTO_UDPIPPROTO_SCTP
  •   

(来自Dev Center - Desktop - TCP/IP Raw Sockets

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

Socket s = new Socket(ip.AddressFamily, SocketType.Raw, ProtocolType.Ip); 

此时您可以构建相应的数据报(如果您没有关于如何执行此操作的文档,这将是一个单独的问题)

答案 1 :(得分:1)

只有当Load Generator上存在实际IP地址时,LoadRunner才能欺骗IP地址。因此,如果我有200个IP地址分配给我的主机,那么我可以在这些IP地址上分配我的负载,而不是在操作系统中使用最低成本路由或主要与次要网络接口。这不仅适用于LoadRunner,还适用于欺骗的其他应用程序性能测试工具,需要将地址分配给生成负载的主机。

如果您正在寻找不需要将IP地址分配给主机用于测试目的的原始欺骗解决方案,那么您可以考虑来自Spirent和Ixia等公司的网络性能测试工具,尤其是基于机箱的解决方案。如果需要,这些网络解决方案还可以生成数万个独特的虚假MAC地址,以配合伪造的IP地址。