小学生

- 金币
- 103
- 好评
- 0
- 信誉
- 100
|
发表于
2026-6-13 13:11:15
来自手机
|
显示全部楼层
来自 贵州
本帖最后由 ymlgc 于 2026-6-13 13:13 编辑
# ZJS 解密工具 - Web 应用
## 项目概述
本项目是一个基于 Flask 的 ZJS 文件解密工具 Web 应用,用于解密和处理.zjs 格式脚本文件。该工具支持多种加密动作的解密、SJSON 二进制数据解码以及乱码修复功能。
## 技术架构
### 技术栈
| 分类 | 技术 | 版本 | 说明 |
|------|------|------|------|
| 后端框架 | Flask | 2.0.1 | Web 应用框架 |
| 加密库 | pycryptodome | 3.15.0 | AES 加密/解密 |
| 前端框架 | Bootstrap | 5.3.0 | UI 组件库 |
| 语言 | Python | 3.11+ | 后端开发语言 |
### 项目结构
```
decrypt_web/
├── app.py # Flask Web 应用主入口
├── requirements.txt # Python 依赖列表
├── templates/
│ └── index.html # 前端页面模板
├── uploads/ # 上传文件临时存储目录
└── decrypt_tools/ # 解密工具模块
├── decrypt_full_pipeline.py # 完整解密流程
├── sjson_decoder.py # SJSON 二进制解码器
├── fix_zjs_garble.py # ZJS 乱码修复工具
└── key_database.py # 密钥库管理
```
## 核心功能
### 1. ZJS 完整解密
**功能描述**:对 .zjs 文件进行完整解密处理,包括:
- 解析 ZJS 文件的 JSON Lines 格式
- 识别并解密加密动作(类型为 `加密动作` 的行)
- Base64 解码 → AES 双重解密 → SJSON 二进制解码
- 自动修复乱码
**解密流程**:
```
.zjs 文件 → 逐行解析 → Header保留 → 普通动作保留 → 加密动作解密
↓
Base64解码 → AES Layer1 → AES Layer2 → SJSON解码 → JSON
```
### 2. SJSON 解码
**功能描述**:对二进制 SJSON 数据进行解码,支持智能多策略 XOR 解码:
| 策略 | 名称 | 适用场景 | 说明 |
|------|------|----------|------|
| F | UTF-8字符串级CharXOR | 长文本/混合内容 | Frida验证100%正确 |
| E | UTF-8感知混合XOR | ASCII+CJK混合 | 字节级混合处理 |
| C | 每3字节第3个XOR | 纯中文短串 | 中文优化策略 |
| A | latin-1字节级XOR | 纯ASCII英文 | 英文优化策略 |
### 3. ZJS 乱码修复
**功能描述**:修复解密后 ZJS 文件中的常见乱码问题,包括:
- 特定乱码字符串替换
- 语法错误修复
- 不引入新的乱码
## API 接口
### 1. 首页
- **URL**: `/`
- **方法**: `GET`
- **功能**: 返回前端页面
### 2. 处理文件
- **URL**: `/process`
- **方法**: `POST`
- **Content-Type**: `multipart/form-data`
- **参数**:
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| file | File | 是 | 要处理的文件(.zjs 或 .bin) |
| function | String | 否 | 处理功能(默认 zjs-decrypt) |
| enc-key | String | 否 | 加密密钥(默认 YD3U@ItmK2;S(^p>) |
- **function 可选值**:
- `zjs-decrypt`: ZJS 完整解密(默认)
- `sjson-decode`: SJSON 解码
- `fix-garble`: ZJS 乱码修复
- **成功响应**:
```json
{
"success": true,
"message": "处理完成!正常动作: 10, 加密动作: 5 (成功: 5, 失败: 0), 总计: 15 个动作。",
"details": "[0] NORMAL 'action' | ...\n[1] ENCRYPTED 'code' | ...",
"download_url": "/download/tmpXXX/fixed.zjs",
"filename": "fixed.zjs"
}
```
- **失败响应**:
```json
{
"success": false,
"message": "处理失败: 错误描述"
}
```
### 3. 下载文件
- **URL**: `/download/<path:filename>`
- **方法**: `GET`
- **功能**: 下载处理后的文件
## 加密机制
### AES 双重加密
ZJS 文件中的加密动作采用 AES-CBC 模式的双重加密:
```
加密流程:
明文 → AES(ENC_KEY) → AES(CALLK) → Base64编码 → 存储
解密流程:
Base64解码 → AES(CALLK) → AES(ENC_KEY) → 明文
```
### 密钥信息
| 密钥名称 | 值 | 用途 |
|----------|-----|------|
| CALLK | "联系Q673636904" | 第一层 AES 密钥 |
| ENC_KEY | "YD3U@ItmK2;S(^p>" | 第二层 AES 密钥(默认) |
| AES_IV | "f815de617ed77f83" | AES 初始向量 |
### SJSON XOR 密钥生成
SJSON 解码使用的 XOR 密钥由 ENC_KEY 派生:
```python
def _generate_char_xor_key(seed):
parts = [str(java_hashcode(seed))]
for i in range(2, len(seed)):
sub = seed[i-2:i]
parts.append(str(java_hashcode(sub)))
return ''.join(parts)
```
生成的密钥长度为 66 字符。
## 使用指南
### 启动应用
```bash
cd decrypt_web
pip install -r requirements.txt
python app.py
```
### 访问应用
打开浏览器访问:`http://localhost:5000`
### 使用步骤
1. **选择文件**: 点击文件选择按钮,选择要处理的 .zjs 或 .bin 文件
2. **选择功能**:
- ZJS 完整解密:解密整个 ZJS 文件
- SJSON 解码:仅解码 SJSON 二进制数据
- ZJS 乱码修复:仅修复乱码
3. **选择密钥**: 从下拉菜单选择预设密钥或自定义输入
4. **开始处理**: 点击"开始处理"按钮
5. **下载结果**: 处理完成后点击"下载结果"获取文件
## 支持的文件格式
| 格式 | 扩展名 | 说明 |
|------|--------|------|
| ZJS | .zjs | 脚本文件(JSON Lines 格式) |
| SJSON | .bin | SJSON 二进制编码数据 |
## 安全性说明
1. **临时文件管理**: 上传的文件和处理结果保存在 `uploads/` 目录下的临时文件夹中
2. **文件大小限制**: 最大支持 100MB 文件上传
3. **错误处理**: 所有异常都被捕获并返回友好的错误信息
## 开发说明
### 添加新的解密策略
在 `sjson_decoder.py` 的 `xor_decode_value` 函数中添加新的解码策略:
```python
# ===== 策略X: 新策略 =====
try:
# 实现你的解码逻辑
s = your_decode_logic(data, key)
sc = score(s)
candidates.append((sc, 'X_newStrategy', s))
except Exception:
pass
```
### 添加新的乱码修复规则
在 `fix_zjs_garble.py` 的 `fix_garble` 函数中添加新的替换规则:
```python
replacements = {
# 已有规则...
'乱码文本': '正确文本',
}
```
## 许可证
本项目仅供学习和研究使用。
--- |
|