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

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

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

网址:

aHR0cHM6Ly93d3cuMzcuY29tLw==

密码加密特征:

abb8e8160c46b8abfbd5a5107b1431ad.png

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

be47d60f8ccb01868ba03d003e2f23e4.png

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

00d5cb47ccf1e1d7b574b62c287eccf6.png

3.搜索关键字 password

4ee258ae5ec83280ef5c6fccc866bf5c.png

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

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

68897c62872268a1b510882ebd99c156.png

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

5edbec57369f9cc8ade18735fd011594.png

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

0c9260c8cfc977adfbb681ca31c9b4b0.png

6.调试

2ae44c10146f49f43ed0984107fefc3a.png

7.逐步调试

f37babf2a9137a3533f2952dc617eec1.png

8.关键加密函数代码

f11051e45d899f00178ca59b4ab92ffb.png

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

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

902ba5aa524c528e9638104363480ce1.png

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

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

ebe1114ea16557e34322cf1c7fe2dc39.png

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

7fa77810a90ac6ffac0454877a6a42bb.png

12.对比验证密码格式

0837caf0a160ef760ef52f34a21877b2.png

13.查看关键加密函数

2005d59285863f6c16b51832d5a2d890.png

14.关键加密函数

08b1402b3e7515e66c416eba71f4c309.png

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

df7704155327131106fbccc089c268a2.png

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

6ce3ee5c89939a1e9be62f5f482cd407.png

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

24198162ee9e1141f6ba9c525aea393f.png

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

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文件运行代码及效果

a7b0e43db0737f306dff0ab4b33ee458.png

#公众号: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()

完整代码获取 

请关注本渣渣公众号 

ae993490ff96e207c14b2424b5a89f1d.jpeg

后台回复“网游”

声明 

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

参考来源:

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

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

·················END·················

你好,我是二大爷,

革命老区外出进城务工人员,

互联网非早期非专业站长,

喜好python,写作,阅读,英语

不入流程序,自媒体,seo . . .

公众号不挣钱,交个网友。

读者交流群已建立,找到我备注 “交流”,即可获得加入我们~

听说点 “在看” 的都变得更好看呐~

关注关注二大爷呗~给你分享python,写作,阅读的内容噢~

扫一扫下方二维码即可关注我噢~

bd020675067437e4f0e3e54889ae596e.jpeg

8b7be2b9120a59bcad1e683d1efe562a.png

关注我的都变秃了

说错了,都变强了!

不信你试试

74793d5a28a6a4f9203704af0d6a88b9.jpeg

扫码关注最新动态

公众号ID:eryeji

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值