2011-03-15 25 views
11

Tengo sitio web asp.net alojado y estoy haciendo WebRequest para publicar datos y obtener respuesta. El sitio web tiene filtrado de IP. Quiero falsificar la dirección IP del remitente para fines de prueba. ¿Es posible hacerlo programáticamente o tengo que usar cualquier herramienta?C# Cómo falsificar la dirección IP para WebRequest

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; 
    } 
} 

Por favor, especifique cualquier posibilidad.

+1

Una perspectiva peligrosa. El filtrado de IP existe por una razón. Me pregunto si este es el lugar para pedir consejos sobre cómo eludir las medidas de seguridad en sitios web remotos ... incluso si sus intenciones son buenas. –

+4

@Matthew Cox, ¿dónde sugieres que haga este tipo de preguntas :) –

+1

Estoy intentando verificar la seguridad de mi propio servidor de alojamiento web. Sin probar la seguridad adecuada del entorno de desarrollo, no puedo seguir con la producción. Creo que de acuerdo con Matthew Cox este sitio no es para preguntas relacionadas con la seguridad :-D –

Respuesta

13

Lo que buscas es SharpPCap que es un puerto .NET de WinPCap .. te permite hacer IP Spoofing, que es lo que estás hablando. El único problema con su idea es que no podrá obtener una respuesta. Puede enviar solicitudes, pero si no tiene una dirección de devolución adecuada, la solicitud se perderá en los interwebs.


Editar

Para hacer esto yoruself w/a la ayuda de una biblioteca tendrá que construir los paquetes crudos mismo. Esto ha sido contestada here.

+0

Lo siento mucho comentario tardío. Quiero hacer esto solo con el código C#. Si sabe algo, hágamelo saber. –

+0

No puede hacer esto con código C# simplemente porque la biblioteca .net no permitirá este nivel de granularidad. una biblioteca no administrada para lograr esto, y luego puede usar la interoperabilidad .net para interactuar con la biblioteca no administrada. –

2

Si espera recibir una respuesta, entonces no. Sin la dirección IP correcta, el servidor no enviará la respuesta al destino correcto.

Si insiste en intentarlo de todos modos, see this article para configurar programáticamente la dirección IP del cliente.

+1

el enlace está muerto; ( – lastr2d2

0

Puede intentar utilizar un proxy, como se documenta aquí. (http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.proxy.aspx).

Configurar un proxy en una computadora diferente, luego configurar esa computadora como su servidor proxy de solicitudes debe hacer que la solicitud aparezca como si proviniera de la IP del proxy, no la suya.

+0

) Estoy tratando de verificar la seguridad. Por lo tanto, enviaré una solicitud de IP diferente que puede ser falsa –

1

o puede utilizar Web Performance Tests y una prueba de carga con IP Switching enabled

+0

Oye, esta es una buena información. Pero usa el entorno visual studio. ¿Puedo usar esto afuera? –

+0

Necesita configurar el entorno (Test Controller, Agent e IP spoofing) utilizando Visual Studio. Pero puede ejecutar la prueba sin VS usando MSTest –

0

Algunos servidores también se puede considerar cabeceras X-reenviado-A y X-real-IP. Entonces, si el servidor busca estos encabezados, puede agregarlos a su solicitud web. Pero depende de la implementación del servidor.

0

Utilice la clase Spoof encontrada en el espacio de nombres System.Security ...

Cuestiones relacionadas