Estoy investigando sobre el desarrollo de portales cautivos wifi.
Me gustaría capturar las etiquetas WiSPr XML de un portal cautivo de autenticación de FON (mis vecinos lo tienen activo, yo también tengo una cuenta de roaming para eso).
Intentar autenticarse en un iPhone o incluso en una Mac no es suficiente, ya que el equipo detecta las etiquetas cautivas del portal/WIPr y abre una ventana/mininavegador dedicado sin ningún control; tratar de abrir la página en Linux/*BSD podría no funcionar ya que el agente de usuario del navegador o el comportamiento no se reconocerá como iPhone/Apple.
Olfatear la transacción del iPhone tampoco es suficiente, ya que la página de inicio de sesión web del portal cautivo se maneja en https/TLS (por ejemplo, está cifrada en el cable).
También probé sysdig
en un Linux, y obviamente golpeó de nuevo la cabeza en las transmisiones encriptadas.
wget
tampoco está obteniendo resultados satisfactorios.
¿Qué hacer?
Respuesta aceptada:
Terminé usando lynx
en un sistema FreeBSD; inicialmente usó el -dump
opción, que permitía ver las redirecciones, pero solo la salida y no el contenido; luego descubrió el -source
opción, que muestra la fuente/HTML y no intenta representarlo.
También usé la opción -useragent
para fingir que era un iPhone haciendo un descubrimiento WISPr, y también traté de obtener una de las páginas que el iPhone intenta obtener para descubrir si se trata de un portal cautivo (http://www.apple.com/library/test/sucess.html).
También tuve que lidiar con el hecho de que el portal cautivo de FON está autofirmado (?), o mi FreeBSD no conoce el certificado raíz SSL subyacente. (No perdí mucho tiempo rastreando eso); Solo tuve que configurar lynx para aceptar certificados autofirmados (escribiré la pregunta más adelante y tenía un enlace aquí).
Entonces, los comandos reales que usé fueron:
lynx -useragent=CaptiveNetworkSupport -dump http://www.apple.com/library/test/sucess.html
y sin embargo, si bien el primero tiene su utilidad, el que más me interesó fue:
lynx -useragent=CaptiveNetworkSupport -source http://www.apple.com/library/test/sucess.html
Usando la última línea de comando, me devolvió la fuente HTML en todo su esplendor con las etiquetas WISPr incrustadas.
De man lynx
-dump dumps the formatted output of the default document or those specified on the command line to standard output. Unlike interactive mode, all documents are processed. This can be used in the following way: lynx -dump http://www.subir.com/lynx.html Files specified on the command line are formatted as HTML if their names end with one of the standard web suffixes such as ".htm" or ".html". Use the -force_html option to format files whose names do not follow this convention. -source works the same as dump but outputs HTML source instead of formatted text. For example lynx -source . >foo.html generates HTML source listing the files in the current directory. Each file is marked by an HREF relative to the parent directory. Add a trailing slash to make the HREF's relative to the current directory: lynx -source ./ >foo.html
tomado de la página de inicio de sesión capturada:
<!-- WISPr message -->^M
<span class="displayNone"><!--<?xml version="1.0" encoding="UTF-8"?>^M
<WISPAccessGatewayParam xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.acmewisp.com/WISPAccessGatewayParam.xsd">^M
<Redirect>^M
<AccessProcedure>1.0</AccessProcedure>^M
<LoginURL>https://xxxx/captive/noswifi?hmac=xxxx&res=notyet&uamip=xxxx&uamport=80&userurl=&challenge=xxxxxxe&nasid=BC-14-01-XX-XX-XX&mac=00-15-AF-XX-XX-XX</LoginURL>^M
<AbortLoginURL>http://xxxx:80/captive/logoff</AbortLoginURL>^M
<MessageType>100</MessageType>^M
<ResponseCode>0</ResponseCode>^M
<AccessLocation>FonZON:PT</AccessLocation>^M
</Redirect>^M
</WISPAccessGatewayParam>-->^M
</span>