微博极验验证登录逆向

声明

本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!

网站

aHR0cHM6Ly9wYXNzcG9ydC53ZWliby5jb20vc3NvL3NpZ25pbg==

本文章主讲微博登录部分,极验4网上文章还是挺多的,这里就不过多阐述,验证码部分有疑问欢迎私信讨论。

极验4文字点选

加密方式还是RSA+AES,新版可以通过搜mode:进行定位,可以直接通过python调库完成这部分加密,比扣js速度要快一点,并且通用性更强。

在这里插入图片描述

微博登录

微博登录流程还是挺繁琐的,下面主要按照请求流程进行讲解。

1、第一请求signin会返回‘X-CSRF-TOKEN’,这个在后续会作为请求头和cookie的一部分
2、第二请求config会返回nonce、pubkey、rsakv和servertime(可不用)用于后续的密码加密
3、第三请求login,需要注意的是这个是请求第一次出现的login,参数不需要携带cid,这次的login请求就是用于返回这个cid的
4、第四请求gt,用于验证极验4返回的参数是否有效,无需返回内容
5、第五请求login,这次需携带cid请求,请求后返回登录结果

在这里插入图片描述

signin

这个请求没有任何加密,直接请求返回cookie即可,另外获取极验4的captcha_id的js文件也是从这个请求结果中获取的。

在这里插入图片描述

config

这个请求也没有加密,请求直接返回对应参数即可。

在这里插入图片描述

login

第一个login请求只有pass是密码经过加密的,rsakv从config请求返回,由于config有返回pubkey,可想而知这个rsa加密应该会先设置公钥再进行加密,所以直接搜索setpublickey看看能不能搜到结果,结果这个网站是可以搜到的,也算是一个小技巧。

在这里插入图片描述

这加密看着就像是标准库的,直接python调库即可

def get_rsa_code(text, public_key):
    # RSA public key
    # public_key = '-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDrKjhWhmGIf6GAvdtcq9XyHHv9\nWcCQyy0kWoesJTBiiCcpKT5VBjUFCOf5qju3f0MzIxSQ+RX21jxV/i8IpJs1P0RK\n05k8rMAtt4Sru45CqbG7//s4vhjXjoeg5Bubj3OpKO4MzuH2c5iEuXd+T+noihu+\nSVknrEp5mzGB1kQkQwIDAQAB\n-----END PUBLIC KEY-----'

    # 将文本转换为字符串并编码
    text = str(text).encode('utf-8')

    # 导入公钥
    rsa_key = RSA.importKey(public_key)

    # 创建加密器
    cipher = PKCS1_v1_5.new(rsa_key)

    # 加密数据
    encrypted = cipher.encrypt(text)

    return encrypted.hex()

加密的e其实就是通过一个时间戳和config返回的nonce通过\t拼接,再通过\n拼接密码。但可以看到结果加密后还经过了Wh加密,跟进r.encrypt加密看看还有没有什么猫腻。

在这里插入图片描述

发现加密后的结果是经过vn函数,再返回经过Wh函数得到最终结果。

在这里插入图片描述

但其实vn是将结果转成base64,Wh再转回16进制,结果和之前是一致的,所以和两个函数无需理会,至此pass加密完成。

在这里插入图片描述

请求返回结果

在这里插入图片描述

gt

gt请求没啥加密的,key是上面login返回的mfa_id,lot_number、captcha_output、pass_token、和gen_time是极验验证返回的参数,callback前半部分固定,后面数字部分是一个时间戳。

在这里插入图片描述

login

最后一个login其实也没啥需要处理的了,pass和第一个login的加密方式是一样的,需要注意的是加密的参数第一个时间戳和第一个login的是不一致的,cid是login请求返回的mfa_id,rsakv是config返回的,至此微博登录分析完成。

在这里插入图片描述

结果展示

python构造请求调用我就不展示了,没啥特别的,就直接展示结果了

在这里插入图片描述

总结

需要完整代码的可以私信我,逆向分析中有任何疑问也可以私信我一起讨论分析,谢谢大家!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值