我正在开发一个网站测试框架,我希望能够欺骗用户ip。我已经读过,像Loadrunner这样的软件可以做到这一点,我也希望能够做到这一点。
关于如何正常使用套接字的教程可以找到here,但是如果我想欺骗ip,我将不得不以某种方式编辑ip标头。这是在套接字级别完成的,还是.Net中还有其他更深层次的内容,这可以让我这样做?
答案 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_IP
,IPPROTO_UDP
或IPPROTO_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地址。