kazim-45/milkyway

GitHub: kazim-45/milkyway

一个统一的 CTF 工具编排框架,通过模块化星球设计将安全测试工具和版本控制整合在交互式 Shell 中。

Stars: 1 | Forks: 0

``` ================================================================================ ███╗ ███╗██╗██╗ ██╗ ██╗██╗ ██╗██╗ ██╗ █████╗ ██╗ ██╗ ████╗ ████║██║██║ ██║ ██╔╝╚██╗ ██╔╝██║ ██║██╔══██╗╚██╗ ██╔╝ ██╔████╔██║██║██║ █████╔╝ ╚████╔╝ ██║ █╗ ██║███████║ ╚████╔╝ ██║╚██╔╝██║██║██║ ██╔═██╗ ╚██╔╝ ██║███╗██║██╔══██║ ╚██╔╝ ██║ ╚═╝ ██║██║███████╗██║ ██╗ ██║ ╚███╔███╔╝██║ ██║ ██║ ╚═╝ ╚═╝╚═╝╚══════╝╚═╝ ╚═╝ ╚═╝ ╚══╝╚══╝ ╚═╝ ╚═╝ ╚═╝ The Galactic CTF Orchestrator Modular · Versioned · AI-Powered · Planetary ================================================================================ ``` # MilkyWay CTF 套件 **银河系 CTF 编排器** [![Python](https://img.shields.io/badge/python-3.9%2B-blue?logo=python&logoColor=white)](https://python.org) [![版本](https://img.shields.io/badge/version-2.1.0-green?logo=github)](https://github.com/kazim-45/milkyway/releases) [![许可证](https://img.shields.io/badge/license-MIT-yellow)](LICENSE) [![PyPI](https://img.shields.io/badge/PyPI-milkyway--ctf-orange?logo=pypi&logoColor=white)](https://pypi.org/project/milkyway-ctf) [![平台](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Kali-lightgrey)](https://github.com/kazim-45/milkyway) [![欢迎提交 PR](https://img.shields.io/badge/PRs-welcome-brightgreen)](CONTRIBUTING.md) *11 个星球 · 60 个命令 · 纯 Python 核心 · 零 "工具未找到" 错误*
## 📸 截图 以下是来自 `assets/` 目录的当前 MilkyWay 界面快照。 ![MilkyWay 仪表盘截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/3f2f8eb781181603.png) ![MilkyWay 命令流程截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/687f282591181604.png) ![MilkyWay 挑战工作区截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/9a33d3311e181606.png) ## 什么是 MilkyWay? MilkyWay 是一个**模块化、版本可控的 CTF 工具包**,它将所有安全领域统一在一个交互式 Shell 中。无需再在多个终端之间切换、忘记尝试过的内容、或在比赛中途忙着安装工具。MilkyWay 为你提供一个提示符 — `mw>` — 让你从零开始到拿到 flag。 ### 它解决的问题 每个 CTF 选手都深知这种痛苦: - 花第一个小时安装 Kali、工具和字典,而不是 hacking - 因为忘记输出内容,同一个 fuzz 工具跑了五遍 - 关闭终端后丢失了所有思路 - 队友之间重复做同样的工作 ### MilkyWay 的解决方案 ``` mw> 1 ← Enter Mercury (Web Security) ┌─ ☿ MERCURY — Web Security ─────────────────────────────┐ │ 1. mercury fuzz Directory/file fuzzing │ │ 2. mercury sql SQL injection scan │ │ 3. mercury request Craft HTTP request │ │ ... │ └────────────────────────────────────────────────────────┘ [mercury] mw> 1 ? Target URL: http://target.com/FUZZ ? Extensions (Enter to skip): .php,.html $ mw mercury fuzz http://target.com/FUZZ --extensions .php,.html ▶ Task: mercury fuzz http://target.com/FUZZ… ✓ Executing mercury ✓ FOUND [200] /admin.php [12345b] FOUND [301] /backup/ [0b] ✓ Completed | saturn recorded run #42 ``` 一切都被记录。每个运行都可重放。每个结果都可搜索。## 功能亮点 | 功能 | 描述 | |---------|-------------| | **11 个星球** | 一个工具包涵盖所有主要 CTF 领域 | | **60 个命令** | 完全编号,可从单一 Shell 导航 | | **星球子 Shell** | 进入一次星球,运行编号命令 — 无需重复输入 | | **引导式参数** | 在星球中输入 `1` → 交互式提示参数 | | **Saturn VCS** | 每个命令自动记录,可对比,可重放 | | **纯 Python 核心** | 100% 备用实现 — 零 "工具未找到" | | **挑战工作区** | 每个挑战的脚手架文件夹,包含 notes、solve.py、outputs | | **AI 助手 (Pluto)** | 关键词引擎 + Ollama/OpenAI 用于工具建议 | | **Tab 补全** | 全部 11 个星球的 146 个补全项 | | **彩色 UI** | 每个星球颜色编码,带实时状态指示器 | | **会话导出** | 一条命令将会话导出为可用的 Markdown 格式 | ## 11 个星球
#符号星球领域命令
1MercuryWeb 安全 fuzz sql request headers extract scan
2Venus密码学 identify hash crack encode decode xor factor rsa
3Earth取证 info carve strings hexdump steg pcap
4Mars逆向工程 disassemble info symbols trace r2
5Jupiter二进制利用 checksec rop template cyclic
6Neptune云与杂项 jwt cloud url
7Uranus移动端 / IoT decompile info permissions instrument adb strings ssl-bypass
8🌋Vulcan网络侦察与 OSINT portscan quickscan whois dns subdomain banner
9🪐Titan密码攻击 brute spray wordlist cewl analyze mutate
10PlutoAI 助手 suggest analyze cheatsheet
11Saturn版本控制 log diff redo status annotate export
## 安装 ### 选项 1 — pip(推荐) ``` pip install milkyway-ctf mw ``` 一条命令安装 MilkyWay **和所有 Python 安全库**: `capstone`、`pwntools`、`ROPgadget`、`pycryptodome`、`androguard`、`dnspython`、 `PyJWT`、`paramiko`、`beautifulsoup4`、`sympy`、`pillow`、`passlib` 等。 **核心功能无需单独的 `apt install` 或 `brew install`。** ### 选项 2 — 一行脚本 ``` curl -sSL https://raw.githubusercontent.com/kazim-45/milkyway/main/scripts/install.sh | bash ``` 可选包含系统工具(nmap、hashcat、binutils…): ``` bash scripts/install.sh --full ``` ### 选项 3 — apt(Ubuntu / Kali) ``` sudo add-apt-repository ppa:kazim-45/milkyway sudo apt update sudo apt install milkyway-ctf mw ``` ### 选项 4 — Docker(零依赖) ``` docker run -it --rm -v $(pwd):/workspace ghcr.io/kazim-45/milkyway ``` 一切预装:所有 Python 库、nmap、hashcat、ffuf、nuclei、binutils、tshark 等。 ### 选项 5 — 从源码安装 ``` git clone https://github.com/kazim-45/milkyway cd milkyway pip install -e ".[dev]" mw ``` ## 快速开始 ``` # 启动交互式shell mw # 进入Mercury(Web安全)- 停留直到输入b mw> 1 [mercury] mw> 1 ← fuzz (asks for URL interactively) [mercury] mw> 2 ← sql [mercury] mw> b ← back to main menu # 或直接在任意位置输入命令 mw> venus decode 'aGVsbG8=' --enc base64 mw> earth strings ./suspicious_file --grep flag mw> jupiter cyclic 200 mw> pluto suggest "I found a base64 string in the HTTP response" # 查看你尝试过的所有内容 mw> saturn log mw> saturn redo 42 mw> saturn diff 12 13 # 组织你的工作 mw> challenge new pico_web1 --category web --url https://play.picoctf.org/... cd ~/milkyway-challenges/pico_web1 mw> challenge note pico_web1 "Found SQL injection at /login" ``` ## Shell 导航 MilkyWay Shell 以 SET 和 Metasploit 为模型,有一个关键改进:**你保持在星球内**,直到明确返回。 ``` Main menu Planet sub-shell ────────── ──────────────── mw> 1 → [mercury] mw> 1 ← runs fuzz (prompts URL) → [mercury] mw> 2 ← runs sql → [mercury] mw> fuzz http://site.com/FUZZ ← direct → [mercury] mw> b ← back to main menu mw> 2 → [venus] mw> 1 ← runs identify → [venus] mw> 5 ← runs decode → [venus] mw> 0 ← back to main menu ``` **在任何星球内:** - `1`–`N` — 运行该编号命令(交互式参数提示) - `b` / `back` / `0` — 返回主菜单 - `h` / `help` — 重新显示该星球的命令 - `cmd [args]` — 直接输入任何命令,无需星球前缀 - `planet cmd [args]` — 完全限定的命令也可以工作 ## Saturn — Hacking 的版本控制 你运行的每个命令都会自动版本化。 SQLite 数据库位于 `~/.milkyway/global.db`(全局)和 `.milkyway/local.db`(每个挑战)。WAL 模式,并发安全。## 挑战工作区 ``` mw> challenge new hackthebox_pwn1 --category pwn --url https://app.hackthebox.com/... # 自动生成的结构: ~/milkyway-challenges/hackthebox_pwn1/ ├── .milkyway/ ← Local Saturn DB + config ├── files/ ← Challenge downloads ├── solutions/ │ └── solve.py ← Pre-filled pwntools template ├── outputs/ ← Tool outputs (linked from Saturn) ├── notes.md ← Your observations └── README.md ← Auto-generated with metadata # 在工作时添加笔记 mw> challenge note hackthebox_pwn1 "Binary has no canary — ret2win possible" # 导航到它 cd $(mw challenge cd hackthebox_pwn1) ``` ## 纯 Python 备用实现 即使外部工具未安装,MilkyWay 也能运行**每个命令**。 | 外部工具 | MilkyWay 备用实现 | |---------------|-------------------| | `ffuf` | 并发 `urllib` fuzzer — 2000 路径,20 线程 | | `sqlmap` | 基于错误 + 布尔 SQLi 探测器 — 6 个 payload 家族 | | `curl` | 通过 `urllib.request` 的完整 HTTP 客户端 | | `hashcat` / `john` | Python 字典破解器(MD5/SHA1/SHA256/SHA512)| | `binwalk` | 签名扫描器 — 提取 PNG/JPEG/ZIP/PDF/ELF | | `xxd` | 16 字节十六进制格式化器 | | `strings` | 基于 `re` 的字节模式提取器 | | `steghide` | JPEG/PNG 追加数据扫描器 | | `tshark` | 基于结构的 `.pcap` 数据包读取器 | | `objdump` | **capstone** 多架构反汇编器(pip 安装)| | `checksec` | ELF 头解析器 — NX/PIE/RELRO/Canary/Fortify | | `ROPgadget` | capstone 返回反向追踪 gadget 查找器 | | `nmap` | 纯 `socket` 并发端口扫描器 | | `whois` | 直接 WHOIS socket 查询 | ## Pluto — AI 助手 ``` # 基于关键字(始终有效) mw> pluto suggest "I found a file with no extension, might be an image" # → earth info, earth carve, earth steg # 使用Ollama(本地,免费) ollama pull mistral mw> config set pluto.backend ollama mw> pluto suggest "RSA challenge with small e" # 使用OpenAI mw> config set pluto.backend openai mw> config set pluto.openai_api_key sk-... mw> pluto suggest "JWT token with HS256 and I have the source code" # 快速参考表 mw> pluto cheatsheet web mw> pluto cheatsheet crypto mw> pluto cheatsheet forensics ``` ## 配置 ``` mw> config show # View all settings mw> config set challenges_dir ~/ctf # Change challenges directory mw> config set pluto.backend ollama # AI backend mw> config set pluto.model mistral # Ollama model mw> tools # Check tool availability mw> tools --install # Show install hints for missing tools ``` 配置文件位于 `~/.milkyway/config.yaml`。## 架构 ``` milkyway/ ├── milkyway/ │ ├── cli/ │ │ ├── main.py # Root Click CLI (1,544 lines) │ │ └── planets/ │ │ ├── mercury.py # Web Security │ │ ├── venus.py # Cryptography │ │ ├── earth.py # Forensics │ │ ├── mars.py # Reverse Engineering │ │ ├── jupiter.py # Binary Exploitation │ │ ├── neptune.py # Cloud & Misc │ │ ├── uranus.py # Mobile / IoT │ │ ├── vulcan.py # Network Recon │ │ ├── titan.py # Password Attacks │ │ └── pluto.py # AI Assistant │ ├── core/ │ │ ├── db.py # Saturn SQLite engine (509 lines) │ │ ├── runner.py # Safe subprocess wrapper │ │ ├── challenge_manager.py # Workspace scaffolding │ │ └── config.py # YAML config │ ├── shell.py # Interactive shell v2.1 │ └── tui/app.py # Textual TUI dashboard ├── tests/ # pytest suite ├── debian/ # Debian packaging ├── .github/workflows/ # CI/CD (test + publish) ├── scripts/ │ ├── install.sh │ ├── publish_pypi.sh │ └── setup_apt_repo.sh └── Dockerfile # Full Kali-based image ``` **技术栈:** Python 3.9+ · Click · Rich · Textual · SQLite (WAL) · capstone · pwntools ## 开发 ``` # Fork + 克隆 git clone https://github.com/kazim-45/milkyway cd milkyway python3 -m venv .venv && source .venv/bin/activate pip install -e ".[dev]" # 功能分支工作流 git checkout -b feat/your-feature # ... 进行更改 ... pytest tests/ -v git commit -m "feat(planet): describe your change" git push origin feat/your-feature # 在GitHub上打开PR # 发布 git tag v2.1.0 git push origin v2.1.0 # GitHub Actions → auto-publishes to PyPI ``` 完整工作流程见 [`docs/GIT_AND_RELEASE_GUIDE.md`]( **由 [Kazim](https://github.com/kazim-45) 构建 · [github.com/kazim-45/milkyway](https://github.com/kazim-45/milkyway)** *"并非所有漫游者都迷失了方向 — 有些人只是在 fuzzing。"* 在 GitHub 上给我们加星 — 每一个星标都在帮助构建终极 CTF 工具包。
标签:AI安全, Chat Copilot, CIDR输入, CTF框架, MilkyWay, PE 加载器, Python, TGT, 夺旗比赛, 安全可观测性, 安全培训, 安全竞赛, 攻防演练, 教育平台, 无后门, 无线安全, 模块化, 版本控制, 红队训练, 网络安全, 网络安全审计, 逆向工具, 隐私保护, 靶场平台