103 lines
2.6 KiB
Markdown
103 lines
2.6 KiB
Markdown
# 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 加密解密库
|
||
|
||
## 注意事项
|
||
|
||
⚠️ **安全提示**:通讯密钥应妥善保管,不要泄露给未授权人员。
|