本次目标是抠出爱奇艺passwd加密JS代码,如果你看到了这一篇,说明你对JS逆向感兴趣,那不妨再看看我之前的一些文章,可能对你的学习爬虫路有帮助,跟着一起调试,对JS加密方法理解会更深点。如果调试不出来,可以参考我的代码,本期JS代码放在从今天开始种树www.happyhong.cn
准备
本期抠爱奇艺passwd
加密JS
代码,传送门,登录界面如下,我已经尝试了一次:
![v2-685c4e439e3722339d63c0a069a076f3_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=45c99c22-ec2f-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-685c4e439e3722339d63c0a069a076f3_b.jpg)
老老方法(输入错误账号密码
)找到提交url
和提交的参数(即FormData
里的值):
![v2-042fb78e3f36b07d5fd2d4034ce87681_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=45c99c22-ec2f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-042fb78e3f36b07d5fd2d4034ce87681_b.jpg)
FormData
提交的参数:
![v2-981f6c6791bd7810491b2c4f8737b0ba_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=45c99c22-ec2f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-981f6c6791bd7810491b2c4f8737b0ba_b.jpg)
可以看到passwd
已经被某种加密算法加密了,那我们接下来的任务就是找到这个加密JS
代码,然后使用python
代码调用运行出来。
调试
找到passwd
选择刚才的url,查看调用栈:
![v2-3a9f16ab4c58b2b95a083c9087e021de_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=45c99c22-ec2f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-3a9f16ab4c58b2b95a083c9087e021de_b.jpg)
仔细观察后可以看到有一个文件里包含doLogin
,那就点进去,进去后搜索passwd
关键字,如果你一直看我之前的文章,应该就对这些加密方法名字非常敏感了,能马上找到:
![v2-0f29d2b86890eea14d91c461824bc50d_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=45c99c22-ec2f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-0f29d2b86890eea14d91c461824bc50d_b.jpg)
找到一个rsaFun
,基本断定就是这里了,那就整上一个断点:
![v2-e966f36912d6107e23ca6d409a389010_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=45c99c22-ec2f-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-e966f36912d6107e23ca6d409a389010_b.jpg)
激活断点
输入错误的密码,点击登录即可激活断点:
![v2-8006a8f3a66490448957c8cd2cd450a6_b.png](http://img-03.proxy.5ce.com/view/image?&type=2&guid=45c99c22-ec2f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-8006a8f3a66490448957c8cd2cd450a6_b.png)
断点激活后那就点击下一步(F11)
按钮开始运行,进入加密函数:
![v2-4266fbb4565cf3c89c9a8ee01333c5ee_b.png](http://img-01.proxy.5ce.com/view/image?&type=2&guid=45c99c22-ec2f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-4266fbb4565cf3c89c9a8ee01333c5ee_b.png)
仔细看上图,一个getKeyPair
函数,一个encryptedString
函数就是我们寻找的目标,继续F11
疯狂调试:
![v2-527e8bc9df39929fe3fb99a71b05e136_b.png](http://img-02.proxy.5ce.com/view/image?&type=2&guid=45c99c22-ec2f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-527e8bc9df39929fe3fb99a71b05e136_b.png)
这就是getKeyPair
函数,只要把A
里的函数biFromHex、biHighIndex、BarrettMu
搜一下定义的地方抠出来算是把这个搞定了。
下一个encryptedString
:
![v2-42edf8181556112ae724df7150225fe5_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=45c99c22-ec2f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-42edf8181556112ae724df7150225fe5_b.jpg)
依然只要找到这些方法,抠出来放一个文件里,等待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)
运行结果:
![v2-13ad93344022d33185e99aa987b3631e_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=45c99c22-ec2f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-13ad93344022d33185e99aa987b3631e_b.jpg)
结束
本期讲解了爱奇艺密码加密代码如何抠取,大家自己练上一练,如果查看完整JS代码请点击这里:从今天开始种树,觉得有帮助的关注一下知识图谱与大数据公众号,当然不关注也无所谓。