这个脚本写起来难度并不是很大,博主还是一步步的分析下,这样思路会比较清晰,下次遇到类似系统脚本写起来也更快速。好了,一起来分析分析。
首先看下小米路由器的登录界面
可以看到只需要输入密码即可登录,博主这里为了演示,设置了简单的登录密码12345678,使用firebug记录登录的请求。当然,这里也可以使用Burp拦截请求,只不过有点大材小用了,来,我们尝试登录一下,看下做了哪些请求,使用正确的密码进行登录,post到服务端的数据如图所示
从图上很明显的可以看到,post了4个参数到这个地址:http://192.168.65.1/cgi-bin/luci/api/xqsystem/login 进行登录操作。
参数 username 的值为admin,这个很明显就是一个内置的用户名,也就是默认的用户名,所以页面只需要输入密码就可以正常登录。
参数 password 一眼看上去应该是个MD5加密后的密文
参数 logtype 的值为2,这个应该也是系统默认内置的一个登录类型
参数 nonce 看起来应该是 mac地址加时间戳加随机数的组合
登录成功之后的响应如图
上面对参数含义的推测不一定准确,为了了解真正的含义,博主决定去代码里面一探究竟,查看页面源代码,找到了处理登录的方法
function loginHandle ( e ) {
e.preventDefault();
var formObj = document.rtloginform;
var pwd = $( '#password' ).val();
if ( pwd == '') {
return;
}
var nonce = Encrypt.init();
var oldPwd = Encrypt.oldPwd( pwd );
var param = {
username: 'admin',
password: oldPwd,
logtype: 2,
nonce: nonce
};
$.pub('loading:start');
var url = '/cgi-bin/luci/api/xqsystem/login';
$.post( url, param, function( rsp ) {
$.pub('loading:stop');
var rsp = $.parseJSON( rsp );
if ( rsp.code == 0 ) {