123s4567/cybercrew
GitHub: 123s4567/cybercrew
一款离线的桌面取证分析平台,通过集成多款取证工具并提供图形化界面、证据链与报告,简化数字取证流程。
Stars: 0 | Forks: 0
```
██████╗██╗ ██╗██████╗ ███████╗██████╗ ██████╗██████╗ ███████╗██╗ ██╗
██╔════╝╚██╗ ██╔╝██╔══██╗██╔════╝██╔══██╗██╔════╝██╔══██╗██╔════╝██║ ██║
██║ ╚████╔╝ ██████╔╝█████╗ ██████╔╝██║ ██████╔╝█████╗ ██║ █╗ ██║
██║ ╚██╔╝ ██╔══██╗██╔══╝ ██╔══██╗██║ ██╔══██╗██╔══╝ ██║███╗██║
╚██████╗ ██║ ██████╔╝███████╗██║ ██║╚██████╗██║ ██║███████╗╚███╔███╔╝
╚═════╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ╚══╝╚══╝
v 2 . 0 . 0
```





## 📽 预览
## 目录
1. [概述](#1-overview)
2. [架构](#2-architecture)
3. [先决条件](#3-prerequisites)
4. [安装](#4-installation)
5. [快速开始](#5-quick-start)
6. [模块文档](#6-module-documentation)
7. [案例管理](#7-case-management)
8. [报告生成](#8-report-generation)
9. [配置参考](#9-configuration-reference)
10. [键盘快捷键](#10-keyboard-shortcuts)
11. [故障排除](#11-troubleshooting)
12. [贡献](#12-contributing)
13. [许可](#13-license)
14. [致谢](#14-acknowledgements)
## 1. 概述
### 什么是 CyberCrew?
CyberCrew v2.0 是一款**完全离线**的跨平台桌面取证应用程序,面向数字取证调查人员、网络安全学生和非专业响应者。它封装了行业标准的 CLI 取证工具(nmap、tshark、exiftool、ADB、Sleuth Kit、John the Ripper、Tesseract、Nikto)到单个 cohesive 图形界面中,提供实时输出流、不可变证据链、案例管理和 HTML/PDF 报告生成。
您不需要记住命令标志。不需要串联 Bash 管道。打开 CyberCrew,创建案例,选择模块,填写目标,然后点击 **LAUNCH**。
### 为什么选择 CyberCrew 而非其他替代方案?
| 功能 | CyberCrew v2.0 | Autopsy | Volatility | Bash 脚本 |
|---|---|---|---|---|
| 完全离线 | ✅ | ✅ | ✅ | ✅ |
| 统一 GUI(覆盖 5 个领域) | ✅ | ❌ | ❌ | ❌ |
| 实时流输出 | ✅ | ❌ | ❌ | ✅(仅终端) |
| SHA-256 证据链 | ✅ | 部分 | ❌ | 手动 |
| 多实例并行执行 | ✅ | ❌ | ❌ | ❌ |
| 内置报告生成 | ✅ | ✅ | ❌ | ❌ |
| 可篡改审计日志 | ✅ | 部分 | ❌ | ❌ |
| 单安装,无需 Java | ✅ | ❌(Java) | ✅ | ✅ |
| 移动取证(ADB) | ✅ | 部分 | ❌ | 手动 |
| 面向非专业人士 | ✅ | 部分 | ❌ | ❌ |
### 截图指南
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ ◉ CYBERCREW │ DASHBOARD NETWORK COMPUTER MOBILE MEDIA WEBAPP │ CC-2025│
├─────────────────────────────────────────────────────────────────────────────┤
│ ● network-scan-1 ● port-scan-2 + NEW INSTANCE │
├──────────────────────────────────┬──────────────────────────────────────────┤
│ │ RISK: HIGH 7.4 │
│ [TERMINAL OUTPUT PANEL] │ ───────────────── │
│ $ nmap -sV -v 192.168.1.0/24 │ SCAN METRICS │
│ [+] Nmap scan report for... │ Hosts Up ............ 12 │
│ PORT STATE SERVICE │ Open Ports ............ 47 │
│ 22/tcp open OpenSSH 8.9 │ Services ............ 23 │
│ 80/tcp open Apache 2.4.54 │ ───────────────── │
│ 443/tcp open nginx │ OPEN PORTS │
│ │ 22 OPEN ssh │
├──────────────────────────────────│ 80 OPEN http │
│ CASE LOG │ 443 OPEN https │
│ 12:34:01 [INFO] Scan started ├──────────────────────────────────────────┤
│ 12:34:22 [DONE] 3 hosts up │ EVIDENCE CHAIN │
│ │ ✓ 3 ⟳ 1 • 2 │
└──────────────────────────────────┴──────────────────────────────────────────┘
```
*面板(从左到右、从上到下):标题栏(含导航)、实例栏、带实时工具输出的终端面板、案例日志面板、带动画计数器的指标面板、带哈希状态的证据面板。*
### 功能矩阵
| 功能 | 状态 | 模块 |
|---|---|---|
| 主机发现(nmap -sn) | ✅ 稳定 | 网络 |
| 端口扫描(nmap -sV) | ✅ 稳定 | 网络 |
| 漏洞扫描(nmap --script=vuln) | ✅ 稳定 | 网络 |
| 实时数据包捕获(tshark) | ✅ 稳定 | 网络 |
| 离线 PCAP 分析 | ✅ 稳定 | 网络 |
| 磁盘成像(dd) | ✅ 稳定 | 计算机 |
| 文件恢复(photorec) | ✅ 稳定 | 计算机 |
| 文件系统时间线(sleuthkit) | ✅ 稳定 | 计算机 |
| OCR 提取(tesseract) | ✅ 稳定 | 计算机 |
| 密码破解(john) | ✅ 稳定 | 计算机 |
| ADB 设备信息 | ✅ 稳定 | 移动 |
| 媒体提取(adb pull) | ✅ 稳定 | 移动 |
| 通话记录提取 | ✅ 稳定 | 移动 |
| 短信提取 | ✅ 稳定 | 移动 |
| GPS 数据提取 | ✅ 稳定 | 移动 |
| 联系人提取 | ✅ 稳定 | 移动 |
| 图像 EXIF 分析(exiftool) | ✅ 稳定 | 媒体 |
| 视频元数据提取 | ✅ 稳定 | 媒体 |
| PDF 元数据分析 | ✅ 稳定 | 媒体 |
| Office 文档元数据 | ✅ 稳定 | 媒体 |
| PE 可执行文件分析 | ✅ 稳定 | 媒体 |
| 邮件头/MX 分析 | ✅ 稳定 | WebApp |
| WhatsApp 导出分析 | ✅ 稳定 | WebApp |
| 网站漏洞扫描(nikto) | ✅ 稳定 | WebApp |
| 域名侦察(whois/dig) | ✅ 稳定 | WebApp |
| URL 查询 | ✅ 稳定 | WebApp |
| HTML 报告生成 | ✅ 稳定 | 报告 |
| PDF 报告生成 | ✅ 稳定 | 报告 |
| SHA-256 证据链 | ✅ 稳定 | 核心 |
| 多实例并行执行 | ✅ 稳定 | 核心 |
| 不可篡改审计日志 | ✅ 稳定 | 核心 |
| 案例管理(SQLite) | ✅ 稳定 | 核心 |
## 2. 架构
### 应用流程
```
flowchart TD
A([main.py]) --> B[QApplication Init]
B --> C[Load Fonts]
B --> D[Init SQLite Database]
B --> E[Create ForensicsEngine]
C & D & E --> F[MainWindow.show]
F --> G{User Navigation}
G --> H[Dashboard Page]
G --> I[Module Pages\nNetwork / Computer / Mobile / Media / WebApp]
I --> J[Create Case\nCC-YYYY-XXXX]
J --> K[Fill Module Parameters]
K --> L[validate_input]
L -->|Invalid| M[ModuleInputError → UI Warning]
L -->|Valid| N[build_command → list of str]
N --> O[ForensicsEngine.launch\nQProcess — NO shell=True]
O --> P{QProcess Signals}
P --> Q[readyReadStandardOutput\n→ TerminalPanel]
P --> R[readyReadStandardError\n→ TerminalPanel red]
P --> S[finished\n→ on_complete]
P --> T[errorOccurred\n→ on_error]
Q --> U[parse_output\n→ MetricsPanel update]
Q --> V[finding_discovered\n→ CaseLogPanel]
S --> W[ArtifactHasher.hash_file_async\nQThread — non-blocking]
W --> X[EvidencePanel: HASHING → VERIFIED]
W --> Y[write_hash_sidecar .sha256]
X --> Z[ReportGenerator\nJinja2 HTML + WeasyPrint PDF]
Z --> AA([dist/report.html / report.pdf])
```
### 技术栈
| 组件 | 库 | 版本 | 用途 |
|---|---|---|---|
| GUI 框架 | PyQt6 | ≥ 6.6.0 | 所有 UI 部件、信号/槽 |
| 异步子进程 | QProcess | 内置 | 非阻塞工具执行 |
| 后台线程 | QThread | 内置 | SHA-256 哈希 |
| 数据库 ORM | SQLModel | ≥ 0.0.18 | SQLite 架构 + 查询 |
| 数据库驱动 | SQLite | 内置 | 嵌入式存储 |
| 实时图表 | PyQtGraph | ≥ 0.13.3 | 网络流量图表 |
| 报告模板 | Jinja2 | ≥ 3.1.3 | HTML 模板 |
| PDF 生成 | WeasyPrint | ≥ 61.0 | HTML → PDF 转换 |
| 分发 | PyInstaller | ≥ 6.3.0 | AppImage / .exe |
| 输入净化 | 自定义 | — | 路径/注入预防 |
## 3. 先决条件
### 系统要求
| 要求 | 最低 | 推荐 |
|---|---|---|
| 操作系统 | Ubuntu 22.04 / Windows 10 | Kali Linux 2024.x / Windows 11 |
| Python | 3.11 | 3.12 |
| 内存 | 4 GB | 8 GB |
| 磁盘空间 | 2 GB 可用 | 10 GB 可用 |
| 显示器 | 1280×720 | 1920×1080 |
| 网络 | 可选 | 可选 |
### Linux 系统所需系统二进制文件
```
sudo apt-get install -y \
nmap \
tshark \
android-tools-adb \
sleuthkit \
foremost \
libimage-exiftool-perl \
john \
tesseract-ocr \
tesseract-ocr-eng \
nikto \
tcpdump \
ffmpeg \
whois \
dnsutils \
openssl \
net-tools
```
### Windows 系统所需系统二进制文件
通过 winget 安装:
```
winget install Npcap # Required for tshark on Windows
winget install WiresharkFoundation.Wireshark # Includes tshark
winget install Google.PlatformTools # Android ADB
```
然后手动安装:
- [Windows ExifTool](https://exiftool.org/install.html)
- [John the Ripper (Jumbo)](https://www.openwall.com/john/)
- [Windows 平台的 Tesseract OCR](https://github.com/UB-Mannheim/tesseract/wiki)
- [Nikto](https://github.com/sullo/nikto)(需要 Perl)
### ADB 设置(移动模块)
```
# Linux — 允许无 root 权限使用 ADB
sudo usermod -aG plugdev $USER
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="*", MODE="0664", GROUP="plugdev"' \
| sudo tee /etc/udev/rules.d/51-android.rules
sudo udevadm control --reload-rules && sudo udevadm trigger
# 验证设备是否被检测到:
adb devices
```
在 Android 设备上:启用 **开发者选项 → USB 调试**。
### 根权限与非根权限能力矩阵
| 工具 | 需要 root 权限 | 说明 |
|---|---|---|
| nmap(主机发现、端口扫描) | ❌ 否 | SYN 扫描需要 root;TCP 连接扫描无需 root |
| nmap(漏洞脚本) | ❌ 否 | 部分脚本在 root 下更快 |
| tshark(实时捕获) | ✅ 是或 `wireshark` 用户组 | `sudo usermod -aG wireshark $USER` |
| dd(磁盘镜像) | ✅ 是 | 向 `/dev/sdX` 写入需要 root |
| photorec | ❌ 否 | 可读取图像文件而无需 root |
| fls / mactime(sleuthkit) | ❌ 否 | 读取图像文件 |
| tesseract | ❌ 否 | 用户空间 OCR |
| john | ❌ 否 | 哈希破解是 CPU 密集型 |
| adb | ❌ 否 | 需要设备上启用 USB 调试 |
| exiftool | ❌ 否 | 读取文件元数据 |
| nikto | ❌ 否 | Web 扫描器 |
| whois / dig | ❌ 否 | DNS 查询 |
## 4. 安装
### 🐧 Kali Linux(推荐)
大多数取证工具已预装在 Kali 中:
```
# 1. 克隆仓库
git clone https://github.com/your-org/cybercrew.git
cd cybercrew
# 2. 运行自动化安装程序
chmod +x scripts/install_linux.sh
sudo ./scripts/install_linux.sh
# 3. 激活虚拟环境
source venv/bin/activate
# 4. 启动
python main.py
```
### 🐧 Ubuntu 22.04 / Debian 12
```
# 1. 更新系统
sudo apt-get update && sudo apt-get upgrade -y
# 2. 安装 Python 3.11+
sudo apt-get install -y python3.11 python3.11-venv python3.11-dev
# 3. 克隆仓库
git clone https://github.com/your-org/cybercrew.git
cd cybercrew
# 4. 创建虚拟环境
python3.11 -m venv venv
source venv/bin/activate
# 5. 安装 Python 依赖
pip install --upgrade pip
pip install -r requirements.txt
# 6. 安装系统取证工具
sudo apt-get install -y nmap tshark android-tools-adb sleuthkit \
foremost libimage-exiftool-perl john tesseract-ocr nikto \
whois dnsutils tcpdump ffmpeg openssl
# 7. 安装字体
mkdir -p ~/.local/share/fonts
cp assets/fonts/*.ttf ~/.local/share/fonts/
fc-cache -fv
# 8. 将用户加入 wireshark 用户组(用于无需 root 的 tshark)
sudo usermod -aG wireshark $USER
newgrp wireshark
# 9. 验证安装
python main.py --check-deps
```
### 🐧 Arch Linux / Manjaro
```
# 1. 通过 pacman 和 AUR 安装系统依赖
sudo pacman -S --noconfirm python nmap wireshark-qt android-tools \
sleuthkit perl-image-exiftool john tesseract tcpdump ffmpeg whois
# AUR:photorec(testdisk)、nikto、foremost
yay -S testdisk nikto foremost --noconfirm
# 2. 克隆 + 设置
git clone https://github.com/your-org/cybercrew.git && cd cybercrew
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
```
### 🪟 Windows 10 / 11
```
# 以管理员身份在 PowerShell 中运行
# 1. 通过 winget 安装先决条件
winget install Python.Python.3.12
winget install Npcap
winget install WiresharkFoundation.Wireshark
winget install Google.PlatformTools
# 2. 关闭并重新打开 PowerShell(刷新 PATH)
# 3. 克隆仓库
git clone https://github.com/your-org/cybercrew.git
cd cybercrew
# 4. 运行 Windows 安装脚本
.\scripts\install_windows.ps1
# 5. 启动
.\venv\Scripts\Activate.ps1
python main.py
```
### 字体安装
CyberCrew 使用 **JetBrains Mono** 和 **IBM Plex Mono**。它们包含在 `assets/fonts/` 中。如果需要系统级安装:
```
# Linux
cp assets/fonts/*.ttf ~/.local/share/fonts/
fc-cache -fv
# macOS
cp assets/fonts/*.ttf ~/Library/Fonts/
# Windows — 双击每个 .ttf 文件并点击“安装”
```
### 验证安装
```
python main.py --check-deps
```
预期输出:
```
CyberCrew v2.0.0 — Dependency Check
────────────────────────────────────
✓ nmap /usr/bin/nmap
✓ tshark /usr/bin/tshark
✓ adb /usr/bin/adb
✓ fls /usr/bin/fls
✓ exiftool /usr/bin/exiftool
✓ john /usr/sbin/john
✓ tesseract /usr/bin/tesseract
✓ nikto /usr/bin/nikto
✓ whois /usr/bin/whois
✓ dig /usr/bin/dig
────────────────────────────────────
10/10 dependencies satisfied. Ready to launch.
```
## 5. 快速开始
### 步骤 1 — 启动并创建案例
```
source venv/bin/activate
python main.py
```
点击仪表板上的 **+ 新建案例**。输入:
- **案例名称**:例如 `Incident-2025-001`
- **调查员**:您的姓名
- **描述**:可选
系统自动分配案例编号:`CC-2025-0001`。
### 步骤 2 — 启动首个扫描
1. 点击导航栏中的 **网络**
2. 点击 **+ 新建实例**
3. 选择工具:**端口扫描器**
4. 输入目标:`192.168.1.0/24`
5. 点击 **▶ 启动**
观察终端实时流式输出 nmap 结果。指标面板会自动更新。
### 步骤 3 — 导出报告
1. 扫描完成(状态:**已完成**)后,点击 **报告**
2. 选择格式:**HTML** 或 **PDF**
3. 点击 **生成报告**
4. 报告保存至 `evidence/<案例编号>/report.*`
## 6. 模块文档
### 6.1 网络模块
封装 `nmap` 和 `tshark` 用于网络侦察和流量分析。
#### 工具
| 工具 | 二进制 | 描述 |
|---|---|---|
| 主机发现 | nmap | IP 范围 ping 扫描(-sn) |
| 端口扫描 | nmap | 服务版本检测(-sV) |
| 漏洞扫描 | nmap | NSE 漏洞脚本(--script=vuln) |
| 数据包捕获 | tshark | 实时接口捕获 |
| 数据包分析 | tshark | 离线 PCAP 分析 |
#### 用法:端口扫描器
**参数:**
- `target`(必需)— IP 地址、CIDR 范围或主机名
- `ports`(可选)— 端口范围,例如 `1-1024`、`80,443,8080`
- `timing`(可选)— nmap 定时模板:T1–T5
**示例输出:**
```
[*] Starting Nmap 7.94 scan of 192.168.1.1
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu
80/tcp open http Apache httpd 2.4.54
443/tcp open ssl/http nginx 1.22.0
[*] Nmap done: 1 IP address (1 host up) scanned in 8.42 seconds
```
#### 用法:数据包捕获
**参数:**
- `interface`(必需)— 网络接口(例如 `eth0`、`wlan0`)
- `filter`(可选)— BPF 过滤表达式(例如 `tcp port 80`)
- `count`(可选)— 停止捕获 N 个数据包
- `duration`(可选)— 停止捕获 N 秒后
### 6.2 计算机模块
封装 `dd`、`photorec`、`sleuthkit`、`tesseract` 和 `john` 用于磁盘和文件取证。
#### 工具
| 工具 | 二进制 | 描述 |
|---|---|---|
| 磁盘镜像 | dd | 块级取证磁盘镜像 |
| 文件恢复 | photorec | 恢复已删除/丢失的文件 |
| 时间线 | fls + mactime | 文件系统活动时间线 |
| OCR | tesseract | 从图像提取文本 |
| 密码破解 | john | 破解密码哈希 |
#### 用法:磁盘镜像
**参数:**
- `source`(必需)— 设备路径(例如 `/dev/sdb`)— **需要 root**
- `output`(可选)— 输出镜像路径(未提供时自动生成)
- `block_size`(可选)— dd 块大小,默认为 `64K`
#### 用法:密码破解器
**参数:**
- `hash_file`(必需)— 包含密码哈希的文件
- `wordlist`(可选)— 单词表文件路径(例如 `/usr/share/wordlists/rockyou.txt`)
- `format`(可选)— 哈希格式(例如 `md5crypt`、`sha512crypt`、`NT`)
### 6.3 移动模块
封装 Android Debug Bridge (`adb`) 用于 Android 设备取证。
#### 工具
| 工具 | 命令 | 描述 |
|---|---|---|
| ADB 信息 | adb shell getprop | 设备型号、操作系统版本、序列号 |
| 媒体提取 | adb pull | 从设备拉取照片、视频、音频 |
| 通话记录 | content query | 提取通话历史 |
| GPS | dumpsys location | 提取位置数据 |
| 短信 | content query | 提取文本消息 |
| 联系人 | content query | 提取联系人列表 |
#### 先决条件
- 设备上必须启用 USB 调试
- 设备需通过 USB 或 ADB over TCP/IP 连接
- 运行 `adb devices` 确认设备已识别后再启动
#### 用法:媒体提取器
**参数:**
- `serial`(可选)— 设备序列号(连接多个设备时需要)
- `remote_path`(可选)— 设备上的源路径,默认为 `/sdcard/DCIM/`
### 6.4 媒体模块
封装 `exiftool` 用于从媒体文件和文档中提取取证元数据。
#### 工具
| 工具 | 文件类型 | 关键元数据 |
|---|---|---|
| 图像 | JPG、PNG、TIFF、RAW、HEIC | GPS、相机型号、时间戳、EXIF |
| 视频 | MP4、AVI、MKV、MOV | 时长、帧率、编解码器、创建日期 |
| PDF | PDF | 作者、创建者、修改日期、嵌入内容 |
| Office | DOCX、XLSX、PPTX | 作者、最后保存者、公司、修订次数 |
| 可执行文件 | EXE、DLL、SYS | 编译时间戳、OriginalFilename、公司名、PE 版本 |
#### 异常检测
CyberCrew 自动标记:
- **照片中的编辑软件**(例如照片中的 Photoshop EXIF)
- **GPS/时间戳不匹配**(EXIF 与文件系统不一致)
- **PE 编译时间早于 Windows NT 发布**(时间戳篡改指示器)
- **OriginalFilename 不匹配**(EXE 重命名以绕过检测)
### 6.5 Web 应用程序模块
封装 `nikto`、`whois` 和 `dig` 用于网络存在性和域名调查。
#### 工具
| 工具 | 二进制 | 描述 |
|---|---|---|
| 邮件分析 | dig | MX、SPF、DMARC 记录查询 |
| WhatsApp 分析 | (解析器)| 解析 WhatsApp `.txt` 导出 |
| 网站扫描器 | nikto | Web 漏洞扫描 |
| URL 查询 | whois | 域名注册信息 |
| 域名侦察 | dig | 完整 DNS 记录枚举 |
#### 用法:网站扫描器
**参数:**
- `url`(必需)— 目标 URL(必须以 `http://` 或 `https://` 开头)
- `ports`(可选)— 端口列表,例如 `80,443,8443`
- `tuning`(可选)— Nikto 调整选项(1-9)
## 7. 案例管理
### 创建案例
每个调查都关联一个**案例**。案例存储:
- 自动分配的案例编号(`CC-YYYY-XXXX`)
- 调查员姓名
- 状态:OPEN / ACTIVE / SUSPENDED / CLOSED
- 所有工件、发现、事件日志和报告
### 案例流程
```
CREATE → OPEN → ACTIVE (tools running) → SUSPENDED (optional) → CLOSED
```
### 证据目录结构
```
evidence/
└── CC-2025-0001/
├── network/
│ ├── port_scan_20250101_143022.xml
│ ├── port_scan_20250101_143022.xml.sha256
│ └── capture_20250101_143055.pcap
├── computer/
│ ├── disk_image_20250101_150000.dd
│ └── disk_image_20250101_150000.dd.sha256
├── mobile/
│ └── media/
├── media/
│ └── image_metadata_20250101_151200.json
├── webapp/
│ └── nikto_scan_20250101_152000.txt
└── reports/
├── report_20250101_160000.html
└── report_20250101_160000.pdf
```
### 证据链
每个工件文件都会:
1. 在后台线程中计算 **SHA-256 哈希**(非阻塞)
2. 生成 **`.sha256` 旁侧文件**(sha256sum 格式)
3. 在 `artifacts` 表中创建数据库记录(包含哈希、路径和时间戳)
4. 在 `event_log` 表中创建审计日志条目
随时验证完整性:**证据面板 → 验证全部**
## 8. 报告生成
### 生成报告
从任意模块页面:
1. 点击 **报告** 标签页
2. 从下拉菜单选择 **案例**
3. 选择 **格式**:HTML 或 PDF
4. 点击 **生成**
### 报告结构
1. **页眉** — 案例编号、调查员、生成时间戳
2. **统计概览** — 总发现数、工件数、严重级别计数、事件数
3. **执行摘要** — 可编辑文本字段
4. **发现** — 按严重性排序的卡片(CRITICAL → INFO)
5. **证据链** — 包含 SHA-256 哈希的所有工件表
6. **事件时间线** — 按时间排序的审计日志
7. **工具输出日志** — 每个会话的原始工具输出
### 报告位置
```
evidence//reports/report_.html
evidence//reports/report_.pdf
```
## 9. 配置参考
配置存储在 SQLite 的 `settings` 表中。通过 **仪表板 → 设置** 访问。
| 键 | 默认值 | 有效值 | 描述 |
|---|---|---|---|
| `max_instances` | `8` | `1–32` | 最大并行工具实例数 |
| `evidence_base_dir` | `./evidence` | 任意可写路径 | 所有证据的根目录 |
| `auto_hash_artifacts` | `true` | `true/false` | 自动为所有输出文件计算 SHA-256 |
| `hash_chunk_size` | `65536` | `4096–1048576` | 哈希计算的字节块大小 |
| `terminal_scrollback` | `10000` | `1000–100000` | 保留的终端最大行数 |
| `auto_scroll_terminal` | `true` | `true/false` | 跟踪最新输出 |
| `report_format_default` | `html` | `html/pdf/both` | 默认报告格式 |
| `investigator_name` | `""` | 长度 ≤64 的任意字符串 | 预填充调查员字段 |
| `font_size_terminal` | `11` | `8–16` | 终端字体大小(磅) |
| `animation_enabled` | `true` | `true/false` | 低功耗系统可禁用动画 |
| `nmap_default_timing` | `T4` | `T1–T5` | 默认 nmap 定时模板 |
| `tshark_default_count` | `0` | `0=无限制` | 默认数据包捕获限制 |
## 10. 键盘快捷键
| 快捷键 | 操作 |
|---|---|
| `Ctrl+T` | 在当前模块中新建实例 |
| `Ctrl+W` | 关闭当前活动实例 |
| `Ctrl+Q` | 退出 CyberCrew(优雅关闭) |
| `F5` | 刷新当前页面 |
| `F11` | 切换全屏 |
| `↑` / `↓` | 在终端中导航命令历史 |
| `Enter` | 在终端输入框中提交命令 |
| `Ctrl+L` | 清除终端输出 |
| `Ctrl+S` | 将终端输出保存到文件 |
| `1` | 切换到仪表板标签 |
| `2` | 切换到网络标签 |
| `3` | 切换到计算机标签 |
| `4` | 切换到移动标签 |
| `5` | 切换到媒体标签 |
| `6` | 切换到 WebApp 标签 |
## 11. 故障排除
### 问题 1:`tshark: Couldn't run /usr/bin/dumpcap in child process`
**原因**:用户不在 `wireshark` 用户组中。
**修复**:
```
sudo usermod -aG wireshark $USER
newgrp wireshark
```
### 问题 2:`ModuleNotFoundError: No module named 'PyQt6'`
**原因**:Python 虚拟环境未激活,或依赖未安装。
**修复**:
```
source venv/bin/activate
pip install -r requirements.txt
```
### 问题 3:ADB 显示 "no devices/emulators found"
**原因**:USB 调试未启用,或 ADB 服务器未启动。
**修复**:
```
adb kill-server
adb start-server
adb devices
```
在 Android 设备上启用 **设置 → 开发者选项 → USB 调试**。在设备上接受 RSA 密钥提示。
### 问题 4:`dd: error writing '/dev/sdb': No space left on device`
**原因**:输出磁盘比源磁盘空间小。
**修复**:确保目标位置的可用空间至少与源设备大小一致。使用 `lsblk` 检查大小。
### 问题 5:字体未正确显示(显示为方块或方框)
**原因**:未安装 JetBrains Mono 或 IBM Plex Mono。
**修复**:
```
cp assets/fonts/*.ttf ~/.local/share/fonts/
fc-cache -fv
# 重启 CyberCrew
```
### 问题 6:`nmap: You requested a scan type which requires root privileges`
**原因**:SYN 扫描(`-sS`)需要原始套接字访问权限。
**变通方案**:CyberCrew 默认使用 TCP 连接扫描,无需 root。如需 SYN 扫描,以 `sudo python main.py` 启动 CyberCrew(不推荐常规使用)。
### 问题 7:PDF 报告为空或生成失败
**原因**:WeasyPrint 未安装或缺少 GTK 依赖。
**修复**:
```
# Linux
sudo apt-get install -y libpango-1.0-0 libpangocairo-1.0-0 libcairo2 \
libgdk-pixbuf2.0-0 libffi-dev shared-mime-info
pip install weasyprint
# Windows — WeasyPrint 在 Windows 上需要额外设置
# 参见:https://doc.courtbouillon.org/weasyprint/stable/first_steps.html
```
### 问题 8:应用程序启动时崩溃并显示 `QXcbConnection: Could not connect to display`
**原因**:在无头服务器上运行,无图形显示。
**修复**:CyberCrew 需要图形显示。在无头服务器使用虚拟显示:
```
sudo apt-get install -y xvfb
Xvfb :99 -screen 0 1920x1080x24 &
export DISPLAY=:99
python main.py
```
### 问题 9:`john: No password hashes loaded`
**原因**:哈希文件格式不支持或为空。
**修复**:使用 `format` 参数明确指定哈希格式。使用 `john --list=formats` 查看支持的格式。
### 问题 10:证据验证失败(红色显示 **FAILED** 状态)
**原因**:文件在初始哈希计算后被修改(检测到篡改),或 `.sha256` 旁侧文件被删除。
**修复**:这是**证据链告警**。不要修改证据目录中的文件。如果文件已合法重新处理,请删除原始工件记录并重新收集。
## 12. 贡献
我们欢迎贡献!提交 Pull Request 前请阅读以下指南。
### 开发环境设置
```
git clone https://github.com/your-org/cybercrew.git
cd cybercrew
python3.11 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pip install -r requirements-dev.txt # Testing + linting deps
```
### 代码规范
- 仅使用 Python 3.11+
- 所有公共函数和方法使用类型注解
- 每个类和方法使用 Google 风格文档字符串
- 禁止使用 `shell=True`
- 禁止直接调用小部件到部件的方法 — 使用 Qt 信号/槽
- 所有用户输入必须通过 `InputSanitizer` 净化后使用
- 为所有新模块和安全敏感代码编写测试
### 运行测试
```
pytest tests/ -v --cov=src --cov-report=html
```
### 提交 Pull Request
1. Fork 本仓库
2. 创建功能分支:`git checkout -b feature/my-new-module`
3. 编写代码和测试
4. 运行 `pytest` — 所有测试必须通过
5. 运行 `ruff check src/` — 无 lint 错误
6. 提交包含变更说明和测试计划的 PR
有关添加新取证模块的说明,请参见 [docs/plugin_development.md](docs/plugin_development.md)。
## 13. 许可
```
MIT License
Copyright (c) 2025 CyberCrew Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```
## 14. 致谢
CyberCrew v2.0 建立在以下优秀的开源项目之上:
| 项目 | 许可 | 在 CyberCrew 中的用途 |
|---|---|---|
| [nmap](https://nmap.org/) | NPSL / GPL v2 | 网络扫描和漏洞检测 |
| [Wireshark / tshark](https://www.wireshark.org/) | GPL v2 | 数据包捕获和 PCAP 分析 |
| [ExifTool](https://exiftool.org/) | Perl Artistic License | 所有类型媒体的元数据提取 |
| [Android Debug Bridge (ADB)](https://developer.android.com/studio/command-line/adb) | Apache 2.0 | Android 设备取证 |
| [Sleuth Kit (fls, mactime)](https://www.sleuthkit.org/) | CPL / IBM / GPL | 文件系统时间线和分析 |
| [PhotoRec / TestDisk](https://www.cgsecurity.org/) | GPL v2 | 文件恢复和磁盘恢复 |
| [John the Ripper](https://www.openwall.com/john/) | GPL v2+ (Jumbo) | 密码哈希破解 |
| [Tesseract OCR](https://github.com/tesseract-ocr/tesseract) | Apache 2.0 | 光学字符识别 |
| [Nikto](https://github.com/sullo/nikto) | GPL v2 | Web 应用程序漏洞扫描 |
| [PyQt6](https://riverbankcomputing.com/software/pyqt/) | GPL v3 / Commercial | 应用程序 GUI 框架 |
| [PyQtGraph](https://www.pyqtgraph.org/) | MIT | 实时图表渲染 |
| [SQLModel](https://sqlmodel.tiangolo.com/) | MIT | 数据库 ORM |
| [Jinja2](https://jinja.palletsprojects.com/) | BSD 3-Clause | 报告 HTML 模板 |
| [WeasyPrint](https://weasyprint.org/) | BSD 3-Clause | HTML → PDF 转换 |
| [JetBrains Mono](https://www.jetbrains.com/lp/mono/) | OFL 1.1 | 主要 UI 字体 |
| [IBM Plex Mono](https://www.ibm.com/plex/) | OFL 1.1 | 终端输出字体 |
使用 🔬 为数字取证社区构建。
**[报告错误](https://github.com/your-org/cybercrew/issues)** · **[请求功能](https://github.com/your-org/cybercrew/issues)** · **[文档](docs/)**
标签:CyberCrew, Facebook API, GhostArchive, PyQt6, Python取证, SHA-256, Wildcard支持, 取证GUI, 取证工具包装, 取证工具集, 哈希校验, 开源取证, 数字取证, 数据获取, 桌面取证, 漏洞挖掘, 电子取证, 磁盘镜像, 离线取证, 自动化报告, 自动化脚本, 证据链管理, 跨平台取证, 逆向工具