| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 【Python】逆向爬虫-----模拟steam登录(RSA) -> 正文阅读 |
|
[Python知识库]【Python】逆向爬虫-----模拟steam登录(RSA) |
栗子是:Sign In 一、拿到加密代码
?由图可以看到password被加密了。我们在搜索框里搜索 “password =” ,找到并打开包含该关键词的js文件,查看里面的代码。
?我们在这行代码中找到了加密代码的语句,是一个RSA的加密。我们在这里设置一个断点。再次提交登录。
我们复制这两行代码到js调试工具。
?把复制过来的代码放进一个函数里,接下来我们要补全函数 。 ?我们回到检测工具定位到getPublicKey()这个函数。 通过观察可知,这个js文件里面写的是NSA加密的内容,?所以我们把文件里的全部代码都复制到js调试工具里。 ?加载代码,然后计算表达式。报了一下错误。我们先解决BigInteger()这个函数的定义。回到检查工具搜索BigInteger。
?找到了,把代码复制到调试工具。再次加载计算。 ?继续解决报错问题。它说result还未定义,那我们就定义两个变量,再将变量作为函数的实参。
?复制对应的mod和exp的数据到定义的变量里。再次加载计算。 继续解决报错问题。可以看见报错那行的代码中包含了'this'关键词,在方法中,this 表示该方法所属的对象,那么我们接下来继续查找BigInteger所属的对象。
可以看到在这个js文件里有很多BigInteger所调用的东西,为了减少不必要的麻烦,干脆把这个文件里的全部代码都复制到调试工具里(先把刚刚复制的BigInteger函数删了)。
?再次加载出现了'navigator' 未定义的报错,'navigator' 是js内置的对象,我们在代码开头加上navigator = this; 再次执行加载、计算,成功出现了加密出来的结果???
?二、用PyExecJS模块运行js代码拿到加密后的密码在执行前先修改一下js代码。因为mod和exp的值不一定是固定的,要实时地抓取。
? 用requests发送请求拿到publickey_exp和publickey_mod的数据,然后把他们传入getPwd()函数,拿到加密后的密码。
输出效果? 三、模拟登录steam
输出效果?
? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 4:49:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |