这篇文章主要讲解了“Python如何扣取一个完整的逆向数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python如何扣取一个完整的逆向数据”吧!
XX街登陆密码加密
aHR0cDovL3NlbGxlci5jaHVjaHVqaWUuY29tL3NxZS5waHA/cz0vVXNlci9pbmRleA==
这个加密太简单了,五秒定位真的不是吹,所以直接来。
输入错误的账号密码,发起登陆请求,可以看到登录包里有个password
的加密字段。所以我们依次搜索password:
or password :
or password=
or password =
很快得到下面的结果【图1-1】,直接用 Python 实现就完事了~
X博登陆密码解析与讲解如何扣取一个加密算法
aHR0cHM6Ly93d3cud2VpYm8uY29tL2xvZ2luLnBocA==
用 Chrome 浏览器抓包相信大家都会,前面抓包我们跳过,直接到加密参数分析的地方。
Tip: 这次的加密不是异步的 不要在 XHR 选项卡傻乎乎的等了。
X博登陆框是嵌在页面中的加上X博的登陆页面图片以及要加载的东西很多,所以我们需要注意的包主要有两个:
-
登陆前返回相关加密秘钥的包【图2-1】
-
发起登陆请求的包【图2-2】
到这里就很清晰了,我们搞定 su 和 sp 就完事了。
先来看看 su 这个其实不要搜索,看着是不是很像我们开头的编码结果,由 a-zA-Z[0-9]+/= 这几种字符组成的编码 熟悉的就只有 Base64 , 我们直接找一个在线工具验证一下我们的猜想。【图2-3】
当然我们也可以试试搜索 参数名 su 【图2-4】,很明显搜索结果也验证了我们的猜想。
接下来看看 sp
在我们上面搜索 su 的地方我们找到了密码加密的地方,已经用红框框出主要的逻辑【图2-5】,接下来我们打上断点找找缺失的参数都是什么。
这里的参数都是比较简单的首先是 me.servertime 、me.rsaPubkey 和 me.nonce【图2-6】 这三个参数在上一个请求包都有同名的参数返回可以参考【图2-1】。
我们现在已经找齐了全部的参数,接下来需要切换到 webstorm 中调试出我们整体的加密算法。
直接粘贴 789 – 791 行的代码到编辑框中补全成下面这样。
function get_sp() {
var f = new sinaSSOEncoder.RSAKey;
f.setPublic(me.rsaPubkey, "10001");
b = f.encrypt([me.servertime, me.nonce].join("/t") + "/n" + b)
return b
}
get_sp()
虽然知道运行肯定报错,但是我们需要的就是报错的信息。【图2-7】
提示 sinaSSOEncoder is not defined
,我们回到浏览器调试窗口找 sinaSSOEncoder
在哪儿定义的。可以直接在页面中搜索 var sinaSSOEncoder
结果就只有一个【图2-8】
接下来复制 sinaSSOEncoder
的全部内容到编辑器中,第1048-1981行。继续运行并提示navigator is not defined
,我们定义它为{}
。接下来会提示 me
未定义【图2-9】。
但是我们调试过都知道这个 me.rsaPubkey 是在【图2-1】中返回的,所以我们把它替换掉。同理替换到我们已知的的其他参数。现在就只剩下 b
参数是未知的了。
我们向下运行,可以看到b
参数就是我们输入的密码【图2-10】,我们继续替换再次运行,发现没有东西输出,也没有报错,我们在函数中加上一句 打印语句,看看返回的 b
是什么结果,可以看到已经得到了加密后的结果了。【图2-11】
感谢各位的阅读,以上就是“Python如何扣取一个完整的逆向数据”的内容了,经过本文的学习后,相信大家对Python如何扣取一个完整的逆向数据这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/219752.html