终章:2021/7/8爬虫第三十四次课(反反爬措施三之js反爬补充)

本文详细讲述了如何通过网络分析、关键词搜索和代码调试,成功逆向JavaScript加密算法,包括Steam平台的RSA加密和百度翻译的sign生成过程。通过实例演示,揭示了从数据接口追踪到核心加密逻辑的步骤。

一、steam平台js算法逆向

1 通过Network 我们发现了2个数据接口 getrsakey  dologin
在dologin 密码是做了加密处理
​
2 通过搜索关键字password 然后我们确定了一个数据接口 login.js....
继续去它的源码当中搜索关键字 password 。然后逐个分析 var encryptedPassword = RSA.encrypt(password, pubKey); 它可能可以
​
3 通过断点调试的方式 我们分析到了 它的第一个参数就是传递的我们明文的密码 第二个参数作为公钥来进行加密的
​
4 var pubKey = RSA.getPublicKey(results.publickey_mod, results.publickey_exp); 通过getrsakey捕获这这个数据 publickey_mod publickey_exp
​
5 js调试(非常灵活)
首先自己定义了一个函数getPwd()
我们把一些核心的代码复制过来 var encryptedPassword ... var pubKey ...
但是我们要满足代码以及函数之间的调用关系RSA.getPublicKey它的内部实现(RSA加密)
看它的源码 不知道复制那一段代码 但是经过分析 rsa.js文件 我们就把这个文件当中的所有的代码进行了复制
在手动的 把mod exp 的数据添加了进来
​
总结:
1 我们分析关键字 pwd password xxxx
1.1 search 进行关键字的查询 (小技巧 可以加空格= 空格: = :)
1.2 进行数据的筛选(这个过程有点繁琐 因为正常的情况下我们不一定能够立马甄别出这个就是我们要的数据接口 login.jsxxxx )
1.3 代码格式化 在代码当中继续查找关键字 通过这个步骤继续筛选 可疑的数据
​
​
2 确定好有问题的数据之后 打断点 继续进行分析
2.1 分析的过程当中 我们来进一步确定它采用的是什么样的算法 
2.2 点进去看它内部的实现逻辑
​
3 进行JS调试
3.1 你的逻辑要清晰 哪些代码要复制 哪些代码需要改动
3.2 原则上 有问题的代码可以删除 也可以去找这些代码相关的实现 如果还是调试不出来,可以把整个的代码都进行复制
先保证语法没有问题 然后在进行调试
3.3 进行函数的调用 看对明文加密之后的结果
​
4 Python代码的实现
4.1 创建js文件
4.2 创建py文件 通过py文件来执行js文件

源代码:

import requests
import execjs


url = 'https://store.steampowered.com/login/getrsakey/'
data = {
   
   
    'donotcache': '1625832100582',
    'username': 'abc@qq.com'
}
headers = {
   
   
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
res = requests.post(url=url,headers=headers,data=data).json()
exp = res['publickey_exp']
mod = res['publickey_mod']
# print(exp,mod)

node = execjs.get()
ctx = node.compile(open('steam.js',encoding='utf-8').read()
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笔记本IT

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值