自动登录TP-LINK路由器Web控制页面的脚本

想要做的事情是写一个脚本自动登录TP-LINK路由器的Web控制页面,原本是一件很简单的事情,但一时没想明白就会觉得模糊不清。

我的路由器型号是TL-WR742N,连接后,在浏览器中输入默认管理页面的地址http://192.168.1.1 ,按下回车,就可以看到如下图所示的登录页面:

在火狐浏览器中按Ctrl+Shift+Q打开流量监控面板,然后输入密码,按下回车,会发现发送的http请求中即无GET参数,又无POST参数,那么,密码藏在哪里了?
调试html,可以看到,确认按钮是这么写的:

<label id="loginBtn" class="loginBtn" onclick="PCSubWin()">确认</label>

按下确认按钮后,会执行函数PCSubWin,跟踪这个函数,看到它的内容是:

function PCSubWin()
{
    if(CheckPswLength() == true )
    {
        var password = $("pcPassword").value; 
        var auth = "Basic "+Base64Encoding("admin:"+password);
        document.cookie = "Authorization="+escape(auth)+";path=/";
        location.reload();
    }
}

首先调用检查密码长度的函数CheckPswLength,若返回值为true,即密码长度没有问题,则读取$(“pcPassword”)中的值,按Ctrl+F查找“pcPassword”,得到:

<input class="text" id="pcPassword" name="pcPassword" type="password" maxlength="15" oninput="CheckPswLength()" onpropertychange="CheckPswLength()" onkeyup="CheckPswLength()" autocomplete="on">

也就是读取输入的密码字符串,之后用函数Base64Encoding对其进行加密,然后将加密后的字符串设置为cookie,以此作为验证条件。

我们在写自动登录脚本时只需要添加这样的cookie就可以了。如果用Python来写自动登录脚本则大概是这样的:

import requests
url = 'http://192.168.1.1/'
cookies = {'Authorization':'Basic YWRtaW46MTlzNDU2Nzg='}
r = requests.get(url, cookies=cookies)
print r.text

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

19 + 11 =