9

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

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

4

2 回答 2

9

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

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

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

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

您可以相当轻松地创建原始套接字:

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

此时由您来构建适当的数据报(如果您没有有关如何执行此操作的文档,这将是一个单独的问题)

于 2012-10-18T21:19:26.220 回答
1

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

If you are looking for raw spoofing solutions where the IP address need not be assigned to the host for testing purposes then you might consider network performance testing tools, particularly the chassis-based solutions, from companies such as Spirent and Ixia. These network solutions can also generate tens of thousands of unique bogus MAC addresses to go with the bogus IP addresses if needed.

于 2013-01-25T15:14:42.683 回答