Python如何扣取一个完整的逆向数据

这篇文章主要讲解了“Python如何扣取一个完整的逆向数据”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python如何扣取一个完整的逆向数据”吧!

创新互联-专业网站定制、快速模板网站建设、高性价比江岸网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式江岸网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖江岸地区。费用合理售后完善,十载实体公司更值得信赖。

XX街登陆密码加密

aHR0cDovL3NlbGxlci5jaHVjaHVqaWUuY29tL3NxZS5waHA/cz0vVXNlci9pbmRleA==

这个加密太简单了,五秒定位真的不是吹,所以直接来。

输入错误的账号密码,发起登陆请求,可以看到登录包里有个password的加密字段。所以我们依次搜索password: or password : or password= or password =

很快得到下面的结果【图1-1】,直接用 Python 实现就完事了~

Python如何扣取一个完整的逆向数据  
图1-1
 
X博登陆密码解析与讲解如何扣取一个加密算法

aHR0cHM6Ly93d3cud2VpYm8uY29tL2xvZ2luLnBocA==

用 Chrome 浏览器抓包相信大家都会,前面抓包我们跳过,直接到加密参数分析的地方。

Tip: 这次的加密不是异步的  不要在 XHR 选项卡傻乎乎的等了。

X博登陆框是嵌在页面中的加上X博的登陆页面图片以及要加载的东西很多,所以我们需要注意的包主要有两个:

  • 登陆前返回相关加密秘钥的包【图2-1】

  • 发起登陆请求的包【图2-2】


 
Python如何扣取一个完整的逆向数据  
图2-1

 
Python如何扣取一个完整的逆向数据  
图2-2

到这里就很清晰了,我们搞定 su 和 sp 就完事了。

先来看看 su 这个其实不要搜索,看着是不是很像我们开头的编码结果,由 a-zA-Z[0-9]+/= 这几种字符组成的编码 熟悉的就只有 Base64 , 我们直接找一个在线工具验证一下我们的猜想。【图2-3】

Python如何扣取一个完整的逆向数据  
图2-3

当然我们也可以试试搜索 参数名 su 【图2-4】,很明显搜索结果也验证了我们的猜想。

Python如何扣取一个完整的逆向数据  
图2-4

接下来看看 sp

在我们上面搜索 su 的地方我们找到了密码加密的地方,已经用红框框出主要的逻辑【图2-5】,接下来我们打上断点找找缺失的参数都是什么。

Python如何扣取一个完整的逆向数据  
图2-5

这里的参数都是比较简单的首先是 me.servertime 、me.rsaPubkey 和  me.nonce【图2-6】 这三个参数在上一个请求包都有同名的参数返回可以参考【图2-1】。

Python如何扣取一个完整的逆向数据  
图2-6

我们现在已经找齐了全部的参数,接下来需要切换到 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】

Python如何扣取一个完整的逆向数据  
2-7

提示  sinaSSOEncoder is not defined ,我们回到浏览器调试窗口找 sinaSSOEncoder在哪儿定义的。可以直接在页面中搜索 var sinaSSOEncoder

结果就只有一个【图2-8】

Python如何扣取一个完整的逆向数据  
图2-8

接下来复制 sinaSSOEncoder的全部内容到编辑器中,第1048-1981行。继续运行并提示navigator is not defined,我们定义它为{}。接下来会提示 me 未定义【图2-9】。

Python如何扣取一个完整的逆向数据  
图2-9

但是我们调试过都知道这个 me.rsaPubkey 是在【图2-1】中返回的,所以我们把它替换掉。同理替换到我们已知的的其他参数。现在就只剩下 b 参数是未知的了。

我们向下运行,可以看到b参数就是我们输入的密码【图2-10】,我们继续替换再次运行,发现没有东西输出,也没有报错,我们在函数中加上一句 打印语句,看看返回的 b是什么结果,可以看到已经得到了加密后的结果了。【图2-11】

Python如何扣取一个完整的逆向数据  
图2-10
Python如何扣取一个完整的逆向数据  
图2-11

感谢各位的阅读,以上就是“Python如何扣取一个完整的逆向数据”的内容了,经过本文的学习后,相信大家对Python如何扣取一个完整的逆向数据这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


文章标题:Python如何扣取一个完整的逆向数据
本文网址:http://hbruida.cn/article/jephsh.html