您现在的位置是:首页 > 编程 > 

记一次调用网页JS解决前端加密

2025-07-26 09:02:01
记一次调用网页JS解决前端加密 文章首发在:先知社区前言在做渗透测试过程中,难免会遇到前端加密的情况,这个时候就需要我们对js进行逆向来生成或者解密想要的内容,可以使用python直接调用函数处理,直接使用网页自己的JS代码,省去我们分析的时间。本文简单记录了一次使用pyexecjs库自动化调用相关函数处理该情况的实际案例。案例又一次遇到了前端加密,还不搞不行,只能看看咯。跟着步骤来,相信大家都能

记一次调用网页JS解决前端加密

文章首发在:先知社区

前言

在做渗透测试过程中,难免会遇到前端加密的情况,这个时候就需要我们对js进行逆向来生成或者解密想要的内容,可以使用python直接调用函数处理,直接使用网页自己的JS代码,省去我们分析的时间。本文简单记录了一次使用pyexecjs库自动化调用相关函数处理该情况的实际案例。

案例

又一次遇到了前端加密,还不搞不行,只能看看咯。跟着步骤来,相信大家都能搞定前端加密这种情况

定位关键函数

通过观察请求及响应包,获取关键字符串,快速定位相关函数

图片

直接定位搜索参数字符串serviceid或者具体的id号,这里我搜索的是服务id号

图片

在这里下断点,简单跟一下加密流程,发现加密关键函数是c=$(b, x.value),继续跟踪这个函数的生成

图片

这里声明了一个新的类l5,在当前js文件检索l5

图片

继续检索,发现是从其他js文件引入来的(这里面的函数及文件引用后缀,每次刷新网页都会变化)

图片

通过简单的函数跟踪,我们就可以大致确定加密函数在哪里,引用了什么文件。我们将有加密函数的js文件和其依赖文件都下载下来。

使用pyexecjs调用执行

首先安装pyexecjs库,直接pip安装即可

代码语言:javascript代码运行次数:0运行复制
pip install PyExecJS

引入js文件,并调用相关函数的关键代码

代码语言:javascript代码运行次数:0运行复制
with open('your.js','r',encoding='utf8',errors='ignore') as f:
    jscode = f.read()

ctx = execjspile(jscode)
result = ('your_func', '参数1','参数2')

调用js并直接发包

代码语言:javascript代码运行次数:0运行复制
import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")
import execjs
import json
from enc import aes_encrypt

import requests
headers = {
    'Host': 'xxxx',
    'Cookie': 'xxxx',
    'User-Agent': 'Mozilla/5.0 (Windows T 10.0; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0',
    'Accept': 'application/json, text/plain, */*',
    'Accept-Language': 'zh-C',
    'Origin': 'xxxxx',
    'Referer': 'xxxxx',
    'Sec-Fetch-Dest': 'empty',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Site': 'same-origin',
    'Priority': 'u=0',
    'Content-Length': '0',
    'Te': 'trailers',
    'Connection': 'keep-alive'
}

def encodehash(p):
    navigator = """
var navigator = {
  userAgent: 'Python-ExecJS',
  appVersion: '1.0',
};
"""

    window = """
var window = {};
window.document = {};
"""

    with open('tree-BbjKWDWs.js','r',encoding='utf8',errors='ignore') as f:
        jscode = f.read()

    ctx = execjspile(window + '\n'+ navigator + '\n'+ jscode)
    result = ('re', json.dumps(p),'密钥')

    return result

url = 'https://xxx'
# 100012接口
for i in range(0,9):
    user = 'xxxxx' + str(i)
    p1 = {"identityMethod":["Mobile umber","Email"],"identityType":"xx","account":user}
    data = {
        "param": encodehash(p1),
        "serviceId": "100012"
    }
    res = requests.post(url,json=data,headers=headers)
    print(res.json())

即可实现构造加密请求发送的效果

问题解决

pyexecjs执行js代码报错gbk问题

报错信息: UnicodeEncodeError: 'gbk' codec can't encode character 解决办法 脚本中加入这个代码

代码语言:javascript代码运行次数:0运行复制
import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")

pyexecjs不支持ES6导致模块加载导出报错

解决办法 需要将下载的js文件代码中的导入导出更改为CommonJS

代码语言:javascript代码运行次数:0运行复制
// 导出
export {Jt as K, $t as a, Xt as h};
// 导入
import {K as x, a as K, h as q} from "./module.js";
// 导出
 = {K: Jt, a: $t, h: Xt};
// 导入
ct {K: x, a: K, h: q} = require('./module.js');

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1218290.html

相关标签:无
上传时间: 2025-07-25 10:28:17
留言与评论(共有 16 条评论)
本站网友 基金管理人
14分钟前 发表
h as q} from "./module.js"; // 导出 = {K
本站网友 春季幼儿食谱
2分钟前 发表
案例又一次遇到了前端加密
本站网友 无锡影视城
27分钟前 发表
获取关键字符串
本站网友 男士保养皮肤
29分钟前 发表
}; """ window = """ var window = {}; window.document = {}; """ with open('tree-BbjKWDWs.js'
本站网友 王志伟
27分钟前 发表
继续跟踪这个函数的生成 图片 这里声明了一个新的类l5
本站网友 222sss
27分钟前 发表
h
本站网友 莲蓬乳是什么
15分钟前 发表
在当前js文件检索l5 图片 继续检索
本站网友 四川男科
25分钟前 发表
'Accept-Language'
本站网友 周立波怎么了
21分钟前 发表
'r'
本站网友 女性最佳生育年龄
29分钟前 发表
案例又一次遇到了前端加密
本站网友 spy组合
4分钟前 发表
//xxx' # 100012接口 for i in range(0
本站网友 蜂胶的用途
22分钟前 发表
'Sec-Fetch-Dest'
本站网友 桃园租房
17分钟前 发表
'xxxx'
本站网友 生地黄的功效与作用
22分钟前 发表
直接使用网页自己的JS代码
本站网友 怎么祛痘印
24分钟前 发表
发现加密关键函数是c=$(b