rlwilliamson-dev/d3cyph3r

GitHub: rlwilliamson-dev/d3cyph3r

一个基于浏览器的终端式 CTF 平台,通过七个安全分支的实战关卡帮助 DevOps 和运维人员学习防御性网络安全与合规审计。

Stars: 0 | Forks: 0

# D3CYPH3R 一个基于浏览器的终端 CTF,专为学习网络安全的 DevOps 工程师、SRE 和系统管理员设计。在游戏中,你扮演 **Driftwood Systems** 的一名新员工,这是一家中型技术咨询公司,任何时候都有大约 600 名顾问参与约 80 个客户项目。每个关卡都会让你置身于一台你接手的、感觉真实的设备上——这可能是一台离职顾问的笔记本电脑、一个停滞的客户项目环境、一个被遗忘的审计产物,或者是一张提交给内部法务的不在场证明照片——你需要找出其中遗留的暴露问题。 这些谜题紧密贴合拥有轮转项目和共享客户访问权限的咨询公司中发生的真实情况。每个关卡结尾的复盘都会深入引申到相关的控制措施(NIST 800-53、NIST 800-171、CIS Controls v8、CIS AWS Foundations Benchmark、CWE)、技术手段(MITRE ATT&CK)、适用的严苛法规(GLBA、PCI-DSS、HIPAA、FERPA、CMMC、SOC 2、NAIC、NYDFS),以及在现实世界中覆盖这些领域的认证(Security+、CySA+、PenTest+、CISSP、OSCP、CHFI、GCFE / GCFA、AWS Security Specialty、CCSP、CCSK)。 各个关卡中贯穿了反复出现的角色、客户以及技术债务。 全部七个分支(Linux、Network、Crypto、Web、Forensics、OSINT、Cloud)均已提供可从头玩到尾的 level0 + level1 链路,现在这七个分支也都更新到了 level2(v1.23.0 + v1.25.0 + v1.26.0 + v1.27.0 + v1.28.0 + v1.29.0 + v1.30.0)。7 个分支共 21 个关卡。每个关卡都引入一个新概念,并将玩家带入一个处于不同合规体系下的全新客户项目: | 分支 | 已发布关卡 | 客户 | 合规要求 | |---|---|---|---| | Linux | `level0@linux` ("Daniel's Last Day"), `level1@linux` ("The Backup Daniel Forgot"), `level2@linux` ("Daniel's Forgotten Cron") | Halton Bank | GLBA | | Network | `level0@network` ("Atlas Health Perimeter Check"), `level1@network` ("The Map Marcus Didn't Mean to Share"), `level2@network` ("What the Cert Knew") | Atlas Health | HIPAA | | Crypto | `level0@crypto` ("Theo's Safer API Key"), `level1@crypto` ("Theo's Signature That Wasn't"), `level2@crypto` ("Theo's Quick Hash") | Vesta Retail | PCI-DSS | | Web | `level0@web` ("Meridian's Forgotten Backup Folder"), `level1@web` ("Carlos's Login Wall"), `level2@web` ("The Search Bar That Talks") | Meridian State University | FERPA | | Forensics | `level0@forensics` ("Reed's Soccer Alibi"), `level1@forensics` ("What the Logs Saw"), `level2@forensics` ("What Reed's Browser Saw") | Polaris Defense Systems | CMMC / NIST 800-171 | | OSINT | `level0@osint` ("Veridian's Open Letter"), `level1@osint` ("Aaron's Weekend Project"), `level2@osint` ("The Internet Never Forgets") | Veridian Analytics | HIPAA / HITRUST CSF | | Cloud | `level0@cloud` ("Coverline's Twelfth Bucket"), `level1@cloud` ("The Migration Table Nobody Dropped"), `level2@cloud` ("The Key Nobody Turned Off") | Coverline Insurance | SOC 2 / NAIC / NYDFS / GLBA | ## 在本地运行 ES modules 需要 HTTP origin,因此通过 `file://` 打开 `index.html` 无法运行。在项目根目录下执行: ``` python3 -m http.server 8000 # 然后打开 http://localhost:8000 ``` 或者使用任何其他静态服务器(`npx serve`、`live-server` 等)。 D3CYPH3R **专为桌面端设计**。这些谜题需要使用真实键盘——Tab 自动补全、Ctrl 快捷键、复杂的 pipeline。移动设备默认会看到警告拦截页面;点击 **Continue anyway** 将以移动端模式启动引擎,并在屏幕键盘上方提供一排软键盘,包含 Tab / Esc / Ctrl-C / `|` / `&&` / `$` / `_` 等(v1.21.0)。本网站还可作为 **Progressive Web App** 安装——在访问几次后,Chrome / Edge / Safari 16.4+ 会显示“安装”按钮;安装后,该应用将拥有自己的 Dock 图标,在无边框窗口中打开,并支持离线使用。 ## 目前可以做什么 从大厅中选择一个分支——所有七个分支均可直接访问入口,无需密码: ``` guest@d3cyph3r:~$ ssh level0@linux # File reading / credential hunting guest@d3cyph3r:~$ ssh level0@network # Port scanning / perimeter audit guest@d3cyph3r:~$ ssh level0@crypto # Encoding ≠ encryption guest@d3cyph3r:~$ ssh level0@web # HTTP directory enumeration guest@d3cyph3r:~$ ssh level0@forensics # EXIF metadata / insider-threat guest@d3cyph3r:~$ ssh level0@osint # Breach-corpus credential reuse guest@d3cyph3r:~$ ssh level0@cloud # S3 misconfiguration / SOC 2 audit ``` 每个分支的 `level0` 都是入口点——无需密码,会引导你了解一个新概念,并在最后提供一份复盘,引用相关的 CWE / 框架 / MITRE 技术。每个分支中的 level1 都受到玩家在 level0 中恢复的凭证限制(Daniel 的 `creds.txt`、Marcus 未轮换的默认密码、解码后的 base64 API key、Meridian 泄露的数据库密码、Chen 中士的交接存档密码、Aaron 复用的撞库密码以及 Coverline 硬编码的 RDS 主密码)。每个 level1 又会泄露为最终 level2 准备的凭证——各分支内的凭证链正是贯穿始终的主线。 大厅(`guest@d3cyph3r`)将项目列表渲染为一棵可折叠树(v1.10.0):默认情况下,每个分支仅显示为一行;输入 `tracks ` 可展开分支,查看其关卡阵容、标题、计算出的难度层级(Routine / Live / Escalated / Critical / Crisis——输入 `tiers` 查看定义)以及预计耗时。包含已访问关卡的分支会在下一次渲染大厅时自动展开。首次访问的用户会看到引导式的 FIRST STEPS 区块,并可运行 `tutorial start` 获取手把手的操作指南(v1.12.0);回访的用户会看到欢迎回归摘要,并带有“Continue: ssh level@”的推荐建议(v1.18.0)。其他玩家界面:`progress --detail` 列出已发现的隐藏奖励 + 每个关卡的耗时;`achievements` 列出包含 20 个成就的层级(v1.14.0);`themes` 可在 11 种调色板之间切换(v1.13.0);`save` 会生成可移植的进度代码(v1.20.0)。在任何关卡中输入 `help` 可查看完整的命令参考。 ## 攻略 每个关卡都配备了一篇详尽的配套指南,位于 `/walkthroughs/` 子站下: ``` https://www.d3cyph3r.com/walkthroughs/ ``` 这些攻略(每篇约 7,000 字,分为九个编号章节)涵盖了通关路径、深入解析的漏洞类别、现实世界的案例(Uber 2014 / Optus 2022 / Toyota 2022 / SolarWinds / MOVEit / Snowflake 等)、框架和认证关联(SOC 2 / NIST / NAIC / NYDFS / GLBA / OWASP / CIS / CWE)、MITRE ATT&CK 映射、防御者行动建议以及精选的延伸阅读。它们包含剧透——只有在解决关卡后才可阅读。 该子站自 v1.0.0 起即可被公开索引——搜索引擎流量找到这些攻略是预期行为,每篇攻略顶部的剧透警告旨在防止意外剧透。基于哈希的路由意味着可以直接将攻略 URL 添加为书签。 ## 组织结构 ``` d3cyph3r/ ├── index.html Entry point — boots the engine ├── 404.html Themed 404 page (Azure SWA fallback) ├── style.css Dark terminal theme (+ 10 alt themes, v1.13.0) ├── favicon.svg D3CYPH3R favicon ├── og-image.png Open Graph preview image (1200×630) ├── manifest.webmanifest PWA manifest — name / icons / display (v1.21.0) ├── sw.js Service worker — runtime caching (v1.21.0) ├── icon-192.png PWA icon (Android home screen, v1.21.0) ├── icon-512.png PWA icon (high-res, splash, v1.21.0) ├── icon-maskable.png PWA icon (Android adaptive shape, v1.21.0) ├── icon-180.png PWA icon (iOS apple-touch-icon, v1.21.0) ├── robots.txt Crawl policy + sitemap pointer ├── sitemap.xml Search-engine site index ├── staticwebapp.config.json Azure SWA routing + headers + 404 override ├── README.md You're here ├── CHANGELOG.md Release history (Keep a Changelog format) ├── CONTRIBUTING.md Guide for forkers / first-time contributors ├── SECURITY.md Vulnerability disclosure policy ├── LICENSE MIT ├── assets/ │ └── og-template.html HTML source used to render og-image.png ├── js/ │ ├── main.js Boots the app, runs mobile gate, registers SW │ ├── mobile-gate.js Mobile warning + "Continue anyway" bypass (v1.21.0) │ ├── terminal/ Output, input, cursor, clock, DOM refs │ │ ├── clock.js Top-bar clock tick │ │ ├── dom.js Cached DOM-element references │ │ ├── input.js Keystroke handling + Tab autocomplete + history │ │ ├── output.js Print-to-terminal helpers + CSS classes (+ printRich, v1.19.0) │ │ ├── prompt.js PS1 escape-code rendering (v1.9.0) │ │ ├── softkeys.js Mobile soft-key row above on-screen keyboard (v1.21.0) │ │ └── theme.js 11-theme registry + setTheme/cycleTheme (v1.13.0) │ ├── engine/ Game state, SSH, lobby, dispatch │ │ ├── state.js Live bindings (currentLevelKey, processEnv, isMobileMode, ...) │ │ ├── execute.js Per-Enter dispatch (echo → ssh → commands) │ │ ├── ssh.js Connect / disconnect / password-prompt / pivot flow │ │ ├── lobby.js Lobby render + first-visit onboarding + welcome-back summary │ │ ├── tracks.js Track metadata (track key → display name, etc.) │ │ ├── tiers.js Computed difficulty tiers (Routine → Crisis) (v1.10.0) │ │ ├── progress.js sessionStorage persistence (visited levels) │ │ ├── persistence.js Opt-in localStorage mirror layer (v1.11.0) │ │ ├── leveltimer.js Per-level time tracking + solve detection (v1.16.0) │ │ ├── achievements.js 20-achievement registry + checker (v1.14.0) │ │ ├── bonus.js Bonus-find trigger matcher (v1.9.0) │ │ ├── suggest.js Levenshtein "did you mean" suggestion (v1.15.0) │ │ ├── savecode.js Packed-binary save/restore encode + decode (v1.20.0) │ │ ├── pwa.js Service-worker registration + update detection (v1.21.0) │ │ ├── expand.js Per-token expansion ($VAR / ${VAR} / $? / $(...)) │ │ ├── parse.js Tokenizer + statement chain (&&/||/;), quote-aware │ │ ├── validate.js Schema validator (warns on level data bugs at init) │ │ └── version.js Canonical VERSION + release checklist comment │ ├── commands/ One file per track + a shell-builtins file │ │ ├── index.js Assembles COMMANDS map from per-track modules │ │ ├── linux.js ls / cd / cat / grep / find / ps / … │ │ ├── network.js nmap / netstat / whois / dig │ │ ├── crypto.js base64 / rot13 / xxd / john / xor / jwt / … │ │ ├── web.js curl / gobuster / cookies │ │ ├── forensics.js file / strings / exif / evtx / sqlite3 / sha256sum / … │ │ ├── osint.js sherlock / hibp / wayback / crtsh / github / … │ │ ├── cloud.js aws (s3/iam/ec2/sts) + psql │ │ ├── text.js wc / sort / uniq / cut / tr / awk (pipe-friendly) │ │ ├── system.js which / type / id / uname / date / uptime / hostname │ │ ├── sysinspect.js crontab / last / who / w / lsof / ss / journalctl / systemctl / dmesg │ │ ├── netinspect.js ip / arp / ping / traceroute / nslookup / host / nc │ │ ├── format.js tar / gunzip / zcat (+ shared X.509 renderer) │ │ ├── structured.js jq / gpg / openssl (multi-subcommand) │ │ ├── git.js git log / show / diff / status / blame / config │ │ ├── readonly-stubs.js chmod / mv / rm / sudo / su (read-only errors) │ │ ├── learning.js hint / man / what-is / walkthrough / progress / search │ │ ├── env.js export / env / unset / set (v1.9.0) │ │ ├── jobs.js jobs / fg / bg / kill / wait / disown (v1.9.0) │ │ ├── lobby.js tracks / tiers (lobby-tree controls, v1.10.0) │ │ ├── tutorial.js tutorial + first-visit guided tour (v1.12.0) │ │ ├── themes.js theme / themes commands (v1.13.0) │ │ ├── achievements.js achievements + --detail (v1.14.0) │ │ ├── savecode.js save / restore commands (v1.20.0) │ │ ├── pwa.js sw / reload commands (v1.21.0) │ │ ├── help-strings.js --help block registry + auto-extractor (v1.17.0) │ │ ├── man-pages.js NAME/SYNOPSIS/DESCRIPTION/EXAMPLES for every command │ │ ├── glossary.js what-is term definitions (frameworks / regs / CWEs) │ │ └── shell.js help / clear / report / exit / logout │ ├── fs/ Per-level filesystem helpers │ │ ├── flatten.js Walks the level.fs tree → level.files flat map │ │ ├── glob.js Wildcard expansion (* and ?) for path-aware commands │ │ └── resolve.js cwd-aware path resolution (cd/cat/ls) │ └── util/ Pure helpers │ ├── hex.js Hex encode / decode │ └── rot13.js ROT13 cipher ├── levels/ │ ├── index.js Registers tracks → LEVELS map; flatten init │ ├── linux.js Linux track (level0 + level1 + level2) — Halton Bank / GLBA │ ├── network.js Network track (level0 + level1 + level2) — Atlas Health / HIPAA │ ├── crypto.js Crypto track (level0 + level1 + level2) — Vesta Retail / PCI-DSS │ ├── web.js Web track (level0 + level1 + level2) — Meridian State U / FERPA │ ├── forensics.js Forensics track (level0 + level1 + level2) — Polaris DS / CMMC │ ├── osint.js OSINT track (level0 + level1 + level2) — Veridian / HIPAA + HITRUST │ └── cloud.js Cloud track (level0 + level1 + level2) — Coverline / SOC 2 + NAIC ├── walkthroughs/ Long-form solve guides (separate subsite) │ ├── index.html Walkthrough reader shell │ ├── walkthrough.css Docs-reader theme (distinct from main terminal) │ ├── walkthrough.js Hash router + markdown renderer (vendored marked.js) │ ├── vendor/marked.esm.min.js Markdown → HTML library (CC-BY-3.0 attribution in vendor/) │ ├── linux/level0.md One walkthrough per shipped level — 21 total as of v2.0.0 │ └── (etc., one per level) ├── tests/ @playwright/test suite + OG-image generator │ ├── playwright.config.cjs Per-spec parallelism config (v1.24.0+) │ ├── lib/helpers.cjs Shared dispatchCmd / bootAndWait / waitForOutput │ ├── specs/*.spec.cjs One spec file per track + cross-cutting suites │ ├── generate-og-image.cjs Renders assets/og-template.html → og-image.png │ ├── package.json @playwright/test + chromium dependencies │ └── package-lock.json └── .github/ └── workflows/ Azure SWA CI/CD — sharded playtest_job on push to main (v1.24.2+) ``` 添加新关卡只需在 `levels/.js` 下添加一个对象字面量。基础 schema 记录在 `levels/linux.js` 的顶部;各分支的扩展(如 Forensics 的 `evtxLogs`、OSINT 的 `github`、Cloud 的 `postgres` 等)记录在每个分支关卡文件的顶部。 有关引擎架构、命令分发模型以及各分支约定的更深入背景,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 路线图 全部七个分支均已发布 level0、level1 和 level2——并且自 **v2.0.0 "Apprentice"** 起,每个关卡还内置了游戏内的 `hint`(提示)阶梯。为这一里程碑奠定基础的 level2 扫尾工作分散在 v1.23.0–v1.30.0 期间完成;而 v2.0.0 本身则是一次加冕——一次针对润色和一致性的检查(所有 21 个关卡的提示覆盖、框架引用刷新、文档准确性),没有加入新玩法,这反映了 v1.0.0 "Foundation" 为 level0 + level1 工作加冕的方式。每一个已发布的 level2 反过来都会泄露为 level3 准备的线索凭证,因此随着 level3 内容逐个分支构建,各分支内的凭证链依然保持一致。新关卡将一次通过一个 PR 发布——发布历史请参阅 [CHANGELOG.md](CHANGELOG.md)。 ## 关于本项目 D3CYPH3R 是一款网络安全学习工具。这些谜题在安全的沙盒中教授防御性审计技能——所引用的技术(MITRE ATT&CK、CWE、NIST 800-53、CIS Controls)与专业安全团队每天用来在自己基础设施上*发现*此类暴露问题的技术相同。**请勿将这些技术用于您不拥有或未经授权测试的系统。** 在大多数司法管辖区,未经授权的访问是非法的(如美国的 CFAA、英国的 Computer Misuse Act 以及其他地区的类似法律)。 **隐私。** D3CYPH3R 默认使用 `sessionStorage` 进行进度跟踪——关闭标签页,进度就会重置。`localStorage` 用于存储三项内容:您的主题偏好(v1.13.0)、您的命令历史记录(约 50 条,用于 ↑/↓ 回溯调用),以及——仅当您通过 `progress save-on` 命令明确选择启用(v1.11.0)时——一份会话进度的镜像副本,使其在同一设备的多次浏览器会话中得以保留。一个短生命周期的 sessionStorage 标志(v1.21.0)会记住您在当前标签页的移动端拦截页面上是否点击过“Continue anyway”。自 v1.20.0 起,`save` 命令会生成一个可移植的进度代码,您可以通过 `restore ` 将其粘贴到任何其他浏览器中——无需账号,无需服务器,无需遥测。自 v1.21.0 起,service worker 会缓存静态资源以供离线游玩;缓存按版本命名空间划分,可通过 `sw clear` 清除。不使用 Cookie,不使用分析工具,不使用遥测,不使用第三方脚本。 如果您在实时网站上打开 DevTools,您可能会看到 CSP 错误,这些错误拦截了来自 `static.cloudflareinsights.com`(Cloudflare Web Analytics 信标)或 `/cdn-cgi/challenge-platform/...`(Cloudflare 的机器人检测脚本)的脚本。这是 Cloudflare 自动注入到代理域名上的内容——如果不更换 CDN 提供商,这超出了我们的直接控制范围。我们的 `Content-Security-Policy: script-src 'self'` 有意拦截了它们。**这些错误是可见的证据,证明“无第三方脚本”的声明是由浏览器强制执行的,而不仅仅是写在这个 README 中。** 页面加载时的 `console.info` 会在控制台打印指向此段落的信息,以免读者将这些拦截误认为是实际的代码错误。 ## 已实现的命令 完整的命令参考请参阅终端内的 `help`。各分支详细说明: - **Linux:** `ls` / `cd` / `cat` / `head` / `tail` / `stat` / `ps` / `diff` / `pwd` / `whoami` / `echo` / `grep` / `find` / `readlink` / `realpath` / `basename` / `dirname` / `env` / `history` - **Network:** `nmap` (+ `-sV`) / `netstat` / `whois` / `dig` (+ `@server` / `-t TYPE` / `-x IP` / `+short` / `+trace` / `AXFR`) - **Crypto:** `base64` / `rot13` / `xxd` / `decode-hex` / `hash-id` / `john` / `xor` / `jwt` - **Web:** `curl` (+ `-X` / `-d` / `-H` / `-I` / `-L` / `-o` / `-kvs`) / `gobuster` (+ `-u` / `-w` / `-x` / `-t`) / `cookies` - **Forensics:** `file` (+ `*`) / `strings` / `exif` / `evtx` (+ `-id`) / `sqlite3` (只读 SQLite 查询 — `.tables`, `.schema`, SELECT with WHERE/LIKE/ORDER BY/LIMIT/COUNT / `sha256sum` / `md5sum` - **OSINT:** `sherlock` / `hibp` / `wayback` / `crtsh` / `theharvester` / `shodan` / `ipinfo` / `github` (+ `/repo` + `file `) - **Cloud:** `aws s3 ls` / `aws s3 cp` / `aws iam list-users` / `aws iam list-attached-user-policies` / `aws iam get-policy` / `aws iam list-access-keys` / `aws iam get-access-key-last-used` / `aws iam get-account-summary` / `aws ec2 describe-instances` / `aws ec2 describe-security-groups` / `aws sts get-caller-identity` / `psql` (+ `-d` / `\l` / `\dt` / `SELECT … FROM … [LIMIT N]`) - **文本处理 (支持管道):** `wc` / `sort` / `uniq` / `cut` / `tr` / `awk` / `sed` (`s/pat/repl/[g]`, `-n 'Np'`) / `printf` / `jq` (`.path` 查询, `-r` / `-c`) - **系统信息:** `which` / `type` / `id` / `uname` / `date` / `uptime` / `hostname` - **系统检查:** `crontab -l` / `last` / `who` / `w` / `lsof` / `ss` / `journalctl` / `systemctl status` / `dmesg` / `df` / `du` / `free` - **网络检查:** `ip addr` / `ip route` / `arp -a` / `ping` / `traceroute` / `nslookup` / `host` / `nc -zv` - **格式检查:** `openssl x509` / `openssl rand` / `openssl dgst` / `openssl enc -d` / `openssl s_client` / `tar tvf` / `tar xvf` / `gunzip` / `zcat` - **版本控制:** `git log` / `git show` / `git diff` / `git status` / `git blame` / `git config` / `git remote` / `git branch` - **加密检查:** `gpg --list-keys` / `gpg --verify` / `gpg --decrypt` - **只读存根** (对沙盒友好的错误): `chmod` / `chown` / `mv` / `cp` / `rm` / `mkdir` / `rmdir` / `touch` / `ln` / `sudo` / `su` / `useradd` / `passwd` - **学习辅助:** `hint` (+ `reset` / `list`) / `man ` / `what-is ` / `walkthrough` / `progress` (+ `--detail` 列出隐藏奖励, v1.10.0; + `save-on` / `save-off` / `reset` 用于开启 localStorage 持久化, v1.11.0) / `tutorial` (+ `start` 用于交互式指南, v1.12.0) / `achievements` (+ `--detail` 查看进度比例, 建立在隐藏奖励之上的 20 个成就层, v1.14.0) / `search ` - **无状态保存/恢复 (v1.20.0):** `save` (生成可移植的进度代码) / `restore ` (验证 + 对比差异 + 提示) / `restore --preview ` (只解码不执行修改) - **PWA 控制 (v1.21.0):** `sw` (+ `status` / `update` / `clear`) 检查并控制 service worker / `reload` 刷新页面,应用所有等待中的 SW 更新 - **Shell 环境 (v1.9.0):** `export` / `env` / `unset` / `set` / `FOO=bar` / `FOO=bar cmd` / `PS1` 替换 (`\u`, `\h`, `\H`, `\w`, `\W`, `\$`) - **作业控制 (v1.9.0):** `cmd &` / `jobs` / `fg` / `bg` / `kill` / `wait` / `disown` - **通用 `--help` (v1.17.0):** 每个命令都会响应 `--help`,提供 3-5 行的用法说明 + 指向 `man ` 的指针以获取完整详细信息 - **Shell:** `clear` / `help` / `report` / `ssh` / `exit` / `logout` / `tracks` (大厅树展开/折叠, v1.10.0) / `tiers` (难度层级说明, v1.10.0) / `themes` + `theme ` + `theme next`/`prev` (11 种主题选择器, v1.13.0) 该终端支持真正的 bash 形态的组合层(v1.8.0 + v1.9.0): - 管道: `cmd1 | cmd2 | cmd3` - 链式执行: `cmd1 && cmd2`, `cmd1 || cmd2`, `cmd1 ; cmd2` - 后台运行: `cmd &` (捕获到作业表;在此沙盒中为同步运行) - 通配符: `*.txt`, `log?` - 大括号扩展: `cat file{1,2,3}.txt` - Shell 变量: `$USER`, `$HOME`, `${VAR}`, `$$` (字面量 `$`) - 可写环境变量: `export FOO=bar`, `FOO=bar`, `unset FOO` - 自定义提示符: `export PS1='> '` (PS1 转义码: `\u`/`\h`/`\w`/`\$`) - 多主机枢纽: 在关卡内部执行 `ssh user@internal-host`,通过 `exit` 退回原处 - 上次退出码: `$?` - 命令替换: `$(cmd)` - 识别引号的标记化: `'single'` 是字面量,`"double"` 会扩展变量 - Readline 快捷键: `Ctrl-A` / `Ctrl-E` / `Ctrl-W` / `Ctrl-U` / `Ctrl-K` / `Ctrl-Y` / `Alt-B` / `Alt-F` / `Alt-.` - 跨标签页会话的持久化命令历史 - 重放模式: 重新进入已解决的关卡会跳过密码拦截 - 隐藏奖励: 在 `progress` 中显示的可选发现项 - 拼写建议: 对于未知命令,提供最接近匹配的 "Did you mean: ``?" (v1.15.0) - 关卡耗时跟踪: 总时间 + 首次通关耗时,显示在 `progress --detail` 以及重访时的连接横幅中 (v1.16.0) - 标准化的 `cmd --help` 适用于所有命令 —— 简短的用法说明块 + 指向 `man ` 的指针 (v1.17.0) - 针对回访玩家的大厅界面润色:欢迎回归摘要、下一个关卡的建议、完全通关分支的完成标志、成就提示 (v1.18.0) - 大厅视觉润色:项目列表中采用芯片样式的进度/层级徽章,使用更粗的裸箭头图标 (▼/▶/✓) 替换了带括号的 `[▾]`/`[▸]`/`[✓]` (v1.19.0) - 无状态进度代码:`save` 会生成一个可移植的字符串,编码了已访问的关卡、成就、隐藏奖励、各关卡耗时、提示计数器、主题、新手引导标志以及大厅展开状态 —— 一个全新玩家的代码约为 35 个字符,而完美主义者的约为 180 个字符。`restore ` 会验证 + 对比差异 + 在应用前提示 `[y/N]`;`restore --preview ` 只解码不更改任何内容。与引擎其余部分的隐私策略一致 —— 无服务器,无账号 (v1.20.0) - 可作为 Progressive Web App 安装:拥有自己的 Dock 图标,无边框窗口,首次访问后可离线使用。`sw` 命令用于检查 service worker;`reload` 应用任何待处理的 PWA 更新。移动端玩家可以点击 "Continue anyway" 穿过拦截页面在手机上游玩,在屏幕键盘上方提供了一排软按键,用于输入 Tab / Esc / Ctrl-C / `|` / `&&` / `$` / `_` (v1.21.0) 该终端还支持玩家从 bash 中带来的 shell 特性: - **管道** —— `cmd1 | cmd2 | cmd3` 从左到右运行,将 stdout 传递给 stdin。`grep` / `head` / `tail` / `wc` / `sort` / `uniq` / `cut` / `tr` 均可读取管道输入。 - **通配符** —— `*` (除 `/` 外的任意字符) 和 `?` (单个字符)。适用于 `ls`、`cat`、`grep` (`ls *.md`, `cat *.txt`, `grep TODO *.log`)。 - **路径解析** —— 绝对路径 (`/home//notes.txt`)、家目录扩展 (`~`, `~/foo`)、链式的父级引用 (`../../bin`),所有这些都会被规范化。 - **Shell 变量** —— `$USER`, `$HOME`, `$HOSTNAME`, `$PWD`, `$PATH`, `$SHELL`, `${VAR}` 括号形式,`$$` 会转义为字面量 `$`。各关卡自定义的 `env_vars` 扩展了该变量集。 - **Tab 自动补全** —— 补全第一个单词的命令名称;在空格后补全文件系统路径(如果是单个匹配项,将填充基名 + 目录的 `/`;如果是多个匹配项,则填充最长公共前缀)。 ## AI 使用披露 本项目将 Claude (Anthropic) 用作编码和写作助手——包括审计代码、在每次提交前运行自动化测试演练、起草攻略 markdown 以及撰写技术文档。**所有的关卡设计均为本项目原创** —— Driftwood Systems 的背景设定、反复出现的角色(Daniel、Priya、Theo、Marcus、Carlos、Marisol、Jordan、Aaron、Sloane、Lara)、各分支的客户项目、谜题机制以及每一个叙事节点均由项目维护者亲自创作。 ## 许可证 MIT — 详见 [LICENSE](LICENSE)。
标签:CTF平台, StruQ, 合规审查, 多模态安全, 安全教育, 网络安全, 自定义脚本, 隐私保护