x大网校登录接口js逆向分析

网站:

import base64
# 解码
result = base64.b64decode('aHR0cHM6Ly91c2VyLndhbmd4aWFvLmNuL2xvZ2lu'.encode('utf-8'))
website=result.decode('utf-8')
# print(result)
print(website)

思路:

模拟登录,得到token值,才能对内部数据进行解析

x大网校登录接口js逆向分析_第1张图片

x大网校登录接口js逆向分析_第2张图片

一个验证码,一个密码加密,一个用户名

https://user.wangxiao.cn/apis//login/passwordLogin

x大网校登录接口js逆向分析_第3张图片

x大网校登录接口js逆向分析_第4张图片

继续向下找

x大网校登录接口js逆向分析_第5张图片

x大网校登录接口js逆向分析_第6张图片

x大网校登录接口js逆向分析_第7张图片

然后取消XHR端点,改password哪一行打上断点。

我说的没错,他断住了

x大网校登录接口js逆向分析_第8张图片

x大网校登录接口js逆向分析_第9张图片

牛啊,我第一次发现还有闭包这个东西,我感觉这个闭包的意思的端点执行前的数据。

x大网校登录接口js逆向分析_第10张图片

代码实现:

python代码:
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
import time
# # 把公钥处理成字节
rsa_key_bs = base64.b64decode("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDA5Zq6ZdH/RMSvC8WKhp5gj6Ue4Lqjo0Q2PnyGbSkTlYku0HtVzbh3S9F9oHbxeO55E8tEEQ5wj/+52VMLavcuwkDypG66N6c1z0Fo2HgxV3e0tqt1wyNtmbwg7ruIYmFM+dErIpTiLRDvOy+0vgPcBVDfSUHwUSgUtIkyC47UNQIDAQAB")
# # 加载公钥
pub_key = RSA.importKey(rsa_key_bs)
# # 创加密器
rsa = PKCS1_v1_5.new(pub_key)
# # 进行rsa加密, 加密的内容是   密码+时间
password_encrypt = rsa.encrypt((password_text + str(int(time.time()*1000))).encode("utf-8"))
# # 加密后的字节. 处理成base64
password_encrypt_b64 = base64.b64encode(password_encrypt).decode()
print("password_encrypt_b64:",password_encrypt_b64)
js代码:
window = global;
const JSEncrypt = require('jsencrypt');

var PUBLIC_KEY = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDA5Zq6ZdH/RMSvC8WKhp5gj6Ue4Lqjo0Q2PnyGbSkTlYku0HtVzbh3S9F9oHbxeO55E8tEEQ5wj/+52VMLavcuwkDypG66N6c1z0Fo2HgxV3e0tqt1wyNtmbwg7ruIYmFM+dErIpTiLRDvOy+0vgPcBVDfSUHwUSgUtIkyC47UNQIDAQAB"

function  getmima(xxx){
    var time = new Date();
    x=time.getTime();
    var encrypt = new JSEncrypt();//实例化加密对象
    encrypt.setPublicKey(PUBLIC_KEY);//设置公钥
    var encrypted = encrypt.encrypt(xxx+''+x);//对指定数据进行加密
    return encrypted

}
//使用公钥加密

console.log(getmima("1234"))

你可能感兴趣的:(网络爬虫,javascript,爬虫,python)