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 的数据添加了进来
报错 ‘BigInteger’ 未定义
搜索 BigInteger 然后复制这个function
对象不支持此属性或方法
‘navigator’ 未定义 是JS中的一个内置对象
navigator = this;
总结:
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文件
爬虫笔记42之反爬系列五:JS补充(steam平台js算法逆向)
最新推荐文章于 2022-05-12 14:42:46 发布