【JS逆向】某网游登陆密码加密逆向分析探索!

JS 逆向中分析探索比较重要,尤其是搜索关键词及加密猜测分析,如果猜错,那就整个大方向都错了,所以在断点调试中,一定要验证,对比印照,不能扣错 js 代码片段。

所以在找加密js文件及代码的时候要有耐心及对比验证!

网址:

代码语言:javascript
复制
aHR0cHM6Ly93d3cuMzcuY29tLw==

密码加密特征:

  1. 打开网站,账号密码(123456)登陆测试

2.获取到密码加密信息及接口

3.搜索关键字 password

注意搜索关键字还可以扩展搜索,比如“password”,“password:”,“password=”,甚至“var password”来获取需要的文件信息。

这里用“password:”获取的信息更精准!

4.获取到关键js文件及代码片段

5.打开至面板,打上断点,调试

6.调试

7.逐步调试

8.关键加密函数代码

然而加密关键部分找错了,断点调试没有出来密码加密前后信息,比如123456,和加密后的加密根式信息,不是这个加密js文件代码!

9.重新找,断点调试,确定密码

这里用“password =”获取的信息更精准!

10.下一行调试生成加密密码

11.打印输出验证密码:R0JXTkt3MEcxMjN1WkZLRDQ1NkhJ

12.对比验证密码格式

13.查看关键加密函数

14.关键加密函数

15.抠出所有代码,调试,报错

16.密码123456改成字符串,调试成功

在登陆接口中还有参数,callback: jQuery18305854424652078813_1704422996008

其中_1704422996008 是13位时间戳,使用 Python 很容易构建:

代码语言:javascript
复制
import time
import random

timestamp = str(int(time.time() * 1000))
jsonp = ''
for _ in range(20):
jsonp += str(random.randint(0, 9))
callback = 'jQuery' + jsonp + '_' + timestamp
print(callback)

附 python 调用js文件运行代码及效果

代码语言:javascript
复制
#公众号:eryeji
#!/usr/bin/env python3

-- coding: utf-8 --

import time
import random
import execjs

def get_encrypted_password(password):
with open('de.js', 'r', encoding='utf-8') as f:
www_37_js = f.read()
encrypted_pwd = execjs.compile(www_37_js).call('td', password)
print(encrypted_pwd)
return encrypted_pwd

def get_callback():
timestamp = str(int(time.time() * 1000))
jsonp = ''
for _ in range(20):
jsonp += str(random.randint(0, 9))
callback = 'jQuery' + jsonp + '_' + timestamp
print(callback)
return callback

if name =="main":
password="123456"
get_encrypted_password(password)
get_callback()

声明

本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系立即删除!

参考来源:

【JS 逆向百例】某 7 网游登录接口参数逆向-K哥爬虫

https://mp.weixin.qq.com/s/OrDOGRECm-k7f_thL6NO1A