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逆向完美世界的主要内容,如果未能解决你的问题,请参考以下文章

爬虫反爬:JS逆向实战2

爬虫反爬:JS逆向实战2

Python实战|js逆向凡科网

Python实战|js逆向空中网

Python实战|js逆向steam社区

Python实战|js逆向微信公众平台