PurrSh3ll/purrsh3ll

GitHub: PurrSh3ll/purrsh3ll

PurrSh3ll 是一款专为安全测试人员打造的离线 AI 驱动终端环境,集成了多标签终端、本地 AI 助手、RAG 知识库与语音交互,帮助用户高效完成渗透测试工作。

Stars: 4 | Forks: 0

# PurrSh3ll **专为渗透测试人员、CTF 选手和安全学习者打造的 AI 驱动终端环境。** PurrSh3ll 是一款基于 Kali Linux 构建的桌面应用程序,将多标签终端、本地 AI 助手、RAG 知识库、语音界面以及一套 AI 驱动的 CLI 工具集成于一处,且完全支持离线使用。 ## 演示 [![PurrSh3ll — 6分钟功能演示](https://img.youtube.com/vi/kpUUVxBdFqE/maxresdefault.jpg)](https://www.youtube.com/watch?v=kpUUVxBdFqE) https://www.youtube.com/watch?v=kpUUVxBdFqE ## 为什么选择 PurrSh3ll? 安全专业人员在进行长时间的测试任务时,往往需要同时兼顾数十种工具、笔记和上下文。PurrSh3ll 将所有内容集中在一个窗口中,并提供 AI 辅助功能,且无需将敏感数据发送到云端。 - **本地优先** — 您的数据永远不会离开您的设备 - **上下文感知 AI** — 助手了解您的终端历史和笔记 - **专为终端打造** — 它不是浏览器,不是 IDE,也不是聊天应用 ## 功能特性 ### 终端 - 多标签 Zsh 终端,支持标签重命名、缩放和自定义环境变量 - 完整的命令历史记录至 JSONL,包含时间戳和退出码 - 针对失败命令的错误覆盖层,提供由 AI 驱动的解释 / 修复 / 分析功能 ### AI 助手 (CLI) 直接在终端中可用的 AI 工具 — 无需 GUI: | 命令 | 描述 | |---------|-------------| | `psask` | 直接向当前活动的 AI 配置文件提问 | | `pschat` | 带有对话历史的持久化聊天会话 | | `pscmd` | 根据自然语言描述生成 shell 命令 | | `psfix` | 解释并修复上一次终端错误 | | `psnext` | 根据终端历史建议下一步渗透测试步骤 | | `pstldr` | 总结上一次命令的输出 (TL;DR) | | `psreport` | 根据终端历史生成渗透测试报告 | | `psrag` | 查询您的 RAG 知识库 | | `psview` | 使用 AI 视觉分析截图或图像 | | `pshelp` | 列出所有可用工具 | 开箱即用支持 7 种 AI 提供商:**Ollama、OpenAI、Anthropic、Groq、Gemini、OpenRouter、HuggingFace**。无需离开应用即可在它们之间切换。 ### RAG 知识库 - 索引您自己的笔记、writeup、文档和 PDF 文件 - 由 ChromaDB + fastembed 驱动 — 完全离线运行 - 从按类别(英语、多语言、特定语言、代码和视觉/多模态)分组的 30 多个 embedding 模型中进行选择 - 可选的重排序功能,提供 6 种 reranker 模型以提高结果精度 - 可配置的文件扩展名过滤器(PDF、TXT、MD、RST、CSV、JSON、XML、YAML、代码文件等) - 按文件进行包含/排除管理 — 有选择地禁用特定文件的索引 - 查询会自动利用您知识库中的相关上下文进行丰富 - 文件更改通过 watchdog 自动跟踪并重新建立索引 - 主 UI 状态栏中会显示索引进度 - AI 设置中提供专用的 RAG 标签页以进行完整配置 ### 语音界面 - 唤醒词检测 — 说出 **"Hey Jarvis"** 即可激活 - 通过 Faster-Whisper 进行语音转文本转录(tiny 模型,CPU,约 75 MB) - AI 根据您的语音生成命令 - 语音确认循环 — 说出“接受”或“取消” - 针对虚拟机进行了优化(基于队列的音频缓冲,无 xruns) ### 脚本管理器 - 从 GUI 启动、组织和记录 Python 脚本 - 自动提取帮助/docstring - 单个脚本的执行历史、备注和收藏 - 依赖检测,支持应用内安装包 ### 文件查看器 - 通过 Pygments 为 500 多种语言提供语法高亮 - 将 CSV 和 TSV 文件渲染为交互式可排序表格 - 渲染 PDF 文件并支持页面导航 - 支持在应用内直接播放音频和视频文件 - 通过 exiftool 提取元数据和 EXIF(GPS、编解码器信息、相机数据) - 专用查看器支持游戏文件 (`.game`) - 对大文件进行分块加载 - 支持正则表达式的内置搜索 ### Nmap 集成 - 保存和重用扫描配置文件(`.psnmap` 格式) - 包含时间戳的完整扫描历史 - 通过 Docker 进行 WebMap 可视化 ### AI 聊天面板 - 用于 Open WebUI 或任何兼容 OpenAI 的前端的嵌入式 Web 面板 - 从应用中运行和管理基于 Docker 的 LLM 容器 - 支持带自定义参数的 Ollama CLI 配置文件 ### 附加面板 - **笔记** — 持久化的侧边笔记,自动保存 - **代码片段** — 可重用的代码/命令片段 - **可观察变量** — 实时显示被追踪的 shell 变量 - **模式配置** — 针对不同任务的终端环境预设 ### 主题与自定义 PurrSh3ll 附带了大量内置颜色主题,并允许进行全面的视觉自定义 — 颜色、字体和布局。欢迎界面(文本、图像、背景)可以直接在 UI 中双击进行编辑。 ## 适用人群? | 受众 | 核心价值 | |----------|-----------| | **渗透测试人员** | 本地 AI、渗透测试报告生成、基于任务笔记的 RAG | | **CTF 选手** | `psnext`、`pscmd`、终端历史感知、嵌入式 CTF 游戏 | | **安全学生** | `psask`、`pschat`、与您共同成长的知识库 | | **Bug bounty 猎人** | 有条理的笔记、`psreport`、多提供商 AI | PurrSh3ll 旨在与您一起成长 — 从学习阶段到专业测试任务。 ## 系统要求 - **操作系统:** Kali Linux(推荐),Debian/Ubuntu - **Python:** 3.10+ - **语音(可选硬件):** 麦克风 所有其他依赖项(PyQt6、QTermWidget、Ollama、Docker 等)均由 `install.sh` 安装。 **内存使用情况:** | 配置 | 内存 | |---------------|-----| | 仅应用(空闲到多标签 + 浏览器) | 200 MB – 1 GB | | + RAG embedding 模型(索引期间) | +90 MB – 2.3 GB(取决于模型) | | + RAG 重排序模型(重排序期间) | +100 – 400 MB(取决于模型) | | + 语音(识别期间) | +300 – 600 MB | | + Open WebUI (Docker) | +500 MB – 1 GB | | + WebMap (Docker) | +200 – 400 MB | | 带有大型 LLM 模型(~8B)的完整堆栈 | ~12 GB+ | ## 安装说明 PurrSh3ll 附带了一个交互式安装程序,可让您准确选择要安装的组件。 ``` bash install.sh # interactive — pick components via checklist bash install.sh --auto # non-interactive — install everything ``` 核心应用、Python 包和 QTermWidget 始终会被安装。您可以选择的可选组件: | 组件 | 描述 | |-----------|-------------| | **Ollama** | 本地 LLM 推理服务器 | | **aichat** | 用于 LLM 的 CLI 前端(多提供商) | | **Docker** | 容器 runtime | | **Open WebUI** | 用于 Ollama 的 Web UI(Docker 镜像) | | **WebMap** | Nmap 结果可视化工具(Docker 镜像) | | **语音支持** | 麦克风、portaudio、Faster-Whisper | | **AI 技能** | `awesome-claude-skills-security` + `claude-code-pentest` | ### 磁盘空间要求 | 变体 | 预估大小 | |---------|-------------| | 仅核心(无语音) | ~1.8 GB | | 核心 + 语音 | ~1.9 GB | | 核心 + embedding 模型 | ~2.0 GB | | 完整(无语音,无 embedding 模型) | ~5.3 GB | | 完整(无语音) | ~5.5 GB | | 完整 + 语音 | ~5.6 GB | ### 安装完成后 ``` # 启动 Ollama(仅限 Full 版本) ollama serve # 拉取模型(仅限 Full 版本) ollama pull llama3.2 # 启动 PurrSh3ll purrsh3ll ``` ## 快速开始 ``` # 直接从终端向 AI 提问 psask "what is a SSRF vulnerability?" # 从自然语言生成命令 pscmd "find all SUID binaries on the system" # 获取下一步 pentest 的 AI 建议 psnext # 总结上一次命令输出 pstldr # 查询你的知识库 psrag "how to enumerate SMB shares" # 查看所有可用工具 pshelp ``` ## 项目结构 ``` purrsh3ll/ ├── main.py # Entry point ├── core/ │ ├── controller.py # Central singleton controller │ ├── mixins/ # UI and terminal logic mixins │ ├── rag/ # RAG engine (chunker, embedder, indexer) │ ├── voice/ # Voice pipeline (wake word → STT → AI) │ └── stylesheets/ # Modular QSS theme system ├── gui/ │ ├── builders/ # UI builder functions │ ├── widgets/ # Custom Qt widgets │ └── panels/ # Side panel widgets ├── file_loaders/ # Polymorphic file viewer (50+ formats) ├── appdata/ │ ├── terminal_modules/ # AI CLI tools (psask, pscmd, psrag…) │ ├── agent_modes/ # Pentest and CTF agent skill sets │ └── themes.json # Theme definitions └── appmodules/ ├── BrainDump/ # Default RAG knowledge base ├── Cyb3rBreak/ # Embedded CTF games (8 games) └── Cyb3rCollector/ # Organized data collection (listeners, stagers, reports) ``` ## 技术栈 | 层级 | 技术 | |-------|-----------| | GUI | PyQt6, QTermWidget | | 向量数据库 | ChromaDB | | Embeddings | fastembed(30 多种模型:英语、多语言、代码、视觉) | | 语音转文本 (STT) | Faster-Whisper(tiny, CPU int8) | | 唤醒词 | OpenWakeWord | | 音频 | sounddevice, scipy, mutagen | | PDF | PyMuPDF (fitz) | | AI 推理 | ctranslate2, onnxruntime | | 文件监视 | watchdog | | Web 面板 | PyQt6-WebEngine | ## 路线图 PurrSh3ll 正在积极开发中。这不是它的最终形态。 我的想法比时间还多 — 在全职工作之余独自开发这个项目意味着进展是稳健的,但并非立竿见影。即将推出: - **函数调用与 agentic loops** — 真正执行操作而不仅仅是提供建议的 AI - **MCP 客户端支持** — 连接到不断增长的 Model Context Protocol 服务器生态系统 - **更深度的渗透测试自动化** — 用于侦察、枚举和报告的多步 AI agents - **更好的多 agent 工作流** — 专业 agents 协作处理复杂任务 我知道还有一些地方需要改进,例如组件颜色、一些未经测试的工具以及部分 UI。我会将这些铭记在心,并随着时间的推移逐步解决它们。 ## 许可证 本项目基于 **GNU General Public License v3.0** 授权。 有关全文,请参阅 [LICENSE](LICENSE)。 因为 PurrSh3ll 使用了 PyQt6 (GPL v3),任何分发行为都必须遵守 GPL v3。 如果您需要将 PurrSh3ll 嵌入到专有产品中,请与我们联系以商讨商业许可安排。 ## 贡献 欢迎提交 Pull requests。对于重大更改,请先开启一个 issue 进行讨论,说明您想要更改的内容。 ## 致谢 - [PyQt6](https://www.riverbankcomputing.com/software/pyqt/) — Python 的 Qt6 绑定 (GPL v3) - [QTermWidget](https://github.com/lxqt/qtermwidget) — Qt 的终端模拟器组件 - [Ollama](https://github.com/ollama/ollama) — 本地 LLM runtime - [Open WebUI](https://github.com/open-webui/open-webui) — 本地模型的 Web 前端 - [OpenWakeWord](https://github.com/dscripka/openWakeWord) — 唤醒词检测 - [Faster-Whisper](https://github.com/SYSTRAN/faster-whisper) — 高效的 Whisper 实现 - [ChromaDB](https://github.com/chroma-core/chroma) — 向量数据库 - [WebMap](https://github.com/SabyasachiRana/WebMap) — Nmap 结果可视化 - [fastembed](https://github.com/qdrant/fastembed) — 轻量、快速的 embedding 库 - [Pygments](https://github.com/pygments/pygments) — 支持 500 多种语言的语法高亮
标签:AI风险缓解, DLL 劫持, 人工智能, 大语言模型, 桌面应用, 用户模式Hook绕过, 终端环境, 请求拦截, 逆向工具