24

爬虫必看,每日JS逆向之爱奇艺密码加密,今天你练了吗?

 3 years ago
source link: http://www.happyhong.cn/ni-xiang/10029.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
爬虫必看,每日JS逆向之爱奇艺密码加密,今天你练了吗? | 从今天开始种树

本次目标是抠出爱奇艺passwd加密JS代码,如果你看到了这一篇,说明你对JS逆向感兴趣,如果是初学者,那不妨再看看我之前的一些文章,可能对你的学习路有些帮助,跟着一起调试,对JS加密方法理解会更深点。如果调试不出来,可以参考我的代码,本期JS代码放在从今天开始种树

本期抠爱奇艺passwd加密JS代码,传送门,登录界面如下我已经尝试了一次我已经尝试了一次:

爱奇艺登录界面
爱奇艺登录界面

老老方法(输入错误账号密码)找到提交url和提交的参数(即FormData里的值):

请求URL
请求URL
FormData提交的参数:
FormData
FormData
可以看到passwd已经被某种加密算法加密了,那我们接下来的任务就是找到这个加密JS代码,然后使用python代码调用运行出来。

找到passwd

选择刚才的url,查看调用栈:

调用栈
调用栈
仔细观察后可以看到有一个文件里包含doLogin,那就点进去,进去后搜索passwd关键字,如果你一直看我之前的文章,应该就对这些加密方法名字非常敏感了,能马上找到:
找到passwd
找到passwd
找到一个rsaFun,基本断定就是这里了,那就整上一个断点:
断点
断点

输入错误的密码,点击登录即可激活断点:

激活断点
激活断点
断点激活后那就点击下一步(F11)按钮开始运行,进入加密函数:
rsa函数
rsa函数
仔细看上图,一个getKeyPair函数,一个encryptedString函数就是我们寻找的目标,继续F11疯狂调试:
getkey
getkey

这就是getKeyPair函数,只要把A里的函数biFromHex、biHighIndex、BarrettMu搜一下定义的地方抠出来算是把这个搞定了。
下一个encryptedString

encryptedString函数
encryptedString函数
依然只要找到这些方法,抠出来放一个文件里,等待python调用。

python调用运行

如果调用报错,记得根据报错信息缺啥补啥,比如window可以定义为window={},如果提示某某函数未定义,可能是你代码没有抠全,全原文件里继续查找,抠出来,下面是我调用的结果:
python代码:

import execjs

with open('..//js//aiqiyi.js', encoding='utf-8') as f:
    aiqiyi = f.read()
js = execjs.compile(aiqiyi)
#logid = js.call('hexEncode', "123456")
logid = js.call('get_pwd', "12345")
print(logid)
Python

运行结果:

运行结果
运行结果

本期讲解了爱奇艺密码加密代码如何抠取,大家自己练上一练,如果查看完整JS代码请点击这里:从今天开始种树,觉得有帮助的关注一下下面的公众号,获取更多内容,当然不关注也无所谓。

公众号
公众号

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK