【问题标题】:C# How to spoof IP address for WebRequestC#如何欺骗WebRequest的IP地址
【发布时间】:2011-03-15 20:16:44
【问题描述】:

我托管了 asp.net 网站,我正在发出 WebRequest 以发布数据并获得响应。该网站正在进行 IP 过滤。我想欺骗发件人 IP 地址以进行测试。是否可以通过编程方式完成,或者我必须使用任何工具。

public string GetResponse(string request)
{  
    lock (Obj)  
    {  
        request = request + _dataControlInfo.SendEndingWith;  
        Logger.Info(request);  
        var req = (HttpWebRequest)WebRequest.Create(_serviceUrl);  
        req.Headers.Add("SOAPAction", "\"\"");  
        req.ContentType = "text/xml;charset=\"utf-8\"";  
        req.Accept = "text/xml";  
        req.Method = "POST";  
        var stm = req.GetRequestStream();  
        var bytes = UtfEncoding.StringToUtf8ByteArray(request);  
        stm.Write(bytes, 0, bytes.Length);  
        stm.Close();  
        var resp = req.GetResponse();  
        var stmr = new StreamReader(resp.GetResponseStream());  
        var strResponseXml = stmr.ReadToEnd();  
        Logger.Info(strResponseXml);  
        return strResponseXml;  
    }  
}  

请说明任何可能性。

【问题讨论】:

  • 危险的前景。 IP 过滤的存在是有原因的。我怀疑这是否是就如何规避远程网站的安全措施提出建议的地方......即使你的意图是好的。
  • @Matthew Cox,你建议他在哪里问这些问题 :)
  • 我正在尝试检查我自己的托管服务器的安全性。如果没有从开发环境测试适当的安全性,我就无法进行生产。我认为根据 Matthew Cox 的说法,该网站不适用于与安全相关的问题:-D

标签: c#


【解决方案1】:

您正在寻找的是SharpPCap,它是WinPCap 的.NET 端口。它允许您执行IP Spoofing,这就是您所说的。您的想法的唯一问题是您将无法得到回复。您可以发送请求,但如果您没有正确的返回地址,则请求将在互联网中丢失。


编辑

要在没有库帮助的情况下自己完成此操作,您需要自己构建原始数据包。已回复here.

【讨论】:

  • 抱歉,很晚才发表评论。我只想通过 c# 代码来做到这一点。如果你知道什么,请告诉我。
  • 您不能仅使用 c# 代码执行此操作,因为 .net 库不允许这种级别的粒度。您将需要使用非托管库来完成此操作,然后您可以使用 .net interop 与非托管库进行交互。
【解决方案2】:

如果您希望得到回复,那么不会。如果没有正确的 IP 地址,服务器将不会将响应发送到正确的目的地。

如果您仍然坚持尝试,请see this article 以编程方式设置客户端的 IP 地址。

【讨论】:

    【解决方案3】:

    或者您可以使用Web Performance TestsIP Switching enabled 的负载测试

    【讨论】:

    • 嘿,这是很好的信息。但使用视觉工作室环境。我可以在外面使用吗?
    • 您需要使用 Visual Studio 配置环境(测试控制器、代理和 IP 欺骗)。但是你可以在没有 VS 的情况下使用 MSTest 执行测试
    【解决方案4】:

    您可以尝试使用代理,如此处所述。 (http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.proxy.aspx)。

    在另一台计算机上设置代理,然后将该计算机配置为您的请求代理服务器,应该会使请求看起来好像来自代理的 IP,而不是您的。

    【讨论】:

    • 我正在尝试检查安全性。所以我会从不同的 IP 发送请求,这可能是假的。
    【解决方案5】:

    某些服务器还可以考虑 X-Forwarded-For 和 X-Real-IP 标头。 因此,如果服务器检查这些标头,您可以将它们添加到您的 Web 请求中。 但这取决于服务器的实现。

    【讨论】:

      【解决方案6】:

      使用 System.Security 命名空间中的 Spoof 类...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-22
        • 1970-01-01
        • 2010-11-13
        • 2012-10-09
        • 2011-02-20
        • 1970-01-01
        • 2014-01-18
        • 2017-11-21
        相关资源
        最近更新 更多