[SOLUCIONADO] Headers HttpWebRequest

Iniciado por TMarmol, 30 Junio 2014, 23:07 PM

0 Miembros y 2 Visitantes están viendo este tema.

TMarmol

Hace tiempo que descubrí un addon de Firefox que "enmascara" tu dirección IP, más concretamente genera una dirección aleatoria para los siguientes headers:


HTTP_X_FORWARDED_FOR :

HTTP_CLIENT_IP :

HTTP_VIA :


Hoy se me ha ocurrido implementar eso en un programa de Visual .Net, no tengo mucha esperiencia con el WebRequest, esto es lo que he intentado:
Código (vbnet) [Seleccionar]
           MyHttpWebRequest.Headers.Add("HTTP_X_FORWARDED_FOR", "122.141.229.153")
           MyHttpWebRequest.Headers.Add("HTTP_CLIENT_IP", "122.141.229.153")
           MyHttpWebRequest.Headers.Add("HTTP_VIA", "122.141.229.153")                  'La IP es una aleatoria que me he inventado
           MyHttpWebRequest.Headers.Set("HTTP_X_FORWARDED_FOR", "122.141.229.153")
           MyHttpWebRequest.Headers.Set("HTTP_CLIENT_IP", "122.141.229.153")
           MyHttpWebRequest.Headers.Set("HTTP_VIA", "122.141.229.153")

Pero no  da resultado, lo he probado con la propia pagina del addon que te devuelve estos valores para que compruebes si te funciona bien, pero en la respuesta del servidor, no les asigna ningún valor (la pagina en cuestión es esta : http://ipflood.paulds.fr/?p=demo), si todo funcionase bien, debería devolver lo siguiente:
HTTP_X_FORWARDED_FOR :122.141.229.153

HTTP_CLIENT_IP :122.141.229.153

HTTP_VIA :122.141.229.153

pero los devuelve en blanco.
Leí en el MSDN de Microsoft que el método "Add" produce una excepción si se intenta modificar un Header protegido, pero mi programa no devuelve ninguna excepción, así que no debe de estar protegido.
¿Alguna sugerencia?
Gracias.

ivancea96

¿Ese addon SOLO modifica esos campos? Podría ser que haga algo más, y por eso el servidor ese no te lo reconoce.

TMarmol

Cita de: ivancea96 en 30 Junio 2014, 23:56 PM
¿Ese addon SOLO modifica esos campos? Podría ser que haga algo más, y por eso el servidor ese no te lo reconoce.

Sinceramente, no lo sé.
Estas son las paginas que hablan sobre el addon:

Eleкtro

No soy un experto en Redes, pero a mi entender "Simular el uso de un proxy" como explican en la página del addon, no creo que "simular" signifique solamente setear un par de Headers... o quizás si, no lo se, pero seguramente que ese servicio haga algo más como te han comentado...

Aquí tienes algunas posibles razones por las que los valores que obtienes están en blanco, quizás pueda servir para descartar, según esto, se supone que si no usas un proxy los valores estarán vacios:

Cita de: http://blogs.msdn.com/b/asiatech/archive/2009/08/28/how-to-obtain-ip-address-of-a-client-behind-proxy-via-web-service.aspxIn above sample code, HTTP_VIA is used to judge whether the client is using proxy server. If client uses proxy server, then the web method will try to obtain IP address behind the proxy server. In many situations, the IP addresses we get are probably the addresses of proxy server. Below is the information on HTTP proxy:



1.  Not Use Any Proxy Server:

REMOTE_ADDR = IP address of client
HTTP_VIA = No value or No display
HTTP_X_FORWARDED_FOR = No value or No display

2.  Use Transparent Proxies:

REMOTE_ADDR = IP address of proxy server
HTTP_VIA = IP address of proxy server
HTTP_X_FORWARDED_FOR = Real IP address of client

3.  Use Normal Anonymous Proxies:

REMOTE_ADDR = IP address of proxy server
HTTP_VIA = IP address of proxy server
HTTP_X_FORWARDED_FOR = IP address of proxy server

4.     Use Distorting Proxies:

REMOTE_ADDR = IP address of proxy server
HTTP_VIA = IP address of proxy server
HTTP_X_FORWARDED_FOR = Random IP address

5.     Use High Anonymity Proxies (Elite proxies):

REMOTE_ADDR = IP address of proxy server
HTTP_VIA = No value or No display
HTTP_X_FORWARDED_FOR = No value or No display

Saludos








engel lex

por otro lado... si cambias tu ip de cliente en la cabecera no esperes respuesta, ya que esa es la dirección a la cual el servidor responderá
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

ivancea96

Cita de: engel lex en  1 Julio 2014, 01:41 AM
por otro lado... si cambias tu ip de cliente en la cabecera no esperes respuesta, ya que esa es la dirección a la cual el servidor responderá

El servidor responde por el socket abierto, ¿no es así?


El addon ese a lo mejor redirige el tráfico a través de un proxy de su servidor, o algo así.

engel lex

no se como es el asunto... pero insisto si cambias la ip de origen, el servidor responderá a esa ip...


El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

TMarmol

#7
Cita de: ivancea96 en  1 Julio 2014, 02:20 AM
El servidor responde por el socket abierto, ¿no es así?


El addon ese a lo mejor redirige el tráfico a través de un proxy de su servidor, o algo así.

He "investigado" un poco y la traducción de un fragmento de la web del addon dice lo siguiente:

Citar¿Cómo funciona?
Puedes pensar que si se pudiera sobrescribir cualquier información existente sobre tu IP yo lo habría hecho(o alguien lo hubiera hecho hace tiempo)
Pero actualmente es un poco mas complicado: Cuando mandamos un petición a un servidor, le proporcionas varia información sobre tu dirección IP : Tres de ellos provienen de la capa de aplicación (Application Layer) y el ultimo viene de la capa de Transporte (Transport Layer). Este ultimo no puedo modificarlo: no obtendrías ninguna respuesta a tu petición si lo estuviera. Pero las otras tres pueden ser sobrescritas sin ninguna consecuencia para tu navegación...

Estos tres Headers fueron creados para proporcionar informacion de la IP real de una persona que nevega a través de un servidor proxy. Así que cuando activas IPFuck, las paginas webs que visites pensaran que tu IP real es un servidor Proxy y (Si la pagina web está hecha correctamente) se centrará en la IP falsa que estás mandando...

Muchas paginas webs tratan de averiguar quien está detras de un servidor proxy. Si no me crees ( no me importa), comprueba esta busqueda de google :http://www.google.com/#hl=en&source=hp&q=get+real+ip+address+php Muchos de los snipplets que salen ahí comprobarán los HTTP Headers (los que hemos modificado) antes que la informacion de "Transport Layer" ('REMOTE_ADDR').

La traducción es cosa mía, puede que no esté bien del todo.  :silbar:
Aún que al principio se contradice un poco con el resto del texto, según eso simplemente está sobrescribiendo los Headers que mencioné en el primer post.



EDITO

Ya lo he solucionado, el problema era el nombre de los headers, el nombre correcto es
CitarHTTP_X_FORWARDED_FOR    ---  X-Forwarded-For
HTTP_CLIENT_IP                  ---  CLIENT-IP
HTTP_VIA                            ---  VIA

Cambiando eso en mi código ya me permite modificarlo:
Código (vbnet) [Seleccionar]

'GetNext es una función para generar un numero aleatorio
MyHttpWebRequest.Headers.Set("X-Forwarded-For", GetNext(25, 255) & "." & GetNext(25, 255) & GetNext(25, 255) & "." & GetNext(25, 255))
MyHttpWebRequest.Headers.Set("CLIENT-IP", GetNext(25, 255) & "." & GetNext(25, 255) & GetNext(25, 255) & "." & GetNext(25, 255))
MyHttpWebRequest.Headers.Set("VIA", GetNext(25, 255) & "." & GetNext(25, 255) & GetNext(25, 255) & "." & GetNext(25, 255))
       

Aquí pongo unas capturas de mi programa:
Interfaz                                                                          Boton Refresh
 
Boton Renew                                                                          Boton Renew
 

En el HTTP_VIA solo se ven los primeros digitos por un problema al parsear la respuesta, ya lo he solucionado, pero me da pereza arreglar las capturas.
El codigo basicamente es este:
Código (vbnet) [Seleccionar]
Public Function Web(url As String, IP As Boolean)
        Dim MyUrl As String = String.Format(url)
        Dim MyHttpWebRequest As HttpWebRequest = CType(HttpWebRequest.Create(MyUrl), HttpWebRequest)
        MyHttpWebRequest.Credentials = CredentialCache.DefaultCredentials
        'MyHttpWebRequest.Proxy = New WebProxy("86.51.26.20:8888")
        MyHttpWebRequest.UserAgent = "Mozilla/4.0"
        If IP = True Then  'Al pulsar el boton Renew el parametro IP es = a True mientras que el Boton Refres el parametro IP = False
            MyHttpWebRequest.Headers.Set("X-Forwarded-For", GetNext(25, 255) & "." & GetNext(25, 255) & GetNext(25, 255) & "." & GetNext(25, 255))
            MyHttpWebRequest.Headers.Set("CLIENT-IP", GetNext(25, 255) & "." & GetNext(25, 255) & GetNext(25, 255) & "." & GetNext(25, 255))
            MyHttpWebRequest.Headers.Set("VIA", GetNext(25, 255) & "." & GetNext(25, 255) & GetNext(25, 255) & "." & GetNext(25, 255))
        End If
        Dim MyHttpWebResponse As HttpWebResponse = CType(MyHttpWebRequest.GetResponse(), HttpWebResponse)
        Dim MyStream As Stream = MyHttpWebResponse.GetResponseStream
        Dim MyStreamReader As StreamReader = New StreamReader(MyStream)
        Dim MyHtml As String = MyStreamReader.ReadToEnd
        'Dim MyHtmlEnLineas() As String = Split(MyHtml,vbCrLf)
        'Dim MyLinea As String = MyHtmlEnLineas(linea)
        'MyLinea = Mid(MyLinea, mid1, Len(MyLinea) - mid2)
        Return MyHtml
        MyUrl = Nothing
        MyHttpWebRequest = Nothing
        MyHttpWebResponse = Nothing
        MyStream = Nothing
        MyStreamReader = Nothing
        MyHtml = Nothing
    End Function


Y ya está listo para implementarlo en cualquier programa, ahora probaré si también funciona con el WebBrowser.
Gracias por la información que me habéis proporcionado

engel lex

ahh ya, lo que hace es invertir los papeles XD
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

TMarmol

#9
La opción de insertar código de la web tiene algún que otro bug, si lo haces a la primera todo va bien.


Si modificas el mensaje 1 vez pasa esto:



Cuando modificas por 3ª vez y arreglas los numeros esos pasa esto.



No se si solo me pasa a mi, pero molesta