吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1422|回复: 31
收起左侧

[Python 原创] 【web逆向】某省开放大学登陆接口(上)

  [复制链接]
wuye4 发表于 2024-3-20 21:23
本帖最后由 wuye4 于 2024-3-20 21:32 编辑


【web逆向】某省开放大学登陆接口(上)


打开网站

发现cookie无明显变化使用下面代码自动保存cookie

import requests
requests = requests.session()

Snipaste_2024-03-20_20-28-31.png

点击登陆

Snipaste_2024-03-20_20-31-09.png

Snipaste_2024-03-20_20-32-38.png

发现跳转到了这个网址,上方idsLogin来判断是否登陆成功,输入账号密码发现password和execution参数有有加密。

Snipaste_2024-03-20_20-36-47.png

获取加密密码

先搜索encrypt,一个一个找,找到加密地方,发现这段js代码最可疑,仔细一看是RSA加密,打个断点。

Snipaste_2024-03-20_20-47-39.png

发现确实是这段js代码进行加密,进入到security.js扣取整段代码,最终获取加密的密码

Snipaste_2024-03-20_20-53-02.png

#pip install PyExecJS使用该库运行js代码获取password加密后的参数
import execjs
def encryptpwd(password):

    #使用node.js运行js代码
    node = execjs.get()
    # 读取文件并编译
    test = open("password.js", encoding="utf-8").read()
    exe = node.compile(test)

    # password.js中的encryptAES方法,传入参数 password
    encrypt_result = exe.call("encryptAES", password)
    return encrypt_result
//js部分代码,完整代码见附件
function encryptAES(val) {
    var thisPwd = val;
    if (thisPwd.length != 256) {
        window.RSAUtils.setMaxDigits(131);
        var key = window.RSAUtils.getKeyPair("010001", '', "008aed7e057fe8f14c73550b0e6467b023616ddc8fa91846d2613cdb7f7621e3cada4cd5d812d627af6b87727ade4e26d26208b7326815941492b2204c3167ab2d53df1e3a2c9153bdb7c8c2e968df97a5e7e01cc410f92c4c2c2fba529b3ee988ebc1fca99ff5119e036d732c368acf8beba01aa2fdafa45b21e4de4928d0d403");
        var result = window.RSAUtils.encryptedString(key, thisPwd);
    }
    return result
}

获取execution参数

直接搜索execution发现就在该网页的源代码中,直接请求网址使用正则表达式获取

Snipaste_2024-03-20_21-03-55.png

def getloginservices():
    headers = {
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
        'Accept-Language': 'zh-CN,zh;q=0.9',
        'Connection': 'keep-alive',
        'Referer': 'http://xuexi.jsou.cn/',
        'Sec-Fetch-Dest': 'document',
        'Sec-Fetch-Mode': 'navigate',
        'Sec-Fetch-Site': 'cross-site',
        'Sec-Fetch-User': '?1',
        'Upgrade-Insecure-Requests': '1',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36',
        'sec-ch-ua': '"Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"Windows"',
    }

    params = {
        'service': 'http://xuexi.jsou.cn/jxpt-web/auth/idsLogin',
    }

    response = requests.get('https://ids3.jsou.cn/login', params=params, headers=headers)
    execution = re.findall(r' <input type="hidden" name="execution" value="(.*?)" />', response.text)
    return execution

请求登陆

Snipaste_2024-03-20_21-09-17.png

发现重定向了Location这个网址,requests默认会自动跳转,我们需要让allow_redirects=False来停止跳转,拿到参数,最后在请求Location这个网址,实现登陆成功。

def login(username, password, execution):
    headers = {
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
        'Accept-Language': 'zh-CN,zh;q=0.9',
        'Cache-Control': 'max-age=0',
        'Connection': 'keep-alive',
        'Content-Type': 'application/x-www-form-urlencoded',
        'Origin': 'https://ids3.jsou.cn',
        'Referer': 'https://ids3.jsou.cn/login?',
        'Sec-Fetch-Dest': 'document',
        'Sec-Fetch-Mode': 'navigate',
        'Sec-Fetch-Site': 'same-origin',
        'Sec-Fetch-User': '?1',
        'Upgrade-Insecure-Requests': '1',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36',
        'sec-ch-ua': '"Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"Windows"',
    }

    params = {
        'service': 'http://xuexi.jsou.cn/jxpt-web/auth/idsLogin',
    }
    data = {
        'username': username,
        'password': password,
        'submit': '登录',
        'execution': execution,
        'encrypted': 'true',
        '_eventId': 'submit',
        'loginType': '1',
    }

    response = requests.post('https://ids3.jsou.cn/login', params=params, headers=headers, data=data,
                             allow_redirects=False)

    return response.headers['Location']
def idslogin(Location):
    headers = {
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
        'Accept-Language': 'zh-CN,zh;q=0.9',
        'Cache-Control': 'max-age=0',
        'Connection': 'keep-alive',
        'Upgrade-Insecure-Requests': '1',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36',
    }

    response = requests.get(
        Location,
        headers=headers,
        verify=False,
    )

结语

完整js代码

https://wwm.lanzn.com/b05l314kf
密码:7bpq

下一期更新此学习网站一键看视频,回帖,看文档。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Menglingyidai + 1 + 1 厉害了

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lgz841004 发表于 2024-3-21 07:59
虽然不太懂,不过下来我得试试可不可以
FCGkitty 发表于 2024-3-23 16:16
wuye4 发表于 2024-3-22 16:55
已评分的作业也是自己写的,它只会显示你做的答案,你写的对,它的答案就是你的答案,你写的不对,它的答 ...

是这样的,但应该可以根据题目得分判断对错,采集对的就可以了,然后生成csv保存,在重复提交的时候调用题库csv答题,错误的选项可以人工在题库里补足,起码解决大部分问题,毕竟全正确题库爬不到啊~~老哥,下期就解决这个呗....乱序答题写的脑子疼~
 楼主| wuye4 发表于 2024-3-20 21:39
27316c 发表于 2024-3-20 21:46
漂亮,拿走了。
kongP5 发表于 2024-3-20 22:11
楼主牛逼啊!!!
 楼主| wuye4 发表于 2024-3-20 22:40
kongP5 发表于 2024-3-20 22:11
楼主牛逼啊!!!

一起学习
luiz357 发表于 2024-3-20 23:17
学习了,非常感谢
 楼主| wuye4 发表于 2024-3-20 23:19
27316c 发表于 2024-3-20 21:46
漂亮,拿走了。

不谢不谢
nanwang666 发表于 2024-3-20 23:40
等下一期,这个能做题吗
 楼主| wuye4 发表于 2024-3-20 23:45
nanwang666 发表于 2024-3-20 23:40
等下一期,这个能做题吗

能,估计要下下期。现在还没有思路,代码写不出来。
yubuguosan 发表于 2024-3-20 23:47
这也行的吗?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-18 06:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表