requests,js逆向练习

9 篇文章 0 订阅
文章讲述了如何通过Python脚本解析jQuery源码,找到加密函数,利用RSA加密技术解密登录密码,并模拟登录过程,包括获取验证码、加密密码和整理登录后的cookie信息。
摘要由CSDN通过智能技术生成

 自上而下排除jquery源码,点进去utils

发现第一次请求是getTime

 

 

 再次运行此断点才是登录,这个时候密码已经被加密了 

 

查看上级js页面,发现加密函数

 

 

进去看函数加密过程 

 

 得到结果RSA

 

python代码 

import base64
import json

import requests
from fake_useragent import UserAgent
from Crypto.Cipher import PKCS1_v1_5
from Crypto.PublicKey import RSA

from spider_WE.utils.tujian import crack_code_img_b64

username = '账号'
password = '密码'
headers = {
    'User-Agent': UserAgent().random,
    'Content-Type': 'application/json; charset=utf-8'
}
# 1.进入登录页->加载cookie
session = requests.session()
resp = session.get('https://user.wangxiao.cn/login')

# 2.获取验证码->打码平台
verify_code_url = 'https://user.wangxiao.cn/apis//common/getImageCaptcha'
verify_resp = session.post(verify_code_url, headers=headers)
verify_data = verify_resp.json()
verify_b64_img = verify_data['data'].split('base64,')[-1]
verify_code = crack_code_img_b64(verify_b64_img, 3)

# 3.把密码加密
get_time_url = 'https://user.wangxiao.cn/apis//common/getTime'
get_time_resp = session.post(get_time_url, headers=headers)
get_time_data = get_time_resp.json()['data']
pwd = password + str(get_time_data)
pub_key = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDA5Zq6ZdH/' \
          'RMSvC8WKhp5gj6Ue4Lqjo0Q2PnyGbSkTlYku0HtVzbh3S9F9oHbxeO55E8tEEQ5wj/' \
          '+52VMLavcuwkDypG66N6c1z0Fo2HgxV3e0tqt1wyNtmbwg7ruIYmFM+dErIpTiLRDvOy+0vgPcBVDfSUHwUSgUtIkyC47UNQIDAQAB'
rsa_key = RSA.import_key(base64.b64decode(pub_key))
# 加密
rsa = PKCS1_v1_5.new(rsa_key)
crypto = rsa.encrypt(pwd.encode('utf-8'))
crypto_pwd = base64.b64encode(crypto).decode('utf-8')

# 4.登录
login_url = 'https://user.wangxiao.cn/apis//login/passwordLogin'
login_data = {
    'imageCaptchaCode': verify_code,
    'password': crypto_pwd,
    'userName': username
}
login_resp = session.post(login_url, data=json.dumps(login_data), headers=headers)
login_info = login_resp.json()['data']

# 5.对登录后的cookie信息进行整理
cookie_dic = {
    "autoLogin": "null",
    "OldPassword": login_info['passwordCookies'],
    "OldPassword_": login_info['passwordCookies'],
    "OldUsername": login_info['userNameCookies'],
    "OldUsername_": login_info['userNameCookies'],
    "OldUsername2": login_info['userNameCookies'],
    "OldUsername2_": login_info['userNameCookies'],
    f"{login_info['userName']}_exam": login_info['sign'],
    "token": login_info['token'],
    "UserCookieName": login_info['userName'],
    "UserCookieName_": login_info['userName'],
    "userInfo": login_info,
    "sessionId": session.cookies.get("sessionId")
}

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值