日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

模拟登陆广西科技大学正方教务系统

發(fā)布時(shí)間:2024/3/12 windows 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 模拟登陆广西科技大学正方教务系统 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

一、首先對(duì)登錄過程進(jìn)行抓包,看看需要什么數(shù)據(jù)??

登錄地址:教學(xué)管理信息服務(wù)平臺(tái)

?我們可以看到登錄采用POST對(duì)http://jwxt.gxust.edu.cn:9600/xtgl/login_slogin.html發(fā)送請(qǐng)求

那么接下來我們要一步一步解析數(shù)據(jù)由來

二、解析Data字典

time很明顯是一個(gè)時(shí)間戳,用以下代碼就可以實(shí)現(xiàn)

import time ts = round(time.time()*1000)

?csrftoken 我猜測(cè)應(yīng)該是一個(gè)md5密文

首先對(duì)Elements查詢

?都沒有找到csrftoken這個(gè)鍵

回到登錄界面再次嘗試查找

?很好!原來這個(gè)csrftoken在進(jìn)入登錄界面的時(shí)候就自動(dòng)生成了呀!

使用xpath爬取這個(gè)value值當(dāng)然是最快的啦!

import requests from lxml import html client = requests.session() url = 'http://jwxt.gxust.edu.cn:9600/xtgl/login_slogin.html' response = client.get(url).text tree = html.fromstring(response) csrftoken = tree.xpath('//*[@id="csrftoken"]/@value')[0]

?運(yùn)行效果如圖所示

?yhm 也就是“用戶名”,就是你的學(xué)號(hào)

重點(diǎn)來了,mm這個(gè)參數(shù)很明顯是加密過的,接下來重點(diǎn)逐步解密mm

破解mm

再次對(duì)登錄界面進(jìn)行抓包

這里有modulusexponent兩個(gè)參數(shù),檢索這兩個(gè)參數(shù)看看

?

?OK! 似乎發(fā)現(xiàn)了登錄的入口!

認(rèn)真閱讀這三行代碼

先將modulusexponent轉(zhuǎn)為hex,也就是十六進(jìn)制

再存入setPublic得到公鑰

用公鑰對(duì)輸入的密碼進(jìn)行加密(RSA加密算法)

加密完后又將密文轉(zhuǎn)為base64字符串

加密流程大致是這樣,接下來將上述流程轉(zhuǎn)為代碼實(shí)現(xiàn)

直接利用crypto/rsa下的這些js文件吧!因?yàn)閷s語言轉(zhuǎn)換為python語言還是有困難的,直接利用原汁原味的js文件不香嗎?

這里直接將這5個(gè)文件的代碼復(fù)制到同一個(gè)js文件上

然后在末尾添加那三行登錄入口的代碼就可以了

function start(e, m, mm){var rsaKey = new RSAKey();rsaKey.setPublic(b64tohex(m), b64tohex(e));var enPassword = hex2b64(rsaKey.encrypt(mm));return enPassword; }

(由于合并后的js代碼過長,我已將它上傳到GitHub,鏈接crypto_rsa.js)?

?在python里調(diào)用一下(使用execjs庫調(diào)用js文件)

看到這一幕是不是很震撼!

到這里,mm參數(shù)也拿下了

(注:獲取mm參數(shù)需要exponentmodulus這兩個(gè)參數(shù))

獲取exponentmodulus

import time import requests ts = round(time.time()*1000) url = f'http://jwxt.gxust.edu.cn:9600/xtgl/login_getPublicKey.html?time={ts}&_={ts-50}' modExp = requests.get(url).json()

三、模擬瀏覽器登錄

所有參數(shù)都獲取完了,模擬瀏覽器登錄也就容易多了,只要將data里的參數(shù)全部發(fā)送到請(qǐng)求鏈接就可以了。

值得注意的是,請(qǐng)求頭的data里有兩個(gè)相同的鍵mm,?python無法創(chuàng)建包含兩個(gè)相同的鍵的字典,所以這里我使用URL_encoded格式發(fā)送字典,使用urllib.parse.quote()將字符串轉(zhuǎn)為URL_encoded

以下代碼模擬登錄(僅供參考)

#!/usr/bin/python # -*- coding:utf-8 -*-import requests import time from lxml import html import execjs import urllib.parse from texttable import Texttabledef getCsrfToken(loginurl):# csrftokenbodyByGet = client.get(loginurl)tree = html.fromstring(bodyByGet.text)csrftoken = tree.xpath('//*[@id="csrftoken"]/@value')[0]return csrftoken def getModExp(key):# exponent,modulusntime = round(time.time()*1000)modExpurl = f'http://jwxt.gxust.edu.cn:9600/xtgl/login_getPublicKey.html?time={ntime}&_={ntime-50}'modExp = client.get(modExpurl).json()# mmJS = open('crypto_rsa.js').read()mm = execjs.compile(JS).call('start', modExp['exponent'], modExp['modulus'], key)return mm def login(user, mm):# loginmm = getModExp(mm)csrftoken = getCsrfToken('http://jwxt.gxust.edu.cn:9600/xtgl/login_slogin.html')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.9','Accept-Encoding': 'gzip, deflate','Accept-Language': 'zh-CN,zh;q=0.9','Cache-Control': 'max-age=0','Connection': 'keep-alive','Content-Type': 'application/x-www-form-urlencoded','Host': 'jwxt.gxust.edu.cn:9600','Origin': 'http://jwxt.gxust.edu.cn:9600','Referer': 'http://jwxt.gxust.edu.cn:9600/xtgl/login_slogin.html','Upgrade-Insecure-Requests': '1','User-Agent': ''}data = f'csrftoken={urllib.parse.quote(csrftoken)}&language=zh_CN&yhm={user}&mm={urllib.parse.quote(mm)}&mm={urllib.parse.quote(mm)}'status = client.post(loginurl, headers=headers, data=data) # print(status.text)if '用戶名或密碼不正確,請(qǐng)重新輸入!' in status.text:print("用戶名或密碼不正確,請(qǐng)重新輸入!")else:print('登錄成功!歡迎您!') if __name__ == '__main__':client = requests.session()loginurl = 'http://jwxt.gxust.edu.cn:9600/xtgl/login_slogin.html'user = input("賬號(hào):")password = input("密碼:")login(user, password)

?結(jié)尾:既然都實(shí)現(xiàn)登錄了,那可玩的東西就多了

爬取課表

查看更多:GitHub - waykom/zhengfang: 模擬登錄廣西科技大學(xué)正方教務(wù)系統(tǒng)

參考:

GitHub - zmaplex/openSwunEduCrawler

https://www.v2ex.com/t/433971#reply11

總結(jié)

以上是生活随笔為你收集整理的模拟登陆广西科技大学正方教务系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。