2011-03-15 85 views
11

我有asp.net網站託管,我正在使WebRequest發佈數據並獲得響應。該網站正在進行IP篩選。爲了測試目的,我想欺騙發件人IP地址。是否有可能以編程方式執行,或者我必須使用任何工具。C#如何欺騙WebRequest的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; 
    } 
} 

請指定任何可能性。

+1

危險的前景。存在IP過濾的原因。我懷疑這是否是在如何規避遠程網站安全措施方面提出建議的地方......即使你的意圖是好的。 – 2011-03-15 20:20:31

+4

@Matthew考克斯,你在哪裏建議他問這些問題:) – 2011-03-15 20:43:06

+1

我想檢查我自己的託管服務器的安全性。如果沒有從開發環境中測試適當的安全性,我就無法進行生產。我認爲根據馬修考克斯這個網站是不是有關安全問題:-D – 2011-03-15 21:06:42

回答

13

你在找什麼是SharpPCap這是一個WinPCap的.NET端口..它允許你做IP Spoofing,這就是你所說的。你的想法唯一的問題是你無法得到迴應。您可以發送請求,但如果您沒有正確的返回地址,則該請求將在互聯網中丟失。


編輯

爲此yoruself瓦特/出庫的幫助下,你需要自己構建的原始數據包。這已經回答了here.

+0

對不起如果你知道任何東西,那麼讓我知道 – 2013-01-25 12:38:38

+0

你不能這樣做只是C#代碼,因爲.net庫不會允許這個粒度級別,你需要使用一個非託管的庫來完成這個任務,然後你可以使用.net interop與非託管庫進行交互 – 2013-12-16 19:05:57

2

如果您希望得到回覆,那麼不會。沒有正確的IP地址,服務器將不會將響應發送到正確的目標。

如果您堅持嘗試,see this article以編程方式設置客戶端的IP地址。

+1

鏈接已經死了;( – lastr2d2 2016-04-19 07:50:47

0

您可以嘗試使用代理服務器,如此處所述。 (http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.proxy.aspx)。

在另一臺計算機上設置代理,然後將該計算機配置爲您的請求代理服務器應使請求看起來好像來自代理的IP,而不是您的請求。

+0

我試圖檢查安全性,所以我會發送來自不同的IP可能是假的請求 – 2011-03-15 20:57:51

1
+0

嘿,這是很好的信息,但是使用visual studio環境,我可以在外面使用嗎? – 2013-01-25 12:44:12

+0

你需要配置環境測試控制器,代理和IP欺騙),但是您可以使用MSTest在沒有VS的情況下執行測試 – 2013-01-25 19:16:25

0

負載測試某些服務器也可以考慮X - 轉發,對於和X-實時IP報頭。 因此,如果服務器檢查這些標頭,您可以將它們添加到您的Web請求中。 但它取決於服務器的實現。

0

使用System.Security命名空間中的Spoof類...