This commit is contained in:
2026-02-03 04:40:23 -08:00
parent 5b238919f5
commit 709d657906
19 changed files with 1649 additions and 85 deletions
+102
View File
@@ -0,0 +1,102 @@
# Nginx 下载日志解密工具
## 简介
此工具用于解密 Nginx 访问日志中 `/v1/common/client/download` 接口的加密 `data` 参数。
通讯密钥:`c0qhq99a-nq8h-ropg-wrlc-ezj4dlkxqpzx`
## 解密结果示例
从 Nginx 日志解密后,可以获得下载请求的详细信息,例如:
```json
{"platform":"windows"}
{"platform":"mac"}
{"platform":"android"}
{"platform":"ios"}
```
还可能包含邀请码信息:
```json
{"platform":"windows","invite_code":"ABC123"}
```
## 使用方法
### 方法 1: 使用 Shell 脚本(推荐)
```bash
# 解密单条日志
./decrypt_download.sh '172.245.180.199 - - [02/Feb/2026:04:35:47 +0000] "GET /v1/common/client/download?data=JetaR6P9e8G5lZg2KRiAhV6c%2FdMilBtP78bKmsbAxL8%3D&time=2026-02-02T04:35:15.032000 HTTP/1.1"'
# 解密多条日志
./decrypt_download.sh \
'data=JetaR6P9e8G5lZg2KRiAhV6c%2FdMilBtP78bKmsbAxL8%3D&time=2026-02-02T04:35:15.032000' \
'data=%2FFTAxtcEd%2F8T2MzKdxxrPfWBXk4pNPbQZB3p8Yrl8XQ%3D&time=2026-02-02T04:35:15.031000'
```
### 方法 2: 直接运行 Go 程序
```bash
go run cmd/decrypt_download_data/main.go
```
默认会解密内置的示例日志。
### 方法 3: 从 Nginx 日志文件批量解密
```bash
# 提取所有 download 请求并解密
grep "/v1/common/client/download" /var/log/nginx/access.log | \
while read line; do
./decrypt_download.sh "$line"
done
```
## 从 Nginx 服务器上使用
如果您在 Nginx 服务器上(root@localhost7701),可以这样操作:
1. **查找所有 download 请求**
```bash
grep "/v1/common/client/download" /var/log/nginx/access.log
```
2. **统计各平台下载量**
先解密所有日志,然后统计:
```bash
# 需要将此工具复制到服务器,或在本地解密后统计
```
3. **实时监控**
```bash
tail -f /var/log/nginx/access.log | grep "/v1/common/client/download"
```
## 技术细节
### 加密方式
- **算法**AES-CBC with PKCS7 padding
- **密钥长度**256 位(通过 SHA256 哈希生成)
- **IV 生成**:基于时间戳的 MD5 哈希
### 参数说明
- `data`: URL 编码的 Base64 加密数据
- `time`: 用于生成 IV 的时间戳字符串
### 解密流程
1. URL 解码 `data` 参数
2. Base64 解码得到密文
3. 使用通讯密钥和 `time` 生成解密密钥和 IV
4. 使用 AES-CBC 解密得到原始 JSON 数据
## 相关文件
- `cmd/decrypt_download_data/main.go` - 解密工具主程序
- `decrypt_download.sh` - Shell 脚本快捷方式
- `pkg/aes/aes.go` - AES 加密解密库
## 注意事项
⚠️ **安全提示**:通讯密钥应妥善保管,不要泄露给未授权人员。