吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1568|回复: 11
收起左侧

[Python 原创] Python学习通(一)手机号POST登录

  [复制链接]
7c丶陪你 发表于 2024-5-29 21:23
之前用selenium的Edge写过一个脚本,评论区说定位方式不好,后面闲着无聊又对学习通做了研究研究。
帐密随便输入,浏览器F12抓包得到下面:

登录接口

登录接口

参数:

登录参数

登录参数

通过看提交的表单,直白的看出:uname和password 一个是账号一个是密码,最直白的是后面的password。  看到(==)盲猜base64加密了,直接搜base64

登录加密JS

登录加密JS

得到这个JS也比较直白login.js      还有一个//pwd=xxxxxxx的明显字样,那这个JS就八九不离十了。
1716987921883(1).jpg
从这里看到 pwd  用了encryptByAES加密,key是"u2oh6Vu^HWe4_AES" 但是这里只看到了 password的加密,而uname的呢?其实定位到这个位置,往上拉一下,JS就有备注【//手机号+密码登录 function loginByPhoneAndPwd()】那uname的加密可能就在附件不远了,因为我们就是手机号+密码登录,往下找一找,可以直接看到POST参数的构成。
1716988360331(1).jpg
确认了Uname和Password都是encryptByAES加密,加密的key是"u2oh6Vu^HWe4_AES" ,那么现在就需要去看看encryptByAES进行了怎么操作。
1716988554051.jpg
接下来就是敲代码环节了。
[Python] 纯文本查看 复制代码
from Crypto.Cipher import AES
import base64

uname="手机号码"
password="密码"
TransferKey="u2oh6Vu^HWe4_AES"

def EncryptAES(TransferKey, Encryptcontent):
    AesKey = TransferKey.encode('utf-8')
    Iv = TransferKey.encode('utf-8')
    Encrypttext = Encryptcontent.encode('utf-8')
    EncryptMode = AES.MODE_CBC
    Cipher = AES.new(key=AesKey, mode=EncryptMode, IV=Iv)
    EncrData = Cipher.encrypt(pad(Encrypttext, 16, 'pkcs7'))
    Data = base64.b64encode(EncrData).decode('utf-8')
    return Data

def LoginXXT(Username, Userpassword, TransferKey):
    username = EncryptAES(TransferKey, Username)
    userpassword = EncryptAES(TransferKey, Userpassword)
    Url = 'https://passport2.chaoxing.com/fanyalogin'
    header = Get_Header()
    header.update({'Host': 'passport2.chaoxing.com'})
    Data = {
        'fid': '-1',
        'uname': username,
        'password': userpassword,
        'refer': 'http://i.chaoxing.com',
        't': 'true',
        'forbidotherlogin': '0',
        'validate': '',
        'doubleFactorLogin': '0',
        'independentId': '0',
        'independentNameId': '0'
    }
    respones = re.post(url=Url, headers=header, data=Data)
    if respones.status_code == 200:
        JsonData = respones.json()
        Cause = JsonData['status']
        if Cause:
            Cookies = respones.cookies
            Cookie = re.utils.dict_from_cookiejar(Cookies)
            UserId = Cookie['_uid']
            return Cookie, UserId
        else:
            Cause = JsonData['msg2']
            print(f'登录失败,原因:{Cause}')
            return "", ""
    else:
        print(f'登录失败,POST错误代码:{respones.status_code}')
        return "", ""


登录后获取cookie和userid,为后面的操作做准备。
太久没写贴了,忘记怎么写了,如果违规请版主或管理员指正修改。

免费评分

参与人数 5吾爱币 +12 热心值 +4 收起 理由
Flashsky + 1 + 1 谢谢@Thanks!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
cyylszsb + 1 + 1 我很赞同!
三滑稽甲苯 + 2 + 1 用心讨论,共获提升!
kittylang + 1 我是杠精,base64是编码格式不是加密算法

查看全部评分

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

star0angel 发表于 2024-5-29 21:35
大佬牛逼  虽然看不大明白 不会js
258239234 发表于 2024-5-29 22:35
lww32 发表于 2024-5-29 23:39
gs129090 发表于 2024-5-30 09:43
大佬学习了
millioxe 发表于 2024-5-30 10:06
谢谢大佬,复习了
xinxiu 发表于 2024-5-30 10:24
学习了,会抓登陆接口就可以不用selenium了。
zf19871001 发表于 2024-5-30 14:04
xinxiu 发表于 2024-5-30 10:24
学习了,会抓登陆接口就可以不用selenium了。

可能是登陆接口相对简单 后续要做的比较麻烦
Jason19821220 发表于 2024-5-30 14:35
可以,后续再看看
lingqixzw 发表于 2024-5-30 15:39
学习了,感谢大佬!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 12:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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