Python实战|js逆向完美世界
Posted 向阳-Y.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python实战|js逆向完美世界相关的知识,希望对你有一定的参考价值。
逆向完美世界登录
js代码调试阶段
1.查看密码关键字段
2.Ctrl+shift+f全局搜索:password,找到相关js文件
3.从代码的setpublickey、encrypt关键字可以看出,使用了非对称加密算法
4.此处打断点,再次运行,进入函数构造内部
5.经过分析可知,该文件内所有代码都涉及到非对称加解密,所以直接全部copy出来进行调试
6.下图报错,navigator和window未定义,解决方法:因为这两个都是内置函数,所以只需要在代码最前面加上navigator=this;window=this;
7.再回到一开始打断点的地方,把几个关键的函数调用给抠出来
8.上图中的e.setPublicKey($('#e').val());
就是获取主文件,id=e的参数值,所以我们可以在login文件中找到value的值,用该值替换(’#e’).val()
9.最后修改完成的代码:
爬虫代码编写
import requests
from pyquery import PyQuery
import execjs
from lxml import etree
url = 'https://passport.wanmei.com/sso/login?service=passport&isiframe=1&location=2f736166652f'
headers=
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/94.0.4606.20 Safari/537.36'
response = requests.get(url=url, headers=headers).text
# doc=PyQuery(response)
# public_key=doc('#e').attr("value")
#定位:
tree = etree.HTML(response)
public_key = tree.xpath('//input[@id="e"]/@value')[0]
node = execjs.get()#实例化一个对象
pwd = '123'
ctx = node.compile(open('./wanmeishijie.js', encoding='utf-8').read())#编译
funcName = 'getPwd("0","1")'.format(pwd, public_key)
pwd = ctx.eval(funcName)
print(pwd)
以上是关于Python实战|js逆向完美世界的主要内容,如果未能解决你的问题,请参考以下文章