# Cómo debo configurar mi proxy?

## afkael

Hola!, necesito activar mi conexión a internet (que necesita la ejecución del navegador y el completado de un formulario de login para funcionar) desde la consola.. tengo un instalación sin entorno gráfico.

Recurri al manual, que da instrucciones de esto:

```
export http_proxy="http://username:password@proxy.gentoo.org:8080"
```

lo he echo de esta forma

```
export http_proxy="http://username:password@192.168.1.254:8080"
```

pero no me ha funcionado..

No estoy seguro que esté proporcionado la información correctamente, por eso quisiera que me ayuden a armar el comando..

Este es el formulario que debo completar

http://img241.imageshack.us/img241/2008/dibujosj6.jpg

----------

## opotonil

Siendo un formulario web ¿has probado a enviar los datos con curl mediante post?

```

curl -F "username=usuario;password=clave" http://192.168.1.254/login

```

Tendrias que mirar el codigo HTML para ver si realmente se esta usando post o si es get, sacar el nombre de los campos y comprobar que no hay ningun JavaScript haciendo algo raro con los ellos.

Salu2.

----------

## afkael

 *opotonil wrote:*   

> Siendo un formulario web ¿has probado a enviar los datos con curl mediante post?
> 
> ```
> 
> curl -F "username=usuario;password=clave" http://192.168.1.254/login
> ...

 

mmm.. nu.. de echo no entiendo muy bien lo que me dices, intentaré buscar algo de información al respecto y probaré con ese código que pasas. Si puedo decir que lo intenté con links y, si bien podia ver el formulario, no me lo tomaba al darle al boton OK, por lo que supongo que algo de javascript debe haber e incluso me parece que me mostraba algún error haciendo referencia a ese lenguaje. Saludos

---- Edit -------

Agrego esto por si es de utilidad:

```
   <form name="sendin" action="http://192.168.1.254/login" method="post">

      <input type="hidden" name="username" />

      <input type="hidden" name="password" />

      <input type="hidden" name="dst" value="" />

      <input type="hidden" name="popup" value="true" />

   </form>

   

   <script type="text/javascript" src="/md5.js"></script>

   <script type="text/javascript">

   <!--

       function doLogin() {

      document.sendin.username.value = document.login.username.value;

      document.sendin.password.value = hexMD5('\012' + document.login.password.value + '\166\035\373\343\246\214\167\124\040\147\060\327\232\100\321\347');

      document.sendin.submit();

      return false;

       }

   //-->

   </script>
```

la verdad no se nada de esto, pero la idea es hacer un script que se ejecute al iniciar la máquina... igual aun no prové con el otro código, ahora mismo lo hago.

----------

## Inodoro_Pereyra

Ni idea de javascript, no se como se podría hacer para activar la autenticación de la página con curl pero indistintamente, que te impide por ejemplo entrar a windows (o con un livecd de alguna distribución), activar la conexión, reiniciar la pc en gentoo y usarla? Al menos hasta que tengas X instalado...

Me imagino que el gran problema debe ser el numero de IP dinámico que te asigna el router ese que si no me equivoco es uno de esos mikrotik del montón por el comportamiento que describís. Podés tomar nota de el número de IP / puerta de enlace / servidor de DNS antes de reiniciar la pc y pasarle esos parámetros a tu Gentoo. En teoría debería funcionar... A lo sumo, puede que rebote la conexión si el mikrotik está configurado para chequear el nombre de host contra el lease del servidor dhcp, pero de nuevo se solucionaría especificando el mismo nombre de host en gentoo que el que tenías en windows o en el livecd.

Lo de curl debe funcionar sabiendo como hacerlo, lo de especificar un proxy http es para otros casos en donde si hay un proxy y requiere autenticación.

Salud!

----------

## afkael

 *Inodoro_Pereyra wrote:*   

> Ni idea de javascript, no se como se podría hacer para activar la autenticación de la página con curl pero indistintamente, que te impide por ejemplo entrar a windows (o con un livecd de alguna distribución), activar la conexión, reiniciar la pc en gentoo y usarla? Al menos hasta que tengas X instalado...
> 
> Me imagino que el gran problema debe ser el numero de IP dinámico que te asigna el router ese que si no me equivoco es uno de esos mikrotik del montón por el comportamiento que describís. Podés tomar nota de el número de IP / puerta de enlace / servidor de DNS antes de reiniciar la pc y pasarle esos parámetros a tu Gentoo. En teoría debería funcionar... A lo sumo, puede que rebote la conexión si el mikrotik está configurado para chequear el nombre de host contra el lease del servidor dhcp, pero de nuevo se solucionaría especificando el mismo nombre de host en gentoo que el que tenías en windows o en el livecd.
> 
> Lo de curl debe funcionar sabiendo como hacerlo, lo de especificar un proxy http es para otros casos en donde si hay un proxy y requiere autenticación.
> ...

 

Hola, en realidad mi ip es fijo, es 

```
192.168.1.91
```

 el del router (puerta de enlace) es 

```
192.168.1.254
```

 Cada vez que arranco la pc (o reinicio) necesito ejecutar el navegador para loguearme. Si ejecuto el messenger.. no se conecta, lo mismo con el correo, el widget del clima o lo que sea que requiera una conección a internet, no funciona hasta loguearme.

El router efectivamente es mikrotik y en la imagen del primer post se puede ver cómo aparece en el IE antes de mostrar mi "home page", y después de logueado me redirige a ella.

Probé ese comando de "curl" y me devolvió un... html? con un error de algo asi como que los datos no son los requeridos (in English). Yo soy maleta.. pero quizá puedan decirme cómo puedo guardar a un archivo la salida que hece curl para postearla...

En fin.. cualquier cosa pregunten nomás.. Saludos y gracias

----------

## opotonil

Segun se ve en el codigo que has publicado envia los campos "username", "password", "dst" y "popup" a "http://192.168.1.254/login" mediante "post".

El problema es que antes de ser enviado el campo "password" se lo pasa a la funcion JavaScript "hexMD5" que se encuentra en el fichero "md5.js" que no tengo ni idea de lo que hace, aunque por el nombre tiene pinta de combertir el password a MD5 y despues a hexadecimal... pero esto son especulaciones.

Salu2.

--- EDITADO ---

Pon en un navegador "http://192.168.1.254/md5.js" con esto te deveria de aparecer en pantalla el codigo, copialo a un fichero en tu PC con el nombre "md5.js". Ahora en la misma ruta donde hayas creado el fichero "md5.js" crea otro fichero "prueba.html" con el siguiente contenido:

```

<html>

   <head>

      <script type="text/javascript" src="md5.js"></script>

         <script type="text/javascript">

         var password = "ESCRIBE AQUI TU PASSWORD";

         alert(hexMD5('\012' + password + '\166\035\373\343\246\214\167\124\040\147\060\327\232\100\321\347'));

      </script>

   </head>

   <body>

   </body>

</html>

```

Asignando a la variable "password" el valor de tu password, por ejemplo: var password = "1234567890";

Abre con el explorador el fichero que has creado, en el ejemplo "prueba.html", te deberia de aparecer un "alert" de JavaScript copia lo que ponga.

Ahora vamos a intentarlo otra vez con Curl:

```

curl -F "username=usuario;password=lo_que_copiaste_del_alert;dst=;popup=true" http://192.168.1.254/login 

```

Y a ver si hay suerte...

PD: Puede que tengas que hacerte pasar por otro navegador con la opcion "-A" de curl, pero bueno por ahora proeba a ver que te dice con lo anterior (esperemos que no haya problemas con la codificacion de caracteres cliente<->servidor).

----------

## Inodoro_Pereyra

Es lo bueno de este foro... Hasta de cocina se puede preguntar que siempre hay alguien que conoce al respecto.  :Very Happy: 

Salud!

----------

## afkael

uff!!.. bueno, lo probé y me devueve un html (más bien un texto con etiquetas html)... los pasos van tal y cómo optonil lo supone y en cuanto a los intentos con curl la primera vez me devolvio un texto mucho más extenso que las pruebas que hice porteriormente.. Pero noté que hay algo raro en la configuración de la red, por momentos, al hacer ipconfig, me aparece de esta forma:

```

eth0      Link encap:Ethernet  HWaddr 00:50:BA:8F:61:7A

          inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0

          inet6 addr: fe80::50:ba8f:617a/10 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:1498792 errors:0 dropped:0 overruns:0 frame:0

          TX packets:1284980 errors:0 dropped:0 overruns:0 carrier:0

          collisions:1984 txqueuelen:100

          RX bytes:485691215 (463.1 Mb)  TX bytes:123951388 (118.2 Mb)

          Interrupt:11 Base address:0xe800

```

y otras veces no me muetra la segunda linea (con mi ip y esas cosas) siendo que no he modificado nada de él ni he cambiado de sesión, nada... también al hacer

```
ping -c 3 192.168.1.254
```

hace los intentos como debiera ser.. pero al hacer

```
ping -c 3 www.google.com
```

al toque me devuelve un error en el host o la imposibilidad de resolverlo..

Asi que, por el momento, estaré resolviendo este inconveniente (los archivos de configuracion parecen estar bien) y en cuanto esté listo seguiré probando con curl porque creo que es acertado lo que propone opotonil...

Saludos y Gracias

----------

## afkael

hola, revivo este tema ya que veo que está de moda hacerlo   :Very Happy:   y porque me interesa solucionarlo para evitarme la tarea de ejecutar el navegador y loguearme cada vez que arranco la PC...

El último comando que usé es este:

```
curl -F "username=dardo;password=ee0cf5b9ad9df74311815bfa50b648f6;dst=;popup=true" http://192.168.1.254/login
```

Con este resultado:

```
inferno afkael # curl -F "username=dardo;password=ee0cf5b9ad9df74311815bfa50b648f6;dst=;popup=true" http://192.168.1.254/login

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"                                                                

   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">                                                                 

<html>                                                                                                                        

<head>                                                                                                                        

<title>mikrotik hotspot > login</title>                                                                                       

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />                                                         

<meta http-equiv="pragma" content="no-cache" />                                                                               

<meta http-equiv="expires" content="-1" />                                                                                    

<style type="text/css">                                                                                                       

body {color: #737373; font-size: 10px; font-family: verdana;}                                                                 

textarea,input,select {

background-color: #FDFBFB;

border: 1px solid #BBBBBB;

padding: 2px;             

margin: 1px;              

font-size: 14px;          

color: #808080;           

}                         

a, a:link, a:visited, a:active { color: #AAAAAA; text-decoration: none; font-size: 10px; }

a:hover { border-bottom: 1px dotted #c1c1c1; color: #AAAAAA; }                            

img {border: none;}                                                                       

td { font-size: 14px; color: #7A7A7A; }                                                   

</style>                                                                                  

</head>

<body>

        <form name="sendin" action="http://192.168.1.254/login" method="post">

                <input type="hidden" name="username" />                       

                <input type="hidden" name="password" />                       

                <input type="hidden" name="dst" value="" />                   

                <input type="hidden" name="popup" value="true" />                                                                                            

        </form>                                                                                                                                              

                                                                                                                                                             

        <script type="text/javascript" src="/md5.js"></script>                                                                                               

        <script type="text/javascript">                                                                                                                      

        <!--                                                                                                                                                 

            function doLogin() {                                                                                                                             

                document.sendin.username.value = document.login.username.value;                                                                              

                document.sendin.password.value = hexMD5('\173' + document.login.password.value + '\121\366\042\110\230\150\265\227\125\273\346\346\024\032\276\021');                                                                                                                                                     

                document.sendin.submit();                                                                                                                    

                return false;                                                                                                                                

            }                                                                                                                                                

        //-->                                                                                                                                                

        </script>                                                                                                                                            

<div align="center">

<a href="http://192.168.1.254/login?target=lv&amp;dst=">Latviski</a>

</div>                                                              

<table width="100%" style="margin-top: 10%;">

        <tr>                                 

        <td align="center" valign="middle">  

                <div class="notice" style="color: #c1c1c1; font-size: 9px">Please log on to use the mikrotik hotspot service<br /></div><br />

                <table width="240" height="240" style="border: 1px solid #cccccc; padding: 0px;" cellpadding="0" cellspacing="0">             

                        <tr>                                                                                                                  

                                <td align="center" valign="bottom" height="175" colspan="2">                                                  

                                        <form name="login" action="http://192.168.1.254/login" method="post"                                  

                                             onSubmit="return doLogin()" >

                                                <input type="hidden" name="dst" value="" />

                                                <input type="hidden" name="popup" value="true" />

                                                        <table width="100" style="background-color: #ffffff">

                                                                <tr><td align="right">login</td>

                                                                                <td><input style="width: 80px" name="username" type="text" value=""/></td>

                                                                </tr>

                                                                <tr><td align="right">password</td>

                                                                                <td><input style="width: 80px" name="password" type="password"/></td>

                                                                </tr>

                                                                <tr><td>&nbsp;</td>

                                                                                <td><input type="submit" value="OK" /></td>

                                                                </tr>

                                                        </table>

                                        </form>

                                </td>

                        </tr>

                        <tr><td align="center"><a href="http://www.mikrotik.com" target="_blank" style="border: none;"><img src="/img/logobottom.png" alt="mikrotik" /></a></td></tr>

                </table>

        <br /><div style="color: #c1c1c1; font-size: 9px">Powered by mikrotik routeros &copy; 2005 mikrotik</div>

        </td>

        </tr>

</table>

<script type="text/javascript">

<!--

  document.login.username.focus();

//-->

</script>

</body>

</html>
```

y por lo tanto:

```
inferno afkael # ping -c 3 www.google.com

PING www.l.google.com (64.233.161.147) 56(84) bytes of data.

From 192.168.1.254 icmp_seq=1 Dest Unreachable, Bad Code: 9

From 192.168.1.254 icmp_seq=2 Dest Unreachable, Bad Code: 9

From 192.168.1.254 icmp_seq=3 Dest Unreachable, Bad Code: 9

--- www.l.google.com ping statistics ---

3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2019ms
```

ok.. espero puedan ayudarme

----------

## esteban_conde

Eso parece un error DNS posiblemente debas instalar bind en la maquina 192.168.1.254

----------

## afkael

no puedo modificar nada en el servidor/router/loquesea.. no tengo acceso a él, es de mi proovedor a internet. Igual no creo que ese sea el problema ya que al login desde el navegador lo puedo hacer normalmente y sin problemas, sólo que quiero hacer un script que lo haga por mi automáticamente...

----------

## opotonil

 *Quote:*   

> 
> 
> Please log on to use the mikrotik hotspot service
> 
> 

 

Hombre por lo menos te dice que uses su pagina para logarte y no que el user o password son incorrectos... ¿cuando te logas mediante su pagina te manda alguna cookie?

Salu2.

----------

## afkael

la verdad que no se dónde se guardan las cookies, pero en las preferencias de konqueror no sólo que no las encontré sino que también borré todas y al hacer login no me aparecieron nuevas... también desactivé las cookies y al parecer funciona sin problemas... lo que si, cada vez que me logueo konqueror bloquea una ventana emergente..  evité ese bloqueo y esa ventana es esto:

[IMG]http://img340.imageshack.us/img340/3292/mikrotikloginuy6.th.jpg[/IMG]

Espero sea de utilidad.. Saludos

PD: Porque en el foro no se pueden mostrar imagenes?

----------

## Inodoro_Pereyra

No creo que el tema de las cookies sea un problema en la página web de autinticación esa del mikrotik. No puedo probar ya mismo pero apostaría a que no usa cookies.

De todas formas, como no tenía nada mejor que hacer estuve leyendo un poco sobre tu caso y encontré cURL: El arte del HTTP scripting. Un caso práctico.

Definitivamente la solución a tu problema es cURL. Una de las primeras cosas que noté es que le estás pasado los datos del formulario con -F cuando para el método POST se debe usar -d, por ejemplo. Además está lo del password encriptado pero en ese sentido creo que vas por buen camino.

Leelo con detenimiento, creo que se parece mucho a tu caso y explica perfectamente como hacerlo, con cookies y todo  :Very Happy: 

Salud!

----------

## opotonil

 *Quote:*   

> 
> 
> Definitivamente la solución a tu problema es cURL. Una de las primeras cosas que noté es que le estás pasado los datos del formulario con -F cuando para el método POST se debe usar -d, por ejemplo. Además está lo del password encriptado pero en ese sentido creo que vas por buen camino. 
> 
> 

 

Ups... creo que se me fue, he estado mirando y parece que los dos son para el envio de datos por POST, pero -F es para el envio de ficheros asi que creo que @Inodoro_Pereyra tiene toda la razon, es mas logico usar -d.

Por otro lado nunca recuerdo si en el caso de post lo adecuado es enviar los datos separados con ; como estabas haciendo a con &, viendo los datos que se envian no creo que necesites usar --data-urlencode ya que no hay caracteres especiales.

Lo ultimo que se me ocurre que pueda estar comprobando es el User-Agent, puedes probar a modificarlo con la opcion -A (aqui tienes unos cuantos: http://www.user-agents.org)

Salu2.

PD: si tienes algun snifer seria util que capturaras lo que envias cuando haces el login a traves de la pagina.

----------

## afkael

bueno, cambié:

```
curl -d "username=dardo;password=ee0cf5b9ad9df74311815bfa50b648f6;dst=;popup=true" http://192.168.1.254/login
```

por:

```
curl -d "username=dardo&password=ee0cf5b9ad9df74311815bfa50b648f6&dst=&popup=true" http://192.168.1.254/login  
```

y el resultado fué este...

```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"                     

   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">                      

<html>                                                                             

<head>                                                                             

<title>mikrotik hotspot > login</title>                                            

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />              

<meta http-equiv="pragma" content="no-cache" />                                    

<meta http-equiv="expires" content="-1" />                                         

<style type="text/css">                                                            

body {color: #737373; font-size: 10px; font-family: verdana;}                      

textarea,input,select {

background-color: #FDFBFB;

border: 1px solid #BBBBBB;

padding: 2px;             

margin: 1px;              

font-size: 14px;          

color: #808080;           

}                         

a, a:link, a:visited, a:active { color: #AAAAAA; text-decoration: none; font-size: 10px; }                                                                            

a:hover { border-bottom: 1px dotted #c1c1c1; color: #AAAAAA; }                     

img {border: none;}                                                                

td { font-size: 14px; color: #7A7A7A; }                                            

</style>                                                                           

</head>

<body>

        <form name="sendin" action="http://192.168.1.254/login" method="post">

                <input type="hidden" name="username" />                       

                <input type="hidden" name="password" />                       

                <input type="hidden" name="dst" value="" />                   

                <input type="hidden" name="popup" value="true" />             

        </form>                                                               

        <script type="text/javascript" src="/md5.js"></script>

        <script type="text/javascript">                       

        <!--                                                  

            function doLogin() {                              

                document.sendin.username.value = document.login.username.value;

                document.sendin.password.value = hexMD5('\324' + document.login.password.value + '\067\140\065\345\003\145\335\052\154\005\332\313\075\075\140\101'); 

                document.sendin.submit();                                          

                return false;                                                      

            }                                                                      

        //-->                                                                      

        </script>                                                                  

<div align="center">

<a href="http://192.168.1.254/login?target=lv&amp;dst=">Latviski</a>

</div>                                                              

<table width="100%" style="margin-top: 10%;">

        <tr>                                 

        <td align="center" valign="middle">  

                <div class="notice" style="color: #c1c1c1; font-size: 9px">Please log on to use the mikrotik hotspot service<br /></div><br />                        

                <table width="240" height="240" style="border: 1px solid #cccccc; padding: 0px;" cellpadding="0" cellspacing="0">                                     

                        <tr>                                                       

                                <td align="center" valign="bottom" height="175" colspan="2">                                                                          

                                        <form name="login" action="http://192.168.1.254/login" method="post"                                                          

                                             onSubmit="return doLogin()" >         

                                                <input type="hidden" name="dst" value="" />                                                                           

                                                <input type="hidden" name="popup" value="true" />                                                                     

                                                        <table width="100" style="background-color: #ffffff">                                                         

                                                                <tr><td align="right">login</td>                                                                      

                                                                                <td><input style="width: 80px" name="username" type="text" value="dardo"/></td>

                                                                </tr>

                                                                <tr><td align="right">password</td>

                                                                                <td><input style="width: 80px" name="password" type="password"/></td>

                                                                </tr>

                                                                <tr><td>&nbsp;</td>

                                                                                <td><input type="submit" value="OK" /></td>

                                                                </tr>

                                                        </table>

                                        </form>

                                </td>

                        </tr>

                        <tr><td align="center"><a href="http://www.mikrotik.com" target="_blank" style="border: none;"><img src="/img/logobottom.png" alt="mikrotik" /></a></td></tr>

                </table>

        <br /><div style="color: #c1c1c1; font-size: 9px">Powered by mikrotik routeros &copy; 2005 mikrotik</div>

        <br /><div style="color: #FF8080; font-size: 9px">web browser did not sendchallenge response (try again, enable JavaScript)</div>

        </td>

        </tr>

</table>

<script type="text/javascript">

<!--

  document.login.username.focus();

//-->

</script>

</body>

</html>

```

Supongo que la clave debe pasar por acá:

```
web browser did not sendchallenge response (try again, enable JavaScript)
```

y en esta imagen se ve mejor..

[IMG]http://img78.imageshack.us/img78/9559/mikroticshotwb1.th.jpg[/IMG]

por cierto.. con ksniffer hice una captura, pero no tengo nada de conocimiento de esas aplicaciones y el archivo de la captura es un binario del que rescato esto:

```
POST /login HTTP/1.1

Connection: Keep-Alive

User-Agent: Mozilla/5.0 (compatible; Konqueror/4.1; Linux) KHTML/4.1.3 (like Gecko)

Referer: http://192.168.1.254/login?dst=http%3A%2F%2Fwww.google.com.ar%2F

Pragma: no-cache

Cache-control: no-cache

Accept: text/html, image/jpeg, image/png, text/*, image/*, */*

Accept-Encoding: x-gzip, x-deflate, gzip, deflate

Accept-Charset: utf-8, utf-8;q=0.5, *;q=0.5

Accept-Language: es, en-US, en

Host: 192.168.1.254

Content-Type: application/x-www-form-urlencoded

HTTP/1.1 200 OK

Cache-Control: no-cache

Connection: Keep-Alive

Content-Length: 1304

Content-Type: text/html

Date: Mon, 10 Jan 2000 02:09:34 GMT

Expires: 0

Set-Cookie: loginID=474140393; expires=Thu, 13-Jan-2000 02:09:34 GMT; path=/login

<html>

<head>

<title>mikrotik hotspot > redirect</title>

<meta http-equiv="refresh" content="2; url=http://www.google.com.ar/">

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="expires" content="-1">

<style type="text/css">

<!--

textarea,input,select {

   background-color: #FDFBFB;

   border: 1px #BBBBBB solid;

   padding: 2px;

   margin: 1px;

   font-size: 14px;

   color: #808080;

}

body{ color: #737373; font-size: 12px; font-family: verdana; }

a, a:link, a:visited, a:active { color: #AAAAAA; text-decoration: none; font-size: 12px; }

a:hover { border-bottom: 1px dotted #c1c1c1; color: #AAAAAA; }

img {border: none;}

td { font-size: 12px; color: #7A7A7A; }

-->

</style>

<script language="JavaScript">

<!--

    function startClock() {

        

        open('http://192.168.1.254/status', 'hotspot_status', 'toolbar=0,location=0,directories=0,status=0,menubars=0,resizable=1,width=290,height=200');

   

   location.href = 'http://www.google.com.ar/';

    }

//-->

</script>

</head>

<body onLoad="startClock()">

<table width="100%" height="100%">

<tr>

   <td align="center" valign="middle">

   You are logged in

   <br><br>

   If nothing happens, click <a href="http://www.google.com.ar/">here</a></td>

</tr>

</table>

</body>

</html>

GET / HTTP/1.1

Connection: Keep-Alive

User-Agent: Mozilla/5.0 (compatible; Konqueror/4.1; Linux) KHTML/4.1.3 (like Gecko)

Referer: http://192.168.1.254/login

Accept: text/html, image/jpeg, image/png, text/*, image/*, */*

Accept-Encoding: x-gzip, x-deflate, gzip, deflate

Accept-Charset: utf-8, utf-8;q=0.5, *;q=0.5

Accept-Language: es, en-US, en

Host: www.google.com.ar

Cookie: PREF=ID=c83a974c26a7202b:TM=1229045252:LM=1229045252:S=QJ2Tv7eoRdUh6qAc; NID=17=GgKRIZUJQMTMNh9e508REO6G2L-2gSKSFoK37i8w8pn5mluibym8tK6PYwwIoNyEyVevMeFIBfX0_WF_gjKxdExzsPNnHqCUqmZUpM3PQgWRHdvp-3D_nL5zRTe6pRoZ
```

----------

## opotonil

Prueba con lo siguente poniendo "popup=false" tal y como esta y "popup=true" no vaya a ser:

```

curl -A "Mozilla/5.0 (compatible; Konqueror/4.1; Linux) KHTML/4.1.3 (like Gecko)" -d "username=dardo&password=ee0cf5b9ad9df74311815bfa50b648f6&dst=&popup=false" http://192.168.1.254/login

```

La unica forma, que se me ocurre, para comprobar si el navegador admite o no JavaScript, en el codigo servidor, es mediante la cadena User-Agent asi que modificando esta cadena para que envie la misma que tu navegador, Konqueror por lo que veo, deberia colar...

A ver si con esto evitamos el mensaje:

 *Quote:*   

> 
> 
> web browser did not sendchallenge response (try again, enable JavaScript)
> 
> 

 

Por otro lado si que hay una cookie por medio:

```

Set-Cookie: loginID=474140393; expires=Thu, 13-Jan-2000 02:09:34 GMT; path=/login 

```

pero lo que hace es caducarla... asi que por ahora pasaremos de ella.

Salu2.

PD: ¿en que momento iniciaste el snifer? No es que sea yo muy ducho en el tema pero me estraña no ver los datos que se envian en el formulario (parece ser la respuesta a tu peticion pero sin la peticion en si).

--- EDITADO ---

Putada, por lo que veo parte del password es "aleatorio" has puesto 3 veces el codigo del formlario y las tres veces ha sido distinto lo que concatena a tu password:

Primera vez:

```

document.sendin.password.value = hexMD5('\012' + document.login.password.value + '\166\035\373\343\246\214\167\124\040\147\060\327\232\100\321\347');

```

Segunda vez:

```

document.sendin.password.value = hexMD5('\173' + document.login.password.value + '\121\366\042\110\230\150\265\227\125\273\346\346\024\032\276\021');

```

Tercera vez:

```

 document.sendin.password.value = hexMD5('\324' + document.login.password.value + '\067\140\065\345\003\145\335\052\154\005\332\313\075\075\140\101');

```

Seguramente tenga que ver con el valor de la cookie que caduca segun te logas... pero no estoy seguro, lo que esta claro es que complica mucho las cosas.

----------

## afkael

eeeeehhhps... error mio lo del ksniffer, lo que pasó es que el archivo de la captura es binario, y cuando lo abro con un editor me muestra un montón de caracteres raros.

Hice una captura donde estába la información que me pedís, pero como habia capturado muchos paquetes el archivo era mooooy grande, entonces hice una captura de 4 segundos mientras me logueaba... lo que debe haber pasado es que no tuve tiempo y el login quedó fuera de esos 4 segundos   :Embarassed:   :Embarassed:   :Embarassed:   :Very Happy:   :Very Happy:   :Very Happy: 

Voy a hacer una nueva captura que incluya el logueo, pero habia un pedazo de código parecido al envio del curl que proponés... 

Saludos

PD: por cierto hay alguna forma sencilla y clara de "ver" el archivo de captura que hizo el ksniffer?

----------

## Inodoro_Pereyra

 *afkael wrote:*   

> PD: por cierto hay alguna forma sencilla y clara de "ver" el archivo de captura que hizo el ksniffer?

 

No conozco ksniffer pero debería tener al menos alguna forma básica de filtrar contenidos. Lo que te interesa capturar va sobre el protocolo TCP al puerto de destino 80 el resto se puede obviar todo así que si tenés forma de configurar eso ya te evitás un montón de problemas.

En caso de que no, probá con wireshark que ese si tiene todas esas posibilidades y mas, o con ettercap que te permite ver toda la sesión http en texto plano y en tiempo real.

Salud!

----------

## afkael

haber si esto sirve de algo...

```
No.     Time        Source                Destination           Protocol Info

     12 1.993323    192.168.1.91          192.168.1.254         HTTP     POST /login HTTP/1.1  (application/x-www-form-urlencoded)

Frame 12 (700 bytes on wire, 700 bytes captured)

    Arrival Time: Dec 16, 2008 02:44:57.698172000

    [Time delta from previous captured frame: 0.000108000 seconds]

    [Time delta from previous displayed frame: 0.000108000 seconds]

    [Time since reference or first frame: 1.993323000 seconds]

    Frame Number: 12

    Frame Length: 700 bytes

    Capture Length: 700 bytes

    [Frame is marked: False]

    [Protocols in frame: eth:ip:tcp:http:data-text-lines]

    [Coloring Rule Name: Checksum Errors]

    [Coloring Rule String: cdp.checksum_bad==1 || edp.checksum_bad==1 || ip.checksum_bad==1 || tcp.checksum_bad==1 || udp.checksum_bad==1]

Ethernet II, Src: Micro-St_b0:cf:eb (00:1d:92:b0:cf:eb), Dst: Ubiquiti_63:82:7b (00:15:6d:63:82:7b)

    Destination: Ubiquiti_63:82:7b (00:15:6d:63:82:7b)

        Address: Ubiquiti_63:82:7b (00:15:6d:63:82:7b)

        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)

        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)

    Source: Micro-St_b0:cf:eb (00:1d:92:b0:cf:eb)

        Address: Micro-St_b0:cf:eb (00:1d:92:b0:cf:eb)

        .... ...0 .... .... .... .... = IG bit: Individual address (unicast)

        .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)

    Type: IP (0x0800)

Internet Protocol, Src: 192.168.1.91 (192.168.1.91), Dst: 192.168.1.254 (192.168.1.254)

    Version: 4

    Header length: 20 bytes

    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)

        0000 00.. = Differentiated Services Codepoint: Default (0x00)

        .... ..0. = ECN-Capable Transport (ECT): 0

        .... ...0 = ECN-CE: 0

    Total Length: 686

    Identification: 0x2771 (10097)

    Flags: 0x04 (Don't Fragment)

        0... = Reserved bit: Not set

        .1.. = Don't fragment: Set

        ..0. = More fragments: Not set

    Fragment offset: 0

    Time to live: 128

    Protocol: TCP (0x06)

    Header checksum: 0x4c2f [correct]

        [Good: True]

        [Bad : False]

    Source: 192.168.1.91 (192.168.1.91)

    Destination: 192.168.1.254 (192.168.1.254)

Transmission Control Protocol, Src Port: rmpp (1121), Dst Port: http (80), Seq: 1, Ack: 1, Len: 646

    Source port: rmpp (1121)

    Destination port: http (80)

    Sequence number: 1    (relative sequence number)

    [Next sequence number: 647    (relative sequence number)]

    Acknowledgement number: 1    (relative ack number)

    Header length: 20 bytes

    Flags: 0x18 (PSH, ACK)

        0... .... = Congestion Window Reduced (CWR): Not set

        .0.. .... = ECN-Echo: Not set

        ..0. .... = Urgent: Not set

        ...1 .... = Acknowledgment: Set

        .... 1... = Push: Set

        .... .0.. = Reset: Not set

        .... ..0. = Syn: Not set

        .... ...0 = Fin: Not set

    Window size: 65535

    Checksum: 0x874a [incorrect, should be 0x7b08 (maybe caused by "TCP checksum offload"?)]

        [Good Checksum: False]

        [Bad Checksum: True]

Hypertext Transfer Protocol

    POST /login HTTP/1.1\r\n

        Request Method: POST

        Request URI: /login

        Request Version: HTTP/1.1

    Host: 192.168.1.254\r\n

    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; es-AR; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4\r\n

    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n

    Accept-Language: es-ar,es;q=0.8,en-us;q=0.5,en;q=0.3\r\n

    Accept-Encoding: gzip,deflate\r\n

    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n

    Keep-Alive: 300\r\n

    Connection: keep-alive\r\n

    Referer: http://192.168.1.254/login?dst=http%3A%2F%2Fwww.google.com.ar%2F\r\n

    Content-Type: application/x-www-form-urlencoded\r\n

    Content-Length: 105\r\n

        [Content length: 105]

    \r\n

Line-based text data: application/x-www-form-urlencoded

    username=dardo&password=2c25f9e178841952982975db28ba43b2&dst=http%3A%2F%2Fwww.google.com.ar%2F&popup=true
```

tuve que hacer la captura en windows ya que instalé wireshark en gentoo pero no supe ejecutarlo, espero sea lo necesario para resolver el asunto. Saludos

----------

## opotonil

Como pongo en el ultimo "editado" el problema es que la clave es semi-aleatoria:

En la peticion que haces tu envias:

 *Quote:*   

> 
> 
> password=ee0cf5b9ad9df74311815bfa50b648f6
> 
> 

 

En la ultima captura del snifer que pones envia:

 *Quote:*   

> 
> 
> password=2c25f9e178841952982975db28ba43b2
> 
> 

 

y si haces otra captura de otra peticion enviara algo distinto... Habria que hacer una peticion de la pagina normal conseguir extraer la parte del password y sacar el MD5 (suponiendo que sea lo unico que hace el JavaScript) y despues hacer lo que intentabamos.

Salu2.

----------

## afkael

 *opotonil wrote:*   

> Como pongo en el ultimo "editado" el problema es que la clave es semi-aleatoria:
> 
> En la peticion que haces tu envias:
> 
>  *Quote:*   
> ...

 

Eso lo he entendido, cada que hago una petición el pasword genera una clave distinta..

 *Quote:*   

> Habria que hacer una peticion de la pagina normal conseguir extraer la parte del password y sacar el MD5 (suponiendo que sea lo unico que hace el JavaScript) y despues hacer lo que intentabamos.

 

Esto ya no...Me podés explicar más detalladamente a que te refieres? La captura con wireshark la hice al momento de loguearme desde la página normal (windows/firefox). La hice en windows porque no se cómo ejecutar wireshark en gentoo (agradeceria si alguien me explica también eso). Saludos

----------

## opotonil

Con bash me defiendo a duras penas, pero lo que se me ocurre es algo asi (si tienes algun fichero llamado "temp" en el directorio del script ¡¡SERA SOBRESCRITO!!):

```

#!/bin/bash

curl -A "Mozilla/5.0 (compatible; Konqueror/4.1; Linux) KHTML/4.1.3 (like Gecko)" -o temp http://192.168.1.254/login > /dev/null 2>&1

cat temp | grep "document.sendin.password.value" > temp

PRE=$(cat temp | cut -d"'" -f2)

POS=$(cat temp | cut -d"'" -f4)

RES=$(echo ${PRE}"TUPASSWORD"${POS} | md5sum | cut -f1 -d" ")

curl -A "Mozilla/5.0 (compatible; Konqueror/4.1; Linux) KHTML/4.1.3 (like Gecko)" -d "username=dardo&password="${RES}"&dst=&popup=false" http://192.168.1.254/login

```

Por supuesto sustituye TUPASSWORD, manteniendo las comillas por si acaso, por tu password y a ver que cuenta... aunque seguramente el JavaScript haga algo mas que sacar el MD5, lo de "\xxx" tiene toda la pinta de ser convertido, antes de sacar el MD5, a caracter o algo asi...

Salu2.

PD: la pagina a la que se envian los datos del formulario es "http://192.168.1.254/login" y estoy suponiendo que es la misma que la que pones en el navegador para que te salga el formulario en si, donde rellenas los datos, de no ser asi modifica la URL de la primera peticion de curl o mejor aun pon directamente "curl -A "Mozilla/5.0 (compatible; Konqueror/4.1; Linux) KHTML/4.1.3 (like Gecko)" URL" en la consola, sustituyendo URL, hasta que salga:

 *Quote:*   

> 
> 
> ...
> 
> document.sendin.password.value = hexMD5('\xxx' + document.login.password.value + '\xxx\xxx\xxx\xxx\xxx\xxx\xxx\xxx\xxx\xxx\xxx\xxx\xxx\xxx\xxx\xxx'); 
> ...

 

PD2: la URL de la ultima peticion de curl va en la misma linea, que aqui no entra y queda en 2 lineas.

----------

## afkael

bueno.. en principio comento que la página del formulario si es http://192.168.1.254/login y lo confirmo con el comando que propone @opotonil:

inferno afkael # curl -A "Mozilla/5.0 (compatible; Konqueror/4.1; Linux) KHTML/4.1.3 (like Gecko)" http://192.168.1.254/login

```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"                                                               

   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">                                                                

<html>                                                                                                                       

<head>                                                                                                                       

<title>mikrotik hotspot > login</title>                                                                                      

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />                                                        

<meta http-equiv="pragma" content="no-cache" />                                                                              

<meta http-equiv="expires" content="-1" />                                                                                   

<style type="text/css">                                                                                                                                      

body {color: #737373; font-size: 10px; font-family: verdana;}                                                                                                

                                                                                                                                                             

textarea,input,select {                                                                                                                                      

background-color: #FDFBFB;                                                                                                                                   

border: 1px solid #BBBBBB;                                                                                                                                   

padding: 2px;                                                                                                                                                

margin: 1px;                                                                                                                                                 

font-size: 14px;                                                                                                                                             

color: #808080;                                                                                                                                              

}                                                                                                                                                            

a, a:link, a:visited, a:active { color: #AAAAAA; text-decoration: none; font-size: 10px; }

a:hover { border-bottom: 1px dotted #c1c1c1; color: #AAAAAA; }                            

img {border: none;}                                                                       

td { font-size: 14px; color: #7A7A7A; }                                                   

</style>                                                                                  

</head>

<body>

        <form name="sendin" action="http://192.168.1.254/login" method="post">

                <input type="hidden" name="username" />                       

                <input type="hidden" name="password" />                       

                <input type="hidden" name="dst" value="" />                   

                <input type="hidden" name="popup" value="true" />             

        </form>                                                               

        <script type="text/javascript" src="/md5.js"></script>

        <script type="text/javascript">                       

        <!--                                                  

            function doLogin() {                              

                document.sendin.username.value = document.login.username.value;

                document.sendin.password.value = hexMD5('\177' + document.login.password.value + '\260\056\143\233\156\300\113\103\250\004\052\156\323\110\077\200');                                                                                                                                                     

                document.sendin.submit();                                                                                                                    

                return false;                                                                                                                                

            }                                                                                                                                                

        //-->                                                                                                                                                

        </script>                                                                                                                                            

<div align="center">

<a href="http://192.168.1.254/login?target=lv&amp;dst=">Latviski</a>

</div>                                                              

<table width="100%" style="margin-top: 10%;">

        <tr>

        <td align="center" valign="middle">

                <div class="notice" style="color: #c1c1c1; font-size: 9px">Please log on to use the mikrotik hotspot service<br /></div><br />

                <table width="240" height="240" style="border: 1px solid #cccccc; padding: 0px;" cellpadding="0" cellspacing="0">

                        <tr>

                                <td align="center" valign="bottom" height="175" colspan="2">

                                        <form name="login" action="http://192.168.1.254/login" method="post"

                                             onSubmit="return doLogin()" >

                                                <input type="hidden" name="dst" value="" />

                                                <input type="hidden" name="popup" value="true" />

                                                        <table width="100" style="background-color: #ffffff">

                                                                <tr><td align="right">login</td>

                                                                                <td><input style="width: 80px" name="username" type="text" value=""/></td>

                                                                </tr>

                                                                <tr><td align="right">password</td>

                                                                                <td><input style="width: 80px" name="password" type="password"/></td>

                                                                </tr>

                                                                <tr><td>&nbsp;</td>

                                                                                <td><input type="submit" value="OK" /></td>

                                                                </tr>

                                                        </table>

                                        </form>

                                </td>

                        </tr>

                        <tr><td align="center"><a href="http://www.mikrotik.com" target="_blank" style="border: none;"><img src="/img/logobottom.png" alt="mikrotik" /></a></td></tr>

                </table>

        <br /><div style="color: #c1c1c1; font-size: 9px">Powered by mikrotik routeros &copy; 2005 mikrotik</div>

        </td>

        </tr>

</table>

<script type="text/javascript">

<!--

  document.login.username.focus();

//-->

</script>

</body>

</html>
```

lo que sucede es que el formulario aparece siempre que ejecuto el navegador y la conección no estás activada ya.. osea, si entento conectarme a internet y la conección no está activa aun me redirecciona a http://192.168.1.254/login.

Por otro lado, el script:

```
   #!/bin/bash 

 

 curl -A "Mozilla/5.0 (compatible; Konqueror/4.1; Linux) KHTML/4.1.3 (like Gecko)" -o temp http://192.168.1.254/login > /dev/null 2>&1 

 cat temp | grep "document.sendin.password.value" > temp 

 PRE=$(cat temp | cut -d"'" -f2) 

 POS=$(cat temp | cut -d"'" -f4) 

 RES=$(echo ${PRE}"2121"${POS} | md5sum | cut -f1 -d" ") 

 curl -A "Mozilla/5.0 (compatible; Konqueror/4.1; Linux) KHTML/4.1.3 (like Gecko)" -d "username=dardo&password="${RES}"&dst=&popup=false" http://192.168.1.254/login
```

me devuelve esto:

```
<html>                                                        

<head>                                                        

<title>mikrotik hotspot > login</title>                       

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<meta http-equiv="pragma" content="no-cache" />                      

<meta http-equiv="expires" content="-1" />                           

<style type="text/css">                                              

body {color: #737373; font-size: 10px; font-family: verdana;}        

textarea,input,select {

background-color: #FDFBFB;

border: 1px solid #BBBBBB;

padding: 2px;             

margin: 1px;              

font-size: 14px;          

color: #808080;           

}                         

a, a:link, a:visited, a:active { color: #AAAAAA; text-decoration: none; font-size: 10px; }                                                                      

a:hover { border-bottom: 1px dotted #c1c1c1; color: #AAAAAA; }                  

img {border: none;}                                                             

td { font-size: 14px; color: #7A7A7A; }                                         

</style>                                                                        

</head>

<body>

        <form name="sendin" action="http://192.168.1.254/login" method="post">

                <input type="hidden" name="username" />                       

                <input type="hidden" name="password" />                       

                <input type="hidden" name="dst" value="" />                   

                <input type="hidden" name="popup" value="true" />             

        </form>                                                               

        <script type="text/javascript" src="/md5.js"></script>

        <script type="text/javascript">                       

        <!--                                                  

            function doLogin() {                              

                document.sendin.username.value = document.login.username.value;

                document.sendin.password.value = hexMD5('\316' + document.login.password.value + '\126\316\056\226\011\024\010\173\267\051\106\117\031\051\141\024');                                                                           

                document.sendin.submit();                                       

                return false;                                                   

            }                                                                   

        //-->                                                                   

        </script>                                                               

<div align="center">

<a href="http://192.168.1.254/login?target=lv&amp;dst=">Latviski</a>

</div>                                                              

<table width="100%" style="margin-top: 10%;">

        <tr>                                 

        <td align="center" valign="middle">  

                <div class="notice" style="color: #c1c1c1; font-size: 9px">Please log on to use the mikrotik hotspot service<br /></div><br />                  

                <table width="240" height="240" style="border: 1px solid #cccccc; padding: 0px;" cellpadding="0" cellspacing="0">                               

                        <tr>                                                    

                                <td align="center" valign="bottom" height="175" colspan="2">                                                                    

                                        <form name="login" action="http://192.168.1.254/login" method="post"                                                    

                                             onSubmit="return doLogin()" >      

                                                <input type="hidden" name="dst" value="" />                                                                     

                                                <input type="hidden" name="popup" value="true" />                                                               

                                                        <table width="100" style="background-color: #ffffff">                                                   

                                                                <tr><td align="right">login</td>                                                                

                                                                               <td><input style="width: 80px" name="username" type="text" value="dardo"/></td>  

                                                                </tr>           

                                                                <tr><td align="right">password</td>                                                             

                                                                               <td><input style="width: 80px" name="password" type="password"/></td>            

                                                                </tr>           

                                                                <tr><td>&nbsp;</td>                                                                             

                                                                               <td><input type="submit" value="OK" /></td>                                      

                                                                </tr>           

                                                        </table>                

                                        </form>                                 

                                </td>                                           

                        </tr>

                        <tr><td align="center"><a href="http://www.mikrotik.com" target="_blank" style="border: none;"><img src="/img/logobottom.png" alt="mikrotik" /></a></td></tr>

                </table>

        <br /><div style="color: #c1c1c1; font-size: 9px">Powered by mikrotik routeros &copy; 2005 mikrotik</div>

        <br /><div style="color: #FF8080; font-size: 9px">invalid username or password</div>

        </td>

        </tr>

</table>

<script type="text/javascript">

<!--

  document.login.username.focus();

//-->

</script>

</body>

</html>
```

Por ahi la solucion se pueda hacer mas sencilla, en windows no necesito cargar los datos en el formulario.. con solo ejecutar firefox puedo brevemente ver c´omo el formulario se autocompleta, envia y redirecciona a la pagina que solicite originalmente, supongo que es un autocompletado de FF. Si konqueror funcionara asi podria hacer un script que lo ejecute al inicio y lo cierre enseguida, aunque con kwallet quiz´a se complique. Saludos

----------

## opotonil

No se porque me habia hecho a la idea de que querias hacerlo sin usar Konqueror, osea crear un script para meter en el inicio despues del servicio "net" de manera que si otro servicio necesitara internet, por ejemplo "ntp", lo tubiera disponible.

Pero si te vele con abrir una pagina con Konqueror en la que ya aparezcan los datos y darle tu a "enviar" se puede simplificar la cosa haciendo algo similar a uno de los post anteriores.

Vete a la pagina de login y copia el codigo fuente de la misma en un archivo de tu PC "login.html" por ejemplo, ahora editalo poniendo en el "value" del campo "username" tu nombre de usuario de manera que quede asi:

```

<input style="width: 80px" name="username" type="text" value="dardo"/>

```

y lo mismo con el campo password, en este caso no tiene el atributo "value" asi que se lo añades:

```

<input style="width: 80px" name="password" type="password" value="TU_PASSWORD"/>

```

ahora pones en el navegador "http://192.168.1.254/md5.js" y te copias el codigo a un fichero que se llame "md5.js" y lo guardas en la misma carpeta que "login.html" (ya hicimos algo parecido)

Ahora si abres con Konqueror el fichero "login.html" te deberian de aparecer los campos rellenos y si le das a "ok" con un poco de suerte estarias logueado.

Salu2.

PD: para hacerlo mas comodo puedes establecer la pagina local "login.html" como pagina de inicio de Konqueror.

----------

