203
This commit is contained in:
@@ -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 加密解密库
|
||||
|
||||
## 注意事项
|
||||
|
||||
⚠️ **安全提示**:通讯密钥应妥善保管,不要泄露给未授权人员。
|
||||
Reference in New Issue
Block a user