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