我正在对 wifi 强制门户开发进行一些调查。
我想捕捉无线SPrXML 标签来自福恩身份验证强制门户(我的邻居有该活动,我也有一个漫游帐户)。
尝试在 iPhone 甚至 Mac 中进行身份验证并不能解决问题,因为设备会检测强制门户/WIPr 标签,并在没有任何控件的情况下打开专用窗口/迷你浏览器;尝试在 Linux/*BSD 上打开页面可能无法工作,因为浏览器用户代理/或行为不会被识别为 iPhone/Apple。
嗅探 iPhone 交易也并不能解决问题,因为强制门户的 Web 登录页面是通过 https/TLS 处理的(例如,它在线路上进行了加密)。
我也在sysdig
Linux 中尝试过,显然再次遇到了加密传输的问题。
wget
也没有得到令人满意的结果。
该怎么办?
答案1
我最终lynx
在 FreeBSD 系统中使用;最初使用的-dump
选项允许查看重定向,但只能看到输出而不是内容;然后发现了该-source
选项,该选项显示源/HTML 并且不尝试渲染它。
我还使用该选项-useragent
假装我是一部进行 WISPr 发现的 iPhone,并且还尝试获取 iPhone 试图发现的页面之一如果它正在处理一个强制门户(http://www.apple.com/library/test/sucess.html)。
我还必须处理 FON 强制门户是自签名的(?)这一事实,或者我的 FreeBSD 不知道底层的 SSL 根证书。 (我并没有浪费太多时间来追踪这一点);我只需将 lynx 配置为接受自签名证书(稍后会写问题并在此处提供链接)。
所以我使用的实际命令是:
lynx -useragent=CaptiveNetworkSupport -dump http://www.apple.com/library/test/sucess.html
然而,虽然第一个很有用,但让我更感兴趣的是:
lynx -useragent=CaptiveNetworkSupport -source http://www.apple.com/library/test/sucess.html
使用后一个命令行,我可以通过嵌入的 WISPr 标签恢复 HTML 源代码。
从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
取自捕获的登录页面:
<!-- 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>