js逆向学习日志:wilf-web认证&协议登录

我们学校每次使用校园公共wilf都需要进行web认证。今天来破解他的登录认证加密参数。

第一部分:js逆向

首先我连接上just后浏览器自动打开了认证页面

我们进行抓包以后,发现我们登录时,他会发送一个post协议的包。对登录密码(password)进行了参数加密。

来对password进行搜索,发现了非常可疑的地方,不出意外是BASE64加密,我们下断点,来进行调试

下断点调试后,发现果然不出所料,这个地方就是对登录密码进行加密的js代码:

我们把加密函数放到console中看一看,发现是加密后的密码无疑了:



我们来进行js代码扣取,扣下我们需要的js加密代码:
我们发现,这一整个base64.js文件都是关于base64加密的部分,我们把它全部复制下来

放到js调试工具里面看看运行结果:
运行成功,成功生成了我们需要的加密参数

第二部分:登录代码

需要导入的包

import requests
import execjs

js读取

def get_js():#js读取
    f = open("江科大wilf-web认证js逆向.js", 'r', encoding='utf-8') # 打开JS文件
    line = f.readline()
    htmlstr = ''
    while line:
        htmlstr = htmlstr+line
        line = f.readline()
    return htmlstr

js运行

def get_js_data(data):#js运行
    jsstr = get_js()
    ctx = execjs.compile(jsstr) #加载JS文件
    return (ctx.call('base64encode',data))#调用js方法  第一个参数是JS的方法名,后面的data和key是js方法的参数

登录函数

def login():
    url="http://172.18.254.14/index.php/index/login"
    headers={
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3823.400 QQBrowser/10.7.4307.400"
    }
    Data={
        "username": "学号",
        "domain": "student",
        "password": get_js_data("密码"),
        "enablemacauth": "1",
    }

    resp=requests.post(url=url,headers=headers,data=Data)
    print(resp.text)
    if  "logout_ip" in resp.text:
        print("无线网认证登录成功")

我们看运行,随便打开一个网页看看能不能上网:

我们可以看到,已经成功的用代码完成了wilf的web认证,可以上网了!

写完了,点个赞吧!!!

你可能感兴趣的:(js逆向学习日志:wilf-web认证&协议登录)