Skip to content

Releases: Firefly0619sec/WARDEN

WARDEN 0.3.7 · 内嵌公钥更新(安全修订)

Choose a tag to compare

@Firefly0619sec Firefly0619sec released this 12 Oct 22:59
bfc18e9

WARDEN 0.3.7 > 这份草稿由 tools\release.ps1 自动生成 ✓ 发之前自己读一遍、补上"这次改了什么" ✓ ## 文件与校验值(SHA256) ``` 0c2bceebb16c670b0a23e84c264e25c3a2941b6b28105c7673538d9da39249d7 WARDEN.exe

0e95768363ad7695e18ae949938948c37f22a63f739838d8eab2666551fa4565 WARDEN-Setup.exe
9974472926d4365935ed95e4977f2e9c52eebd05b9850566c3ed3398836a9fe1 warden-cli.exe
ee3c81221f2fa70b3e741b1121e116c26993e07a828376f300545175c42e529c RedTeam.exe ## 怎么装 1. 把 `WARDEN-Setup.exe` 拷到目标机器(离线也能装 ✓) 2. 双击 → 按向导走(默认装在 `%LOCALAPPDATA%\Programs\WARDEN`,不需要管理员权限 ✓) ## 怎么验证来源(★ 别只看哈希 ✗ 哈希本身也可能被一起换掉 ✓) 1. 导入发布者公钥(README 里也有同一份指纹 ✓): gpg --recv-keys EBFB6B895D8EEC8F59CE0A26E23876CBBDAE330F 2. 校验校验和文件【本身】的签名(这一步才是关键 ✓): gpg --verify SHA256SUMS.txt.asc SHA256SUMS.txt 3. 再对文件算哈希,和 SHA256SUMS.txt 里的逐条比: sha256sum -c SHA256SUMS.txt # Linux / Git Bash Get-FileHash WARDEN-Setup.exe -Algorithm SHA256 # Windows PowerShell ``` 4. 签名在这里 → SHA256SUMS.txt.asc ✓(发布者指纹:`EBFB6B895D8EEC8F59CE0A26E23876CBBDAE330F`) ## 许可证 AGPL-3.0-or-later —— 注意:把 WARDEN 做成在线服务也要开源 ✓ ## 这次改了什么 见下一节 ↓


这次改了什么(0.3.7)

唯一实质变更:更新内嵌的发布者公钥。

  • 10-12 给发布密钥新增了一个 [S] 签名子密钥(6DF25BD4A2362396),
    从此发布物由子密钥签名、主密钥保持离线 ✓
  • 但 0.3.6 及更早版本里内嵌的是旧公钥(不含该子密钥)✗
    → 结果:它们验不过由新子密钥签出来的发布物(实测报 No public key)
  • 0.3.7 把三处内嵌公钥全部更新:keys\PGP-PUBLIC-KEY.asc、src\PgpVerify.cs、tools\setup\PgpVerify.cs ✓
    指纹不变(仍是 EBFB6B895D8EEC8F59CE0A26E23876CBBDAE330F)✓ 只是多了一个子密钥 ✓

附带的工程修复

  • 给 4 个含中文却缺 UTF-8 BOM 的脚本补上 BOM(build.ps1、tools\release.ps1、
    tools\pre-release-check.ps1、tools\tools-build.ps1)
    —— 否则在 Windows PowerShell 5.1 下会因中文被按 ANSI 解码而解析失败 ✗(实测踩到)

升级提示

  • 用 0.3.6 及更早版本的用户,建议升级到 0.3.7:只有 0.3.7 及以后的内置公钥能验证本次签名 ✓
  • 发布物签名指纹仍为 EBFB6B895D8EEC8F59CE0A26E23876CBBDAE330F ✓ 可用它核对 ✓

WARDEN 0.3.6 · 安全修订版

Choose a tag to compare

@Firefly0619sec Firefly0619sec released this 12 Oct 14:10
eb237cc

WARDEN 0.3.6 > 这份草稿由 tools\release.ps1 自动生成 ✓ 发之前自己读一遍、补上"这次改了什么" ✓ ## 文件与校验值(SHA256) ``` 2125cf7b6f03e9dd62b033f6490e2be480d000a3b0cd3dd338393573c26715ce WARDEN.exe

bdc1705e41f61168705b32b296ba414dca9f64f41afa7a00ef2057e409160150 WARDEN-Setup.exe
694d3e98d478c0c07dc3e730aef11166618d671454923457ac392f90e2f4ac26 warden-cli.exe
429f675f15fa0f949344d55206022de445c7047602139aa41cc1e926906ceb89 RedTeam.exe ## 怎么装 1. 把 `WARDEN-Setup.exe` 拷到目标机器(离线也能装 ✓) 2. 双击 → 按向导走(默认装在 `%LOCALAPPDATA%\Programs\WARDEN`,不需要管理员权限 ✓) ## 怎么验证来源(★ 别只看哈希 ✗ 哈希本身也可能被一起换掉 ✓) 1. 导入发布者公钥(README 里也有同一份指纹 ✓): gpg --recv-keys EBFB6B895D8EEC8F59CE0A26E23876CBBDAE330F 2. 校验校验和文件【本身】的签名(这一步才是关键 ✓): gpg --verify SHA256SUMS.txt.asc SHA256SUMS.txt 3. 再对文件算哈希,和 SHA256SUMS.txt 里的逐条比: sha256sum -c SHA256SUMS.txt # Linux / Git Bash Get-FileHash WARDEN-Setup.exe -Algorithm SHA256 # Windows PowerShell ``` 4. 签名在这里 → SHA256SUMS.txt.asc ✓(发布者指纹:`EBFB6B895D8EEC8F59CE0A26E23876CBBDAE330F`) ## 许可证 AGPL-3.0-or-later —— 注意:把 WARDEN 做成在线服务也要开源 ✓ ## 这次改了什么 (待填)

WARDEN v0.3.5(bug 修复:托盘更新入口 + 静默安装不再误删桌面快捷方式)

Choose a tag to compare

@Firefly0619sec Firefly0619sec released this 11 Oct 13:46
2607da6

WARDEN 0.3.5(bug 修复版)

这一版只修 bug ✓ 修的都是用户实测报上来的的两个问题 ✓ 不夹带新功能 ✓

一、托盘没有「更新」入口 ✗→✓

现象(用户原话:「托盘的更新没了」)
托盘右键菜单只有 打开设置界面 / 暂停守护 / 重新加载配置 / 查看日志 / 退出 ✗
更新器 Updater.exe 明明就在程序目录里 ✓ 但界面上没有任何入口 ✗
用户只能自己去程序目录双击 ✓ 体感就是"更新功能不见了"✗

修法:托盘菜单新增一项 「更新 WARDEN(打开更新器)」 ✓
点它 → 启动 <程序目录>\Updater.exe ✓
找不到更新器(例如只拷了 WARDEN.exe 的绿色版)→ 弹窗说明✗ 不静默失败 ✓

验证:主程序干净编译 exit 0 ✓ 4.07 MB ✓ 新菜单串确认在产物里 ✓
★ 如实说明:托盘菜单的真鼠标点击我没法自动化测 ✗ 这一条只验到「代码路径 + 字符串在产物里」✓

二、静默安装会误删桌面快捷方式 ✗→✓

现象(用户原话:「快捷方式被误删了」)
安装器在 desktop=false 时无条件删掉桌面 WARDEN.lnk ✗
→ 于是 --silent --no-desktop 这种静默升级也会删 ✓ 用户的桌面图标就这么没了 ✗

修法:

  • 只有交互式安装里用户亲手取消勾选才清 ✓
  • 静默安装一律不动用户桌面 ✓(cleanUnwantedShortcuts 默认 false ✓)
  • 红队自测那条同理:只有它的 exe 真被删掉时,才顺手清指向它的死快捷方式 ✓

验证(真跑一遍 ✓):

装之前桌面快捷方式在 ✓
→ WARDEN-Setup.exe --silent --dir %TEMP%\… --no-launch --no-desktop --no-autostart --no-redteam
→ 退出码 0 ✓  装之后桌面快捷方式【仍在】✓✓
日志> 桌面快捷方式:静默安装不动用户桌面 ✓(不建也不删 ✓)
日志> 红队自测工具: 未选 → 不安装 ✓(顺手清掉它自己的死快捷方式 ✓)
真实配置:测试后一字不差(a247dba3e9b0d6ea ✓)

三、本版其它

  • 版本号 0.3.4 → 0.3.5(产品级 11 处统一 ✓ tools\pre-release-check.ps1 闸门全过 ✓)
  • 发布流程不变 ✓ 载荷闸门(八个必需 exe + 六个语言包 + 每个 exe ≤ 8MB)全过 ✓
  • 发布物照旧带 GPG 签名 ✓(SHA256SUMS.txt.asc ✓)
  • 顺带修:发布前闸门之前会把自己源码里那几个"密钥样式"的字符串当成泄漏 ✗
    → 已加 :(exclude)tools/pre-release-check.ps1 ✓ 现在跑得过 ✓

四、文件与校验值(SHA256)

a03ae110cdade35af2734e3df9c0ef45204715dfbec2ec118f5441bcad2089ba  WARDEN.exe
6c2fd081f010f34ca3fcbe0264fd010e17bf186896ccb708e9a16883136ffd7f  WARDEN-Setup.exe
49b72b4118f9a69fec9275692dc1f837369d152c8abc382968e5c102234167e7  warden-cli.exe
d6e39af6d93e11f63a48e0154939c937d9837220502ae49a8830df6937eb0542  RedTeam.exe

★ 这份列表自身有签名 → SHA256SUMS.txt.asc ✓(不签名的哈希等于没认证 ✗)
发布者指纹:EBFB6B895D8EEC8F59CE0A26E23876CBBDAE330F

五、怎么装

  1. 把 WARDEN-Setup.exe 拷到目标机器(离线也能装 ✓)
  2. 双击 → 向导(默认装在 %LOCALAPPDATA%\Programs\WARDEN ✓ 不需要管理员 ✓)
  3. 完成页可以点「打开设置界面」直接配置 ✓

六、许可证

AGPL-3.0-or-later —— 注意:把 WARDEN 做成在线服务也要开源 ✓

WARDEN v0.3.4(安全修订:发布物 GPG 签名 + 反降级 + 修掉写坏配置的同源 bug)

Choose a tag to compare

@Firefly0619sec Firefly0619sec released this 11 Oct 13:19
ce0c931

WARDEN 0.3.4(安全修订版)

0.3.3 修了四个工具的 AOT 移植与一批真缺陷 ✓ 本版是信息安全体检后的修订版 ✓
三件事:修掉会写坏配置的同源 bug ✓ 给发布物加来源认证(GPG 签名) ✓ 更新器加反降级门限 ✓

一、修掉「更新器会把配置写坏」的同源 bug ✗→✓

0.3.3 修过安装器里的一处数据破坏级 bug:写自检基线时用了 "$1" + hash + "$3" ✗
而 .NET 的 Regex.Replace 会把 $ 后面连续的数字整段当成捕获组号 ✗
→ 新哈希只要以数字开头(如 4164b4df…)就拼成 $14164b4df… ✗ → 没有 14164 号组 → 按字面量吐出 ✗
→ 配置里那一行变成 $14164b4dfe8523da…b8", ✗ 键名和引号一起被吃掉 ✗ JSON 语法错误 ✗

这一版把同一份 bug 在更新器里的那份也修掉了 ✗→✓
(体检时用 git grep 才发现 ✗ 这段逻辑在安装器与更新器里各抄一份 ✓ 上一版只修了安装器 ✓)

修法(两份都改成一样的 ✓):

  1. 组引用一律加花括号 → ${1} / ${3} ✓
  2. 替换后自检 → 自检不过就一个字都不写 ✓(宁可不动也不能写坏 ✓)
  3. 写之前先留一份 WARDEN.json.setup-bak ✓

二、发布物加上来源认证(GPG 签名)✗→✓

问题:0.3.3 及以前只有 SHA256SUMS.txt ✗
能改下载页的人(或 GitHub 账号被盗 ✗)可以同时换掉 exe 和校验和 ✗ 用户怎么对都对不上 ✓

现在:每次发布自动生成 SHA256SUMS.txt.asc ✓ 签名失败一律中止发布 ✗ 绝不发"说签了其实没签"的包 ✓
发布者指纹(与提交签名同一把钥匙 ✓):

EBFB6B895D8EEC8F59CE0A26E23876CBBDAE330F

用户怎么验(发布说明里也写了同一套 ✓):

gpg --recv-keys EBFB6B895D8EEC8F59CE0A26E23876CBBDAE330F
gpg --verify SHA256SUMS.txt.asc SHA256SUMS.txt      # ★ 这一步才是关键
Get-FileHash WARDEN-Setup.exe -Algorithm SHA256     # 再逐条对哈希

三、更新器加反降级门限 ✗→✓

问题:更新器原来不比对版本 ✗ → 喂一个旧版本包就等于被降级 ✓
(旧版可能带着已知问题 ✓ 而且它会把 expected_self_hash 也改成旧 exe 的 ✓ 用户完全看不出来 ✗)
顺带说:原来的哈希校验只看同目录的 <zip>.sha256 ✗ —— 那个旁文件可以跟包一起被换掉 ✗ 属于 TOFU ✓

现在:包里 WARDEN.exe 的版本必须 ≥ 已安装版本 ✓ 更旧一律拒绝并明确告知 ✓
读不到任何一边的版本 → 放行(只记日志 ✓ 绝不误伤正常升级 ✓)

实测(喂用户机器上真实的 0.2.5 包 ✗):

[更新] ★★ 拒绝更新:这是【降级】✗ 包里 0.2.5 < 已安装 0.3.4 ✓ 已中止,一个文件都没动 ✓
沙箱 WARDEN.exe 有没有被降级覆盖:没有 ✓✓   真实配置:一字未动 ✓

四、新增发布前闸门 tools\pre-release-check.ps1 ✗→✓

体检暴露了一个通病:同一段逻辑抄两份、版本号散在 10 个文件里 ✗ → 修一处漏一处 ✓
所以把这类"漏一处就出事"的检查脚本化 ✓ 发布前必须跑 ✓

① 危险的正则替换写法("$N" + 变量 ✗)→ 全仓搜 ✓ 发现就中止 ✗
② 写配置的地方有没有「替换后自检」兜底 ✓
③ 产品版本号在 10 处是否处处一致 ✓(四个 AOT 工具保留各自历史编号 ✓ 不在范围 ✓)
④ 公开仓里有没有密钥/口令 ✗
⑤ 语言包六份是否齐 ✓

五、本版实测(只写实测到的)

pre-release-check.ps1 → 闸门全过 ✓(版本 10 处全 0.3.4 ✓ 无危险写法 ✓ 无密钥 ✓ 语言包 6 份 ✓)
release.ps1 -Version 0.3.4 → 退出码 0 ✓ 载荷 22.2 MB ✓ 载荷闸门三条全过 ✓
  GPG 签名 → Good signature(ebfb6b895d8eec8f…)✓ 脚本自校验 + 我独立复验 ✓
沙箱静默安装 → 退出码 0 ✓ 17 个文件 + lang\ 六包 ✓ 每个 exe ≤ 8MB ✓
  配置只按设计改 expected_self_hash 一个字段 ✓ 还原后一字不差 ✓
反降级 → 拒绝 0.2.5 ✓ 文件零改动 ✓ 配置零改动 ✓

六、文件与校验值(SHA256)

6d1427a2eeb9aa9c2d87e6515b006924d7dbd9080bba7f9ed69e6a055df4f0fe  WARDEN.exe
5862630b741ba721c35813b3275cbf113ec191c34390be6e3144ca7540f84ff2  WARDEN-Setup.exe
5f261504e8035219a1134b43c23699655e4e4882c43613f1facb9e2d9a20bf18  warden-cli.exe
261df83084a5b53149c3bd8d7f7a88cdc24bb3837137b776a03e216ba26df01b  RedTeam.exe
★ 上面这份列表自身有 GPG 签名 → SHA256SUMS.txt.asc ✓(不签名的哈希等于没认证 ✗)

七、兼容性与怎么装

  • 配置格式未变 ✓ 命令行参数未变 ✓ 语言包位置未变 ✓
  • 装法同 0.3.3:双击 WARDEN-Setup.exe → 向导 → 完成页「打开设置界面」✓
  • 已经从 0.3.3 装过的用户:直接覆盖安装 0.3.4 即可 ✓(本版修的是更新器路径 ✓)

八、许可证

AGPL-3.0-or-later —— 注意:把 WARDEN 做成在线服务也要开源 ✓

WARDEN v0.3.3(Beta 3 · 四个 WinForms 工具全转原生 AOT)

Choose a tag to compare

@Firefly0619sec Firefly0619sec released this 11 Oct 12:54
ef4b1e9

⚠ 本版的更新器有一个会把配置写成非法 JSON 的 bug ✗ 请改用 v0.3.4 ✓
(安装器路径在 0.3.3 里已修 ✓ 受影响的是 Updater.exe 那条路径 ✓)

WARDEN 0.3.3 > Beta 3 第 3 次改版:四个 WinForms 工具全部转成原生 Win32/GDI + Native AOT 单文件 ✓ > 并修掉全量测试抓出来的一批真缺陷(含两个会破坏用户数据的 ✗) ## 一、体积与依赖(这次的主题) | 工具 | 改造前 | 改造后 | 版本 | | --- | --- | --- | --- | | 卸载器 Uninstaller | 49.25 MB | 1.75 MB(-96.4%) | 0.3.0 | | 更新器 Updater | 49.24 MB | 2.44 MB(-95.1%) | 0.3.1 | | 日志查看器 LogView | 49.25 MB | 2.98 MB(-93.9%) | 0.3.2 | | 设置 Settings | 47.03 MB | 3.12 MB(-93.4%) | 0.3.3 | | 帮助 Help | 174 KB(空壳 · 打不开 ✗) | 2.41 MB(可用 ✓) | 0.3.3 | | 命令行 warden-cli | 1.78 MB | 1.70 MB | 0.3.3 | | 红队自测 RedTeam | 1.06 MB | 1.01 MB | 0.3.3 | | 在线安装器 | 2.66 MB | 2.54 MB | 0.3.3 | | 主程序 WARDEN | 4.06 MB | 4.06 MB | 0.3.3 | 安装载荷实测:201 MB → 22.1 MB ✓ 目标机不再需要安装 .NET 运行时 ✓ ## 二、修掉的真 bug(都不是体验优化) 数据安全类(本轮全量测试抓到) 1. 设置界面读不出规则,而且保存会删掉规则 ✗ 主程序写配置用的键是大写 "Rules",而设置界面的解析正则没开大小写不敏感 → 规则表永远是空的;保存时按空表写回 "rules": [] → 打开设置点一下「保存配置」,用户的规则就全没了。 实测:沙箱放 2 条规则 → 修前 0 行 → 修后 2 行 ✓ 2. 安装器会把自检基线写坏,配置变成非法 JSON ✗ 安装后要把新 WARDEN.exe 的哈希写回 expected_self_hash,但替换串写成 "$1" + hash + "$3", 而 .NET 的 Regex.Replace 会把 $ 后连续数字整段当组号 → 新哈希以数字开头时拼成 $14164b4df… → 键名与引号一起被吃掉 → JSON 语法错误(用户看到的是"装完新版本就打不开了")。 已修:组引用加花括号 ${1} ✓ 替换后自检 ✗ 不过就一个字都不写 ✓ 写前留 .setup-bak ✓ 实测:配置只改这一个字段 ✓ 值 = 装出来的 exe 真 SHA256 ✓ JSON 合法 ✓ 3. 设置界面保存会删掉它不管的配置键 ✗ SaveConfig 整份重写 → Emergency / first_run_done / HardBlockNote 全丢。 已修:保存前把"不归本工具管"的顶层块原样抄过去 ✓ 实测保存后 14 个顶层键一个不少 ✓ 4. 卸载器误删配置与日志(0.2.5 起存在 · 0.2.6 已修) 卸载确认窗的返回值被当成"是否删除数据" → 不勾选也会删。现已分开 ✓ 可用性类 5. 设置界面在中文机器上显示英文(AOT 开 InvariantGlobalization 后 CurrentUICulture 恒为空串, 而兜底写的是 en-GB)→ 已改成先问 Windows 界面语言,认不出来一律兜底简体中文 ✓ 6. 设置界面整窗画不出来、按钮点不动 ✗(控件全用自建窗口类,没有绘制/点击处理; 且 Win32 子窗口"后建的排在下"→ 底栏盖住按钮) → 全换真系统控件(STATIC/BUTTON/EDIT/SysTabControl32)+ 容器压 z 序最底 ✓ 实测:真鼠标点「保存配置」→ 日志 WM_COMMAND id=101 ✓ 7. 设置界面规则页五个按钮全哑(按钮挂在规则宿主下,宿主的窗口过程吞掉 WM_COMMAND) → 宿主转发给同一分发器 ✓ 实测:新增规则弹对话框 ✓ 编辑选中弹提示 ✓ 导出规则弹另存为 ✓ 8. 帮助界面四个按钮全部无反应(父窗口是系统 STATIC 底栏 → 吞 WM_COMMAND)→ 已挂主窗 ✓ 9. 帮助打不开(载荷里只有 174 KB 的 apphost 空壳,真代码在同目录 219 个 DLL 里)→ 单文件 AOT ✓ 10. 高 DPI 布局错位(DPI 在建窗之后才算,控件在 WM_CREATE 里就用它定位) → 改成建窗前定好 ✓ 实测 96/120/144 三档控件尺寸与坐标精确成比例 ✓ 11. 向导的 --no-desktop 完全失效(勾选框写成 Checked = DesktopWanted || true 恒为真) → 实测即使带 --no-desktop 装到临时目录,桌面上照样多出一个指向临时目录的坏快捷方式 ✗ 已修 ✓ 实测桌面快捷方式不再多出来 ✓ 发布链类 12. 语言包从未随包发布:设置界面从 <程序目录>\lang\ 读语言包,而载荷里一直没有这个目录。 已补进发布链 ✓ 并先跑一致性校验(340 键 × 6 包)当闸门 ✓ 13. 发布脚本两处硬伤(本轮真跑才暴露):① 用了还没定义的 $appDir → 脚本直接抛异常 ✗ ② 语言包在构建【前】复制,而构建会清空 dist\ → 又被抹掉 ✗ 已修 ✓ 并新增载荷闸门:拆开 payload.zip 核对「八个必需 exe + 六个语言包 + 每个 exe ≤ 8MB」✓ 14. 语言包结构错误:46 个点号界面键写在 [log.rule] 分节里 → 帮助界面显示成 help.title 这类键名 ✗ 已移回 [ui] 分节 ✓ ## 三、安装流程变化(按你的要求) 安装完成后:先出安装向导 ✓ 向导完成页上有一个 「打开设置界面」 按钮 ✓ 点它 → 启动 Settings.exe → 向导关闭 → 下一个出现的界面就是设置 ✓ 实测(真鼠标走完向导):环境检测 → 选择安装位置 → 正在安装 → 安装完成 → 点「打开设置界面」 → Settings.exe 起来 ✓ 向导自行退出 ✓ 桌面/开始菜单/配置都按预期 ✓ ## 四、本版实测数据(只写实测到的) 设置界面:干净编译 exit 0 ✓ 3.12 MB ✓ 客户区 830x640 ✓ 底部条三控件 (12,596,110x32)/(130,596,100x32)/(495,602,330x24) ✓ 与规格精确一致 ✓ 规则表四列 [52,185,135,400] ✓ 78 个子控件 ✓ 创建失败 0 行 ✓ 真鼠标横扫页签带自校准 → 7 个页签全部可切 ✓ 切页后标题与列标题跟随语言刷新 ✓ 哈希填入 = 沙箱 WARDEN.exe 的真 SHA256(独立复算一致 ✓) 高 DPI 96/120/144:客户区宽度 830/1038/1245 ✓ 控件与列宽精确成比例 ✓ 六语言:6 个包 × 340 键 ✓ 键集合完全一致 ✓ 零空值 ✓ 真机逐语言截图哈希互不相同 ✓ 沙箱静默安装:退出码 0 ✓ 3 秒 ✓ 17 个文件 + lang\ 六包 ✓ 每个 exe ≤ 8MB ✓ 只改 expected_self_hash 一个字段 ✓ 真实配置测试后一字不差还原 ✓ 向导链路:四步走完 ✓ 点「打开设置界面」→ Settings.exe 启动 ✓ 发布载荷:22.1 MB ✓ 载荷闸门三条全过 ✓ ## 五、文件与校验值(SHA256) 4164b4dfe8523da16fa2a41acc1b7eaf98c536f66130a3158024c647e401a5b8 WARDEN.exe 083c0078962a2c30fe7ccd0e0ac20a5e1d83d54227d8076107ca85873b88b98e WARDEN-Setup.exe 8606bbdb3b7c52ac7a968c400407661b32a3a994ce691e9f9bef7e5edc3a1247 warden-cli.exe 88e4f51ce19265e4f3150a313b83043a28e22c9fa2346f9a9706f3c73510f36b RedTeam.exe ## 六、怎么装 1. 把 WARDEN-Setup.exe 拷到目标机器(离线也能装 ✓) 2. 双击 → 按向导走(默认装在 %LOCALAPPDATA%\Programs\WARDEN,不需要管理员权限 ✓) 3. 装完先出向导 → 想直接配置就点完成页的「打开设置界面」✓ 4. 想自己验证来源:对照上面的 SHA256 ✓ ## 七、兼容性 * 配置文件格式未变 ✓ 旧版 %LOCALAPPDATA%\WARDEN\WARDEN.json 可直接用 ✓ * 命令行参数未变 ✓(--silent / --dir / --no-desktop / --no-autostart / --no-redteam / --no-launch) * 语言包位置:程序目录 lang\(随包发布 ✓)与 %LOCALAPPDATA%\WARDEN\lang\(可覆盖 ✓) ## 八、许可证 AGPL-3.0-or-later —— 注意:把 WARDEN 做成在线服务也要开源 ✓

WARDEN 0.2.6 — 安全修复:卸载器不再误删配置与日志

Choose a tag to compare

@Firefly0619sec Firefly0619sec released this 11 Oct 09:32
65ab599

WARDEN 0.2.6 —— 安全修复版(建议 0.2.5 用户升级)

修了什么(★ 这是一个真 bug,不是体验优化)

卸载器会误删配置与日志:
在 0.2.5 中,卸载确认窗返回的是「用户是否确认卸载」,
但代码把它当成了「是否删除配置与日志」——
于是即使不勾选「同时删除配置与日志」那个选项,只要点了「卸载」并确认,配置与日志就会被删掉。

0.2.6 把两件事彻底分开:

  • 确认与否 = 对话框的返回值
  • 删不删数据 = 复选框的真实状态(只有真勾了才会删)

修复后实测日志原文:

[卸载] 用户确认卸载;删除数据=False(来自复选框)
[卸载] 数据目录【保留】✓

一起改进的两处界面问题

  • 卸载窗蓝色标题栏上的文字原来被一层浅灰底色盖住、几乎看不清 → 已修复
  • 「确定连配置与日志一起删掉吗?」的默认按钮原来是「是」→ 已改为默认「否」(防手快回车)

文件与校验值(SHA256)

a5a04d3716e050eb486c66f73786bbe3c990690e9c930c7679abff37dccae07a  WARDEN.exe
29ab12db87a0c0bbf5c0c93a00797db4a80a1d9ffd8c93c9dcaea90486bc1606  WARDEN-Setup.exe
9357545624a209724947f57d793bf171fcf3771647df7a1811f7f8dbb65f6e59  warden-cli.exe
d72545d7be42601b9ade4669c69a421332bc9889ecaa5d185bae7e53dff29663  RedTeam.exe

怎么装

  1. 把 WARDEN-Setup.exe 拷到目标机器(离线也能装)
  2. 双击 → 按向导走(默认装到 %LOCALAPPDATA%\Programs\WARDEN,不需要管理员权限)
  3. 想自己验证来源:对照上面的 SHA256

如果你已经中招

升级到 0.2.6 后,配置会以默认值重建(%LOCALAPPDATA%\WARDEN\WARDEN.json),
把之前的设置重新配一遍即可。日志文件会重新生成。

许可证

AGPL-3.0-or-later —— 注意:把 WARDEN 做成在线服务也要开源

WARDEN 0.2.5(Beta 2 · 第 5 次改版)

Choose a tag to compare

@Firefly0619sec Firefly0619sec released this 11 Oct 04:20
b00feb2

WARDEN 0.2.5(Beta 2 · 第 5 次改版)

这一版改了什么

  • 安装包终于"装完能用" ✓(审计发现的阻断级问题)
    以前的载荷只有主程序与设置界面 ✗ 帮助/日志查看/更新/卸载/红队全都没进去 ✓
    现在 8 个可执行文件全部随包 ✓(代价:安装包 93 MB → 226.7 MB ✗ 下一步用 AOT 优化体积 ✓)
  • 命名清理(用户要求"别每个都套守望人"✓)
    工具 exe 去掉前缀:\Settings.exe\ / \Help.exe\ / \LogView.exe\ /
    \Updater.exe\ / \Uninstaller.exe\ / \RedTeam.exe\ ✓
    图标:\icon.ico\ / \icon-paused.ico\ / \icon-emergency.ico\ ✓
    保留:\WARDEN.exe\(本体 ✓)与 Release 下载名 \WARDEN-Setup.exe\ ✓
  • 在线安装器:--check\ 现在只报版本与"会下哪个文件" ✓(以前它跑的是环境检测 ✗)
    JSON 解析从正则手撕换成 System.Text.Json ✓(AOT 友好 ✓ 零新依赖 ✓)
    挑资产会跳过 arm64 ✓(换仓库时挑错过 ✓)
  • 语言包:三地繁体包共修正 339 条"照抄英文/未翻译"的值 ✓
    en-US 改用美式拼写(与 en-GB 分化 ✓)✓ \docs\语言包.md\ 重写 ✓
  • 离线安装包新增安装进度条 ✓(后台线程 + 逐文件回报 ✓ 不再假死 ✓)
  • 托盘图标换成红星(16px 下占比从 6% 提到 34% ✓ 星形理论上限 ✓)
  • 中英 README 各加「关于那颗红星」✓ 第三方声明补齐 msquic/zlib-ng 许可正文 ✓

下载

文件 说明
\WARDEN-Setup.exe\ ★ 离线安装包(226.7 MB ✓ 含全部工具 ✓)
\WARDEN-Online-Setup.exe\ 在线安装器(向导 + 环境检测 + 进度条 + 通用参数 ✓)
\warden-cli.exe\ 命令行 ✓
\SHA256SUMS.txt\ 校验值(★ 装前对一下 ✗)

合规

本体 AGPL-3.0-or-later ✓ 内嵌 .NET 运行时(MIT ✓)
随包:\THIRD-PARTY-NOTICES.md\ + \第三方声明\\ ✓ 应用内:帮助工具「开源许可」✓

尚未签名

SignPath Foundation 已受理 ✓ 审核中 ✓ → SmartScreen 会提示未知发布者 ✗ 请核对 SHA256 ✓

WARDEN 0.2.4(Beta 2 · 第 4 次改版)

Choose a tag to compare

@Firefly0619sec Firefly0619sec released this 11 Oct 03:50
e72b786

WARDEN 0.2.4(Beta 2 · 第 4 次改版)

版本号读法:x.y.z = 第 x 个正式版之后的第 y 个 Beta 的第 z 次改版 ✓ 现在还没有正式版(x=0)✓

这一版最要紧的一件事:安装包终于"装完能用"了

审计发现的问题:以前的安装包内嵌载荷只有主程序和设置界面 ✗
帮助 / 日志查看 / 更新 / 卸载 / 红队 全都没打进去 ✗
→ 装完点托盘那些菜单会指向不存在的程序 ✓

现在 8 个可执行文件全部随包 ✓ 代价是安装包从 93 MB 涨到 227 MB ✗
(体积问题下一步用 AOT 重写那几个 WinForms 工具来解决 ✓ 先保证"能用" ✓)

这一版改了什么

  • 在线安装器:真向导(第 1 步环境检测 → 下载 → 校验安装 ✓)
    · 环境不满足不放行 ✗ 按钮变「帮我装好」✓ 会打开微软官方运行库页 ✓
    · 进度条带速度与剩余时间 ✓(正在下载… 42% (39.1/93.1 MB) 3.2 MB/s 剩余约 17 秒 ✓)
    · 下载断点续传 + 自动重试 3 次 + 连接/总时长超时分离 ✓
    · 校验通过后先拉起离线安装包,再关掉自己 ✓(交接失败则保留窗口并给出文件路径 ✓)
    · 通用化:--repo <owner>/<name> / --asset <文件名> / --prerelease 都能传 ✓
    不写死版本号、仓库、资产名 ✓ 问 GitHub 要最新版 ✓
  • 离线安装包:新增安装进度条 ✓
    · 根因修的是"在 UI 线程同步跑长任务导致窗口假死"✗ 现在改成后台线程 + 逐文件回报 ✓
    · 状态行会写「正在释放文件 12 / 254:xxx」✓
  • 标题栏:标题与副标题那一栏改成真正的蓝色背景(原来是手绘底色 ✗ 子控件不继承 → 白字压浅灰看不清 ✓)
  • 托盘图标:换成红星(《红星照耀中国》那颗 ✓ 不是红心 ✗)
    · 星形半径从画布 44% 放大到 94% ✓(16px 下不透明占比 6% → 34% ✓ = 五角星的理论上限 ✓)
    · 三态:正常=正红金边 / 暂停=暗红灰 / 紧急=亮红金边+外发光 ✓
    · 中英双版 README 各加了一段「关于那颗红星」✓
  • 合规:
    · src/Program.cs 里主程序的版本号以前一直停在 0.2.1 ✗ 已统一 ✓
    · WARDEN.exe 的 FileVersion 以前是 0.1.0.0 ✗(csproj 字段不统一 ✓)已修 ✓
    · 补齐 msquic(MIT)与 zlib-ng(zlib)的许可正文与版权行 ✓
    · 六个语言包各去掉一个重复 key ✓ zh-Hans 补齐 88 个缺失 key ✓
    · 五份文档里陈旧的 0.1.0-beta.2 状态全部更新 ✓

下载

文件 说明
WARDEN-Setup.exe ★ 离线安装包(227 MB ✓ 含全部工具 ✓ 不需要网络 ✓)
WARDEN-Online-Setup.exe 在线安装器(2.8 MB ✓ 向导 + 环境检测 + 进度条 ✓)
warden-cli.exe 命令行 ✓
SHA256SUMS.txt 校验值(★ 装之前对一下 ✗)

合规与许可

  • 本体 AGPL-3.0-or-later ✓ 内嵌 .NET 运行时(MIT ✓)
  • 随包声明:THIRD-PARTY-NOTICES.md + 第三方声明\(含 .NET 官方两份原文 ✓)
  • 应用内:帮助工具「开源许可」章节 ✓(六语言 ✓)

尚未代码签名

SignPath Foundation 申请已受理 ✓ 审核中 ✓
→ SmartScreen 会提示"未知发布者"✗ 请对照 SHA256SUMS.txt 校验 ✓

WARDEN 0.2.3(Beta 2 · 在线安装器改版)

Choose a tag to compare

@Firefly0619sec Firefly0619sec released this 10 Oct 18:39

WARDEN 0.2.3(Beta 2 · 在线安装器改版 · 正式发布)

这一版的重点:在线安装器

  • 从控制台改成向导窗口 ✓
    之前双击是个黑底白字的控制台 ✗ 还问 "Continue? (Y/n)" ✗
    现在是一个正常的 Windows 向导窗口:标题区 + 状态大字 + 进度条 + 三个按钮 ✓
  • 体积 5647 KB → 2473 KB(小 56% ✓)
    · 不再用 HttpClient(它拖进 Sockets/TLS/代理一整条链)✓ 改用系统自带 curl.exe ✓
    · 下载进度自己轮询临时文件大小 ✓ 每 300 毫秒刷一次 ✓
  • 安全逻辑不变 ✓
    · 下载后校验 SHA256 ✓ 对不上就【拒绝安装】✗ 文件留着让你自己看 ✓
    · 没有 SHA256SUMS.txt 也不自动运行 ✗
    · 主程序完全不联网 ✓ 只有这个窗口会访问 GitHub 一次 ✓

调试记录(写出来给后来人省时间 ✓)

这次窗口一直 fail-fast(退出码 0xC0000409 ✗ 连托管异常都进不去 ✗ 没有日志 ✗)
二分定位过程:

  1. 先排除"结构体里的字符串没标 LPWStr"✗ 不是它 ✓
  2. 再排除 InvariantGlobalization / UseSystemResourceKeys ✗ 也不是 ✓
  3. 加环境变量 WARDEN_MIN:只建窗口不建子控件 → 活着 ✓ → 定位到子控件段 ✓
  4. 再加 WARDEN_NOBLUE:跳过 WM_CTLCOLORSTATIC 染蓝 → 活着 ✓ → 找到真凶 ✓
    ★ 结论:那个"靠 WM_CTLCOLORSTATIC 返回画刷给标题区染蓝"的经典技巧 ✗
    在 Native AOT 下会 fail-fast ✗ 换成普通 STATIC + 粗体字即可 ✓
    (观感略朴素一点,但稳 ✓ 而且体积没变 ✓)

下载

文件 说明
WARDEN-Setup.exe ★ 离线安装包(推荐 ✓ 不需要网络)
WARDEN-Online-Setup.exe 在线安装器(2.4 MB ✓ 向导窗口 ✓ 校验 SHA256 ✓)
warden-cli.exe 命令行 ✓
SHA256SUMS.txt 校验值(★ 装之前对一下 ✗)

合规

  • 本体 AGPL-3.0-or-later ✓ 内嵌 .NET 运行时(MIT ✓)
  • 声明随包:THIRD-PARTY-NOTICES.md + 第三方声明\ ✓
  • 应用内:帮助工具「开源许可」章节 ✓(六语言 ✓)

尚未代码签名

SignPath Foundation 申请审核中 ✓ → SmartScreen 会提示"未知发布者"✗
请对照 SHA256SUMS.txt 校验 ✓

WARDEN 0.2.2(Beta 2 合规小修)

Choose a tag to compare

@Firefly0619sec Firefly0619sec released this 10 Oct 18:07

WARDEN 0.2.2(Beta 2 合规小修 · 预发布)

这一版改了什么

  • 补齐第三方组件声明(合规 ✓)
    · 新增 THIRD-PARTY-NOTICES.md:逐项列出随包的第三方组件
    · 收录 .NET 的 MIT 全文与官方第三方声明原文(第三方声明\)
    · ★ 复核时发现两个【微软声明里没点名、但我们确实打进了包】的组件:
    - msquic(QUIC 栈 ✓ MIT ✓)
    - zlib-ng(System.IO.Compression.Native 用 ✓ zlib 许可 ✓)
    → 已在声明里单独列出并注明出处 ✓
  • 声明随包:安装后的程序目录里就能看到
    THIRD-PARTY-NOTICES.md 与 第三方声明\(.NET 的 MIT 全文 ✓)
  • 应用内入口:帮助工具新增「开源许可」章节 ✓(六语言 ✓)

下载

文件 说明
WARDEN-Setup.exe ★ 离线安装包(推荐 ✓ 不需要网络)
WARDEN-Online-Setup.exe 在线安装器(约 5 MB ✓ 校验 SHA256 ✓)
warden-cli.exe 命令行 ✓
SHA256SUMS.txt 校验值(★ 装之前对一下 ✗)

安全与隐私

  • 主程序完全不联网 ✓ 不收集数据 ✓ 零 NuGet 依赖 ✓
  • 许可证:AGPL-3.0-or-later(本体)✓ MIT(内嵌 .NET 运行时 ✓)
  • 安装包尚未代码签名(SignPath Foundation 审核中 ✓)
    → SmartScreen 会提示"未知发布者" ✗ 请对照 SHA256SUMS.txt 校验 ✓