granttrace 2.5.1__tar.gz → 2.5.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. {granttrace-2.5.1 → granttrace-2.5.2}/CHANGELOG.md +12 -0
  2. {granttrace-2.5.1/granttrace.egg-info → granttrace-2.5.2}/PKG-INFO +43 -11
  3. {granttrace-2.5.1 → granttrace-2.5.2}/README.md +42 -10
  4. {granttrace-2.5.1 → granttrace-2.5.2}/VERIFICATION.md +110 -0
  5. {granttrace-2.5.1 → granttrace-2.5.2}/core/__init__.py +1 -1
  6. {granttrace-2.5.1 → granttrace-2.5.2}/docs/release-checklist.md +39 -1
  7. granttrace-2.5.2/docs/windows-portable.md +73 -0
  8. {granttrace-2.5.1 → granttrace-2.5.2/granttrace.egg-info}/PKG-INFO +43 -11
  9. {granttrace-2.5.1 → granttrace-2.5.2}/granttrace.egg-info/SOURCES.txt +3 -0
  10. {granttrace-2.5.1 → granttrace-2.5.2}/pyproject.toml +1 -1
  11. granttrace-2.5.2/scripts/build_windows_portable.py +134 -0
  12. granttrace-2.5.2/scripts/verify_windows_portable.py +290 -0
  13. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_rc2_security_hardening.py +1 -1
  14. {granttrace-2.5.1 → granttrace-2.5.2}/CONTRIBUTING.md +0 -0
  15. {granttrace-2.5.1 → granttrace-2.5.2}/LICENSE +0 -0
  16. {granttrace-2.5.1 → granttrace-2.5.2}/MANIFEST.in +0 -0
  17. {granttrace-2.5.1 → granttrace-2.5.2}/SECURITY.md +0 -0
  18. {granttrace-2.5.1 → granttrace-2.5.2}/api_sentinel.py +0 -0
  19. {granttrace-2.5.1 → granttrace-2.5.2}/config.example.json +0 -0
  20. {granttrace-2.5.1 → granttrace-2.5.2}/config.schema.json +0 -0
  21. {granttrace-2.5.1 → granttrace-2.5.2}/core/auditor.py +0 -0
  22. {granttrace-2.5.1 → granttrace-2.5.2}/core/config_scaffold.py +0 -0
  23. {granttrace-2.5.1 → granttrace-2.5.2}/core/config_validator.py +0 -0
  24. {granttrace-2.5.1 → granttrace-2.5.2}/core/demo.py +0 -0
  25. {granttrace-2.5.1 → granttrace-2.5.2}/core/demo_assets/__init__.py +0 -0
  26. {granttrace-2.5.1 → granttrace-2.5.2}/core/demo_assets/demo-config.json +0 -0
  27. {granttrace-2.5.1 → granttrace-2.5.2}/core/demo_assets/mock-data.json +0 -0
  28. {granttrace-2.5.1 → granttrace-2.5.2}/core/demo_assets/openapi.json +0 -0
  29. {granttrace-2.5.1 → granttrace-2.5.2}/core/diff.py +0 -0
  30. {granttrace-2.5.1 → granttrace-2.5.2}/core/evidence.py +0 -0
  31. {granttrace-2.5.1 → granttrace-2.5.2}/core/generator.py +0 -0
  32. {granttrace-2.5.1 → granttrace-2.5.2}/core/models.py +0 -0
  33. {granttrace-2.5.1 → granttrace-2.5.2}/core/onboarding.py +0 -0
  34. {granttrace-2.5.1 → granttrace-2.5.2}/core/parameters.py +0 -0
  35. {granttrace-2.5.1 → granttrace-2.5.2}/core/parser.py +0 -0
  36. {granttrace-2.5.1 → granttrace-2.5.2}/core/reporter.py +0 -0
  37. {granttrace-2.5.1 → granttrace-2.5.2}/core/reproduction.py +0 -0
  38. {granttrace-2.5.1 → granttrace-2.5.2}/core/sarif.py +0 -0
  39. {granttrace-2.5.1 → granttrace-2.5.2}/core/transactions.py +0 -0
  40. {granttrace-2.5.1 → granttrace-2.5.2}/docs/advanced.md +0 -0
  41. {granttrace-2.5.1 → granttrace-2.5.2}/docs/assets/report-preview.png +0 -0
  42. {granttrace-2.5.1 → granttrace-2.5.2}/docs/business-scenarios.md +0 -0
  43. {granttrace-2.5.1 → granttrace-2.5.2}/docs/configuration.md +0 -0
  44. {granttrace-2.5.1 → granttrace-2.5.2}/docs/parameter-serialization.md +0 -0
  45. {granttrace-2.5.1 → granttrace-2.5.2}/examples/README.md +0 -0
  46. {granttrace-2.5.1 → granttrace-2.5.2}/examples/sample_report.html +0 -0
  47. {granttrace-2.5.1 → granttrace-2.5.2}/examples/sample_result.json +0 -0
  48. {granttrace-2.5.1 → granttrace-2.5.2}/granttrace.egg-info/dependency_links.txt +0 -0
  49. {granttrace-2.5.1 → granttrace-2.5.2}/granttrace.egg-info/entry_points.txt +0 -0
  50. {granttrace-2.5.1 → granttrace-2.5.2}/granttrace.egg-info/requires.txt +0 -0
  51. {granttrace-2.5.1 → granttrace-2.5.2}/granttrace.egg-info/top_level.txt +0 -0
  52. {granttrace-2.5.1 → granttrace-2.5.2}/mock_server/__init__.py +0 -0
  53. {granttrace-2.5.1 → granttrace-2.5.2}/mock_server/server.py +0 -0
  54. {granttrace-2.5.1 → granttrace-2.5.2}/openapi.json +0 -0
  55. {granttrace-2.5.1 → granttrace-2.5.2}/scripts/verify_business_scenarios.py +0 -0
  56. {granttrace-2.5.1 → granttrace-2.5.2}/scripts/verify_examples.py +0 -0
  57. {granttrace-2.5.1 → granttrace-2.5.2}/scripts/verify_install.py +0 -0
  58. {granttrace-2.5.1 → granttrace-2.5.2}/setup.cfg +0 -0
  59. {granttrace-2.5.1 → granttrace-2.5.2}/test_suite.py +0 -0
  60. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_auditor_integration.py +0 -0
  61. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_business_authorization.py +0 -0
  62. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_cli_report_boundaries.py +0 -0
  63. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_config_scaffold.py +0 -0
  64. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_config_validation.py +0 -0
  65. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_curl_report.py +0 -0
  66. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_demo.py +0 -0
  67. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_diff.py +0 -0
  68. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_diff_hardening.py +0 -0
  69. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_evidence.py +0 -0
  70. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_first_run_guidance.py +0 -0
  71. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_merge_patch_recovery.py +0 -0
  72. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_onboarding.py +0 -0
  73. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_onboarding_cli.py +0 -0
  74. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_parameter_compatibility.py +0 -0
  75. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_parameter_serialization.py +0 -0
  76. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_parser_generator_hardening.py +0 -0
  77. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_rc3_hardening.py +0 -0
  78. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_release_bola.py +0 -0
  79. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_release_config.py +0 -0
  80. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_release_evidence.py +0 -0
  81. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_release_identity.py +0 -0
  82. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_release_transactions.py +0 -0
  83. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_report_usability.py +0 -0
  84. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_reproduction.py +0 -0
  85. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_sarif.py +0 -0
  86. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_sarif_cli.py +0 -0
  87. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_schema_regressions.py +0 -0
  88. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_spec_config_cross_checks.py +0 -0
  89. {granttrace-2.5.1 → granttrace-2.5.2}/tests/test_v22_auditor_hardening.py +0 -0
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.5.2 - 2026-10-05
4
+
5
+ ### Maintenance
6
+
7
+ - Documentation / distribution metadata maintenance release: package the current
8
+ README for the PyPI project page, retaining the corrected Windows download,
9
+ unsigned-program notice, macOS / Linux installation and workflow explanation.
10
+ - Align package/runtime versions and Windows portable filenames, launcher,
11
+ bundled instructions and release workflow metadata at `2.5.2`.
12
+ - No changes to BOLA / IDOR / Mass Assignment detection, the security model,
13
+ default read-only behavior, CLI semantics or core implementation.
14
+
3
15
  ## 2.5.1 - 2026-10-05
4
16
 
5
17
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: granttrace
3
- Version: 2.5.1
3
+ Version: 2.5.2
4
4
  Summary: Safety-first OpenAPI authorization auditing tool for BOLA, IDOR and Mass Assignment testing
5
5
  Author: GrantTrace contributors
6
6
  License-Expression: Apache-2.0
@@ -32,27 +32,32 @@ Dynamic: license-file
32
32
  ![Python](https://img.shields.io/badge/python-3.9%2B-blue)
33
33
  ![License](https://img.shields.io/badge/license-Apache--2.0-green)
34
34
 
35
- **Stable:** [v2.5.0](https://github.com/ysc070528/granttrace/releases/tag/v2.5.0) · [PyPI 2.5.0](https://pypi.org/project/granttrace/2.5.0/)
35
+ **源码 / 包元数据版本:2.5.2** · [GitHub Releases](https://github.com/ysc070528/granttrace/releases) · [PyPI](https://pypi.org/project/granttrace/)
36
36
 
37
- 源码版本为 **2.5.1**,发布前验收已完成,**Ready for release(未发布)**;尚未创建 v2.5.1 tag / GitHub Release 或发布到 PyPI。
37
+ Windows 便携版已正式提供;已发布版本与下载资产以官方 GitHub Release / PyPI 页面实际列出的版本为准。
38
38
 
39
39
  An OpenAPI authorization auditor that compares identities, verifies persisted changes, and reports restoration evidence.
40
40
 
41
41
  安全优先、证据驱动的 OpenAPI 权限审计工具。检查 BOLA / IDOR 与 Mass Assignment,输出身份对比、持久化变更及恢复核验的 HTML / JSON 报告。默认只读;主动写测试须显式开启并配置允许清单与独立读回。
42
42
 
43
- [五分钟体验](#五分钟体验) · [完整示例报告](https://github.com/ysc070528/granttrace/blob/main/examples/sample_report.html) · [配置指南](https://github.com/ysc070528/granttrace/blob/main/docs/configuration.md) · [命令行与迁移](https://github.com/ysc070528/granttrace/blob/main/docs/advanced.md) · [验收记录](https://github.com/ysc070528/granttrace/blob/main/VERIFICATION.md) · [发布自检](https://github.com/ysc070528/granttrace/blob/main/docs/release-checklist.md)
43
+ 仅对明确获得授权的系统进行测试;主动写测试仅应在可丢弃、隔离的测试资源上启用。
44
44
 
45
- ## 为什么是 GrantTrace / Why GrantTrace
45
+ ## Windows 用户:解压后双击体验
46
46
 
47
- - **Compare identities**:比较 Owner / Visitor / Anonymous 等身份访问同一资源的结果。
48
- - **Verify real side effects**:通过独立读回验证状态是否真正持久化,不只看 HTTP 状态码。
49
- - **Restore safely**:主动 PATCH 测试使用显式 allowlist、原始状态快照、恢复与恢复验证。
47
+ **推荐 Windows 10 / 11(64 位),便携包无需安装 Python。** 从官方 [GitHub Release](https://github.com/ysc070528/granttrace/releases/latest) 选择对应版本下载:
50
48
 
51
- <img src="https://raw.githubusercontent.com/ysc070528/granttrace/v2.5.0/docs/assets/report-preview.png" alt="GrantTrace 报告:身份访问摘要、修复建议和端点筛选" width="900">
49
+ 1. 下载 Release 中的 Windows x64 ZIP(2.5.2 对应文件名为 **`GrantTrace-v2.5.2-Windows-x64.zip`**),将整个 ZIP 解压到一个普通文件夹。
50
+ 2. 打开解压后的文件夹,双击 **`Start-Demo.bat`**;保留旁边的程序和依赖文件。
51
+ 3. 查看自动打开的 HTML 报告;若未打开,按启动器打印的 HTML 路径手动打开。HTML / JSON 保存在解压目录的 `granttrace-demo/session-*/run-*/`。Demo 只使用内置、可丢弃的 `127.0.0.1` 靶场,结束时关闭靶场并核验数据恢复。
52
52
 
53
- ## 五分钟体验
53
+ 不要直接在 ZIP 内运行启动器。便携包版本以包内 `README.txt` 和 `.\granttrace.exe --version` 为准;程序、启动器和报告在解压目录内使用,不需要修改系统 PATH。维护者的构建与验收步骤见 [Windows 便携包说明](docs/windows-portable.md)。
54
54
 
55
- 需要 Python 3.9+。当前已发布稳定版 **v2.5.0**:[PyPI](https://pypi.org/project/granttrace/2.5.0/)。安装包包含内置 `granttrace demo`,首次体验只需:
55
+ Windows 便携程序尚未进行代码签名,部分系统可能显示 Microsoft Defender SmartScreen 或“发布者未知”提示。请只从官方 GitHub Release 下载,并使用同一 Release 的 **`SHA256SUMS.txt`** 核对完整性。
56
+
57
+ ## macOS / Linux 用户:使用 Python 安装
58
+
59
+ 需要 **Python 3.9+**;当前不提供 macOS / Linux standalone binary,Windows ZIP 仅适用于 Windows。
60
+ 已有 Python 的 Windows 用户也可沿用此方式:
56
61
 
57
62
  ```bash
58
63
  python -m pip install --upgrade granttrace
@@ -60,6 +65,33 @@ granttrace --version
60
65
  granttrace demo
61
66
  ```
62
67
 
68
+ [Python 五分钟体验](#五分钟体验) · [完整示例报告](https://github.com/ysc070528/granttrace/blob/main/examples/sample_report.html) · [配置指南](https://github.com/ysc070528/granttrace/blob/main/docs/configuration.md) · [命令行与迁移](https://github.com/ysc070528/granttrace/blob/main/docs/advanced.md) · [验收记录](https://github.com/ysc070528/granttrace/blob/main/VERIFICATION.md) · [发布自检](https://github.com/ysc070528/granttrace/blob/main/docs/release-checklist.md)
69
+
70
+ ## 为什么是 GrantTrace / Why GrantTrace
71
+
72
+ - **Compare identities**:比较 Owner / Visitor / Anonymous 等身份访问同一资源的结果。
73
+ - **Verify real side effects**:通过独立读回验证状态是否真正持久化,不只看 HTTP 状态码。
74
+ - **Restore safely**:主动 PATCH 测试使用显式 allowlist、原始状态快照、恢复与恢复验证。
75
+
76
+ ## 10 秒看懂 GrantTrace
77
+
78
+ ```mermaid
79
+ flowchart TD
80
+ A["OpenAPI Spec + Owner / Visitor / Anonymous"] --> B["GrantTrace"]
81
+ B --> C["只读身份差异比较(默认)"]
82
+ C --> R["HTML / JSON(可选 SARIF)"]
83
+ B -->|显式开启并满足写入安全条件| W["PATCH 测试"]
84
+ W --> D["独立 GET 读回"]
85
+ D --> E["恢复并验证"]
86
+ E --> R
87
+ ```
88
+
89
+ <img src="https://raw.githubusercontent.com/ysc070528/granttrace/v2.5.1/docs/assets/report-preview.png" alt="GrantTrace 报告:身份访问摘要、修复建议和端点筛选" width="900">
90
+
91
+ ## 五分钟体验
92
+
93
+ 使用上方 Windows 启动器或 Python 安装命令,即可体验内置 `granttrace demo`。
94
+
63
95
  安装后可在任意目录运行,无需 clone、准备配置、另开终端或访问外部 API。Demo 自动启动动态端口的 `127.0.0.1` 靶场,比较身份访问、演示 BOLA / IDOR 与 Mass Assignment,并通过独立读回与恢复核验展示 PATCH 测试证据。**主动写操作仅发生在内置、可丢弃的本机靶场**;demo 不接受外部 target 或用户凭据,结束时关闭靶场。
64
96
 
65
97
  HTML / JSON 报告保留在当前目录的 `granttrace-demo/` 唯一子目录,终端会输出绝对路径,不覆盖已有报告。可选用 `granttrace demo --output-dir PATH` 指定报告父目录,或 `granttrace demo --read-only` 仅体验只读身份访问,发送 **0 PATCH**。
@@ -5,27 +5,32 @@
5
5
  ![Python](https://img.shields.io/badge/python-3.9%2B-blue)
6
6
  ![License](https://img.shields.io/badge/license-Apache--2.0-green)
7
7
 
8
- **Stable:** [v2.5.0](https://github.com/ysc070528/granttrace/releases/tag/v2.5.0) · [PyPI 2.5.0](https://pypi.org/project/granttrace/2.5.0/)
8
+ **源码 / 包元数据版本:2.5.2** · [GitHub Releases](https://github.com/ysc070528/granttrace/releases) · [PyPI](https://pypi.org/project/granttrace/)
9
9
 
10
- 源码版本为 **2.5.1**,发布前验收已完成,**Ready for release(未发布)**;尚未创建 v2.5.1 tag / GitHub Release 或发布到 PyPI。
10
+ Windows 便携版已正式提供;已发布版本与下载资产以官方 GitHub Release / PyPI 页面实际列出的版本为准。
11
11
 
12
12
  An OpenAPI authorization auditor that compares identities, verifies persisted changes, and reports restoration evidence.
13
13
 
14
14
  安全优先、证据驱动的 OpenAPI 权限审计工具。检查 BOLA / IDOR 与 Mass Assignment,输出身份对比、持久化变更及恢复核验的 HTML / JSON 报告。默认只读;主动写测试须显式开启并配置允许清单与独立读回。
15
15
 
16
- [五分钟体验](#五分钟体验) · [完整示例报告](https://github.com/ysc070528/granttrace/blob/main/examples/sample_report.html) · [配置指南](https://github.com/ysc070528/granttrace/blob/main/docs/configuration.md) · [命令行与迁移](https://github.com/ysc070528/granttrace/blob/main/docs/advanced.md) · [验收记录](https://github.com/ysc070528/granttrace/blob/main/VERIFICATION.md) · [发布自检](https://github.com/ysc070528/granttrace/blob/main/docs/release-checklist.md)
16
+ 仅对明确获得授权的系统进行测试;主动写测试仅应在可丢弃、隔离的测试资源上启用。
17
17
 
18
- ## 为什么是 GrantTrace / Why GrantTrace
18
+ ## Windows 用户:解压后双击体验
19
19
 
20
- - **Compare identities**:比较 Owner / Visitor / Anonymous 等身份访问同一资源的结果。
21
- - **Verify real side effects**:通过独立读回验证状态是否真正持久化,不只看 HTTP 状态码。
22
- - **Restore safely**:主动 PATCH 测试使用显式 allowlist、原始状态快照、恢复与恢复验证。
20
+ **推荐 Windows 10 / 11(64 位),便携包无需安装 Python。** 从官方 [GitHub Release](https://github.com/ysc070528/granttrace/releases/latest) 选择对应版本下载:
23
21
 
24
- <img src="https://raw.githubusercontent.com/ysc070528/granttrace/v2.5.0/docs/assets/report-preview.png" alt="GrantTrace 报告:身份访问摘要、修复建议和端点筛选" width="900">
22
+ 1. 下载 Release 中的 Windows x64 ZIP(2.5.2 对应文件名为 **`GrantTrace-v2.5.2-Windows-x64.zip`**),将整个 ZIP 解压到一个普通文件夹。
23
+ 2. 打开解压后的文件夹,双击 **`Start-Demo.bat`**;保留旁边的程序和依赖文件。
24
+ 3. 查看自动打开的 HTML 报告;若未打开,按启动器打印的 HTML 路径手动打开。HTML / JSON 保存在解压目录的 `granttrace-demo/session-*/run-*/`。Demo 只使用内置、可丢弃的 `127.0.0.1` 靶场,结束时关闭靶场并核验数据恢复。
25
25
 
26
- ## 五分钟体验
26
+ 不要直接在 ZIP 内运行启动器。便携包版本以包内 `README.txt` 和 `.\granttrace.exe --version` 为准;程序、启动器和报告在解压目录内使用,不需要修改系统 PATH。维护者的构建与验收步骤见 [Windows 便携包说明](docs/windows-portable.md)。
27
27
 
28
- 需要 Python 3.9+。当前已发布稳定版 **v2.5.0**:[PyPI](https://pypi.org/project/granttrace/2.5.0/)。安装包包含内置 `granttrace demo`,首次体验只需:
28
+ Windows 便携程序尚未进行代码签名,部分系统可能显示 Microsoft Defender SmartScreen 或“发布者未知”提示。请只从官方 GitHub Release 下载,并使用同一 Release 的 **`SHA256SUMS.txt`** 核对完整性。
29
+
30
+ ## macOS / Linux 用户:使用 Python 安装
31
+
32
+ 需要 **Python 3.9+**;当前不提供 macOS / Linux standalone binary,Windows ZIP 仅适用于 Windows。
33
+ 已有 Python 的 Windows 用户也可沿用此方式:
29
34
 
30
35
  ```bash
31
36
  python -m pip install --upgrade granttrace
@@ -33,6 +38,33 @@ granttrace --version
33
38
  granttrace demo
34
39
  ```
35
40
 
41
+ [Python 五分钟体验](#五分钟体验) · [完整示例报告](https://github.com/ysc070528/granttrace/blob/main/examples/sample_report.html) · [配置指南](https://github.com/ysc070528/granttrace/blob/main/docs/configuration.md) · [命令行与迁移](https://github.com/ysc070528/granttrace/blob/main/docs/advanced.md) · [验收记录](https://github.com/ysc070528/granttrace/blob/main/VERIFICATION.md) · [发布自检](https://github.com/ysc070528/granttrace/blob/main/docs/release-checklist.md)
42
+
43
+ ## 为什么是 GrantTrace / Why GrantTrace
44
+
45
+ - **Compare identities**:比较 Owner / Visitor / Anonymous 等身份访问同一资源的结果。
46
+ - **Verify real side effects**:通过独立读回验证状态是否真正持久化,不只看 HTTP 状态码。
47
+ - **Restore safely**:主动 PATCH 测试使用显式 allowlist、原始状态快照、恢复与恢复验证。
48
+
49
+ ## 10 秒看懂 GrantTrace
50
+
51
+ ```mermaid
52
+ flowchart TD
53
+ A["OpenAPI Spec + Owner / Visitor / Anonymous"] --> B["GrantTrace"]
54
+ B --> C["只读身份差异比较(默认)"]
55
+ C --> R["HTML / JSON(可选 SARIF)"]
56
+ B -->|显式开启并满足写入安全条件| W["PATCH 测试"]
57
+ W --> D["独立 GET 读回"]
58
+ D --> E["恢复并验证"]
59
+ E --> R
60
+ ```
61
+
62
+ <img src="https://raw.githubusercontent.com/ysc070528/granttrace/v2.5.1/docs/assets/report-preview.png" alt="GrantTrace 报告:身份访问摘要、修复建议和端点筛选" width="900">
63
+
64
+ ## 五分钟体验
65
+
66
+ 使用上方 Windows 启动器或 Python 安装命令,即可体验内置 `granttrace demo`。
67
+
36
68
  安装后可在任意目录运行,无需 clone、准备配置、另开终端或访问外部 API。Demo 自动启动动态端口的 `127.0.0.1` 靶场,比较身份访问、演示 BOLA / IDOR 与 Mass Assignment,并通过独立读回与恢复核验展示 PATCH 测试证据。**主动写操作仅发生在内置、可丢弃的本机靶场**;demo 不接受外部 target 或用户凭据,结束时关闭靶场。
37
69
 
38
70
  HTML / JSON 报告保留在当前目录的 `granttrace-demo/` 唯一子目录,终端会输出绝对路径,不覆盖已有报告。可选用 `granttrace demo --output-dir PATH` 指定报告父目录,或 `granttrace demo --read-only` 仅体验只读身份访问,发送 **0 PATCH**。
@@ -1,5 +1,115 @@
1
1
  # GrantTrace 验收记录
2
2
 
3
+ ## 2026-10-05 v2.5.2 文档与分发元数据同步验收
4
+
5
+ 基线为已合并 PR #30 的 main `0b9c117f4e2d6187dc2f1fb64becb68d2e887fc5`,
6
+ 分支为 `release/v2.5.2-docs-sync`。这是 documentation / distribution metadata
7
+ maintenance release 准备;只同步版本、当前 README 和 Windows 分发元数据。
8
+ 与 v2.5.1 tag / 本轮 main 相比,核心目录只有 `core.__version__` 从
9
+ `2.5.1` 改为 `2.5.2`;BOLA / IDOR / Mass Assignment、安全模型、默认只读、
10
+ CLI 语义与其他产品代码完全不变。唯一测试改动是已有固定版本断言同步。
11
+
12
+ ### 本轮本地实际结果
13
+
14
+ | 检查 | 结果 |
15
+ |---|---|
16
+ | 全量测试与 configured branch-aware coverage | Windows CPython 3.14.5:560 tests OK,无跳过;85.27%,通过 80% 门槛 |
17
+ | Mypy / Ruff | 18 个源码文件无类型问题;Ruff 全部通过 |
18
+ | Business scenarios | 6/6 通过;误报、漏报、不确定均为 0 |
19
+ | JSON / YAML 示例 | 只读与 active 均通过;数据库完整恢复、rollback 核验和统计等价均通过 |
20
+ | wheel / sdist | `granttrace-2.5.2-py3-none-any.whl` 与 `granttrace-2.5.2.tar.gz` 构建成功;twine strict 均 PASS |
21
+ | README / PyPI long description | wheel METADATA 与 sdist PKG-INFO 的 Markdown 正文均等于当前 README;sdist README 字节相同;无本轮指定的旧发布状态文案 |
22
+ | 包内容 | wheel 的 28 个 RECORD 记录核验通过,23 个产品 / demo 资源文件与源码字节一致;sdist 无 dist、虚拟环境、旧发布资产或本地配置 |
23
+ | 源码外 fresh venv 安装 | CLI、project、wheel、installed metadata / runtime 均为 2.5.2;只读零 PATCH,active / Demo 读回、恢复、服务关闭、JSON / YAML 离线计划均通过 |
24
+ | Windows x64 portable | ZIP 构建成功;两种真实解压路径下的 CLI、active / readonly Demo、YAML dry-run、BAT、恢复与独立 TCP / 进程检查均通过 |
25
+
26
+ 本地 Windows 文件为 `dist/v252-windows/GrantTrace-v2.5.2-Windows-x64.zip`,
27
+ SHA256 为 `4bb273ae13f55f95c6ce4416aee47f3238bc560f6fa4d693507d7a3ce3f665ad`;
28
+ 构建 JSON、smoke JSON、SHA256SUMS.txt 与独立 Get-FileHash 一致。
29
+ 这是基线 commit 上的预提交工作树构建(`source_tree_dirty=true`),
30
+ 不冒充最终 PR HEAD 的构建。Windows 11 x64 实测清除了子进程的 Python PATH / 环境,
31
+ 并在源码外运行;未做干净无 Python 虚拟机、人工鼠标双击、浏览器视觉或 SmartScreen 实测。
32
+
33
+ README 保留 PR #30 的新用户说明,使用通用官方 Release / PyPI 页面并标明源码 / 包元数据
34
+ 版本 2.5.2,不提前声称该版本已发布。预览图仍固定在实际存在且未变的 v2.5.1 tag。
35
+ 已发布 v2.5.1 的 tag、Release 及其附件、PyPI、Topics、SECURITY.md 均未改动。
36
+ 本轮未创建 v2.5.2 tag / GitHub Release,未发布 PyPI,也未执行 workflow_dispatch。
37
+
38
+ 最终新 HEAD 的 CI、CodeQL 和 Windows 工作流以本次 PR 的实际运行记录为准;
39
+ 本地与历史绿灯不替代该 HEAD 的远程检查。日志和构建证据只存放于被忽略的 dist。
40
+ 下方完整保留各轮历史事实;历史版本的“当前”“未发布”“待添加”均指当时状态。
41
+
42
+ ## 2026-10-05 v2.5.1 公开文档与当前分发状态
43
+
44
+ 本轮基于 main `0214905dc43f2b50cf0c2c93834091f72276e798`,
45
+ 只同步文档,不修改产品、测试、Windows 打包逻辑或版本。
46
+
47
+ - [GitHub v2.5.1 Release](https://github.com/ysc070528/granttrace/releases/tag/v2.5.1)
48
+ 实际存在,Release ID `403394773`,非 draft;现有附件为
49
+ `GrantTrace-v2.5.1-Windows-x64.zip` 与 `SHA256SUMS.txt`。
50
+ 实际读取校验和,ZIP 的 SHA256 与 GitHub asset digest 一致:
51
+ `c9cdc2d42305f3160ce2df73cfeddf389c68b8515600eda11420b224c402307e`。
52
+ - [PyPI 2.5.1](https://pypi.org/project/granttrace/2.5.1/) 实际存在 wheel / sdist。
53
+ 页面中的部分发布状态文字来自已发布 wheel / sdist 构建时的历史 README,
54
+ 仍提到 stable v2.5.0 与 Ready for release;不影响包本身和安装使用。
55
+ 当前准确公开状态以 GitHub README 与 v2.5.1 Release 为准。
56
+ 本轮不覆盖 PyPI 2.5.1、不发布 2.5.2,也不改版本。
57
+ - v2.5.1 tag 仍指向 `16a605d245e34dcc1aa6d1449b1195c2ac4c434a`。
58
+ tag 中的 `docs/assets/report-preview.png` 实际存在;raw 链接返回
59
+ HTTP 200 / image/png / 99428 bytes,PNG 内容与现有图片完全一致,未修改图片。
60
+ - Topics 已包含现有 API security / authorization / BOLA / IDOR / Mass Assignment 等标签;
61
+ 本轮保持不变。SECURITY.md 已覆盖明确授权、默认只读、PATCH opt-in、恢复与报告敏感数据,保持不变。
62
+
63
+ 本轮只做文档与链接检查,不重新构建、执行扫描或改动已发布资产。
64
+ 最终文档提交的现有 CI / CodeQL 以对应 PR HEAD 和运行记录为准,历史绿灯不代用。
65
+ 以下各轮验收按当时状态保留;旧“未发布”“待添加资产”不表示当前分发状态。
66
+
67
+ ## 2026-10-05 v2.5.1 Windows 便携分发验收
68
+
69
+ 本轮基于 main `16a605d245e34dcc1aa6d1449b1195c2ac4c434a`,
70
+ 分支为 `fix/v2.5.1-windows-portable`,版本保持 **2.5.1**。
71
+ GitHub 的 [v2.5.1 Release](https://github.com/ysc070528/granttrace/releases/tag/v2.5.1)
72
+ 已于 `2026-10-05T05:32:19Z` 正式发布(ID `403394773`),本轮开始时 assets 为空。
73
+ [PyPI 2.5.1](https://pypi.org/project/granttrace/2.5.1/) 的 wheel / sdist 也已实际查询确认存在。
74
+ 这些是已存在的发布;本轮只准备 Windows ZIP 和校验和,不创建或改动 tag / Release,也不上传 PyPI。
75
+
76
+ 采用 **CPython 3.14.5 x64 / PyInstaller 6.22.3 one-folder**,关闭 UPX,
77
+ 固定 UTF-8 输出并包含 `core.demo_assets` 三个 JSON、mock 模块、内嵌 HTML 模板、
78
+ Python / DLL 与许可证。没有修改核心扫描代码、CLI 命令语义、检测规则、默认只读或版本。
79
+ `--version` 保持实际完整输出 **`GrantTrace 2.5.1`**。
80
+
81
+ 本地 Windows 11 x64(10.0.26200)实际验证:
82
+
83
+ | 检查 | 实际结果 |
84
+ |---|---|
85
+ | 完整 pytest | **560 passed / 860 subtests passed** |
86
+ | Mypy / Ruff | 18 个源码文件 **0 issues**;仓库根目录 Ruff 通过 |
87
+ | 业务场景与原有 examples | **6/6**;只读 / active JSON / active YAML 均通过,完整恢复数据库,未更新示例 |
88
+ | 原有 `verify_install.py` | 本次 wheel 在仓库外 fresh venv 安装,metadata / CLI / runtime 均 2.5.1;Demo、只读 / active 扫描、JSON / YAML 0 请求计划与草稿阻断通过 |
89
+ | EXE `--version` / `--help` | 输出 `GrantTrace 2.5.1`;help 返回 0 |
90
+ | EXE active / read-only Demo | HTML / JSON 生成;active BOLA 1 / Mass Assignment 1,独立 readback、rollback、数据恢复与服务关闭通过;read-only 只发送 GET |
91
+ | ZIP 空格 / 中文路径与启动器 | 真实解压到仓库外,两种路径均通过;子进程不含 Python PATH / Python 环境变量,从空工作目录启动;BAT 正常执行、打印完整报告路径并保留 pause |
92
+ | 独立运行检查 | 每次报告的 loopback 端口均已关闭;可查询的包内进程无残留;YAML dry-run 0 请求,未开启写操作 |
93
+ | BAT 错误路径 | 缺少 EXE 时返回 2,中文错误和暂停提示可见 |
94
+ | 默认报告打开 | 另行不设置 `GRANTTRACE_DEMO_NO_OPEN` 执行 BAT,返回 0,系统打开 HTML 未报告错误 |
95
+
96
+ 自动 BAT 检查通过标准输入模拟按键,并在 CI 抑制打开浏览器;
97
+ 不冒称人工鼠标双击、浏览器视觉验收或未安装 Python 的干净虚拟机实测。
98
+ 实际 EXE 子进程只使用 ZIP 内 runtime,未从开发环境或源码目录加载依赖。
99
+ 本机构建 / 执行未遇安全软件拦截;EXE 未签名,不能保证下载后的 SmartScreen 或其他杀毒软件无提示 / 误报。
100
+ 没有关闭安全软件或加入绕过代码。
101
+
102
+ 产物为 `GrantTrace-v2.5.1-Windows-x64.zip` 和 `SHA256SUMS.txt`;
103
+ 源码、工具版本、大小和哈希见每次的 `windows-portable-build.json`,
104
+ 独立启动与路径证据见 `windows-portable-verification.json`。
105
+ [Windows 构建工作流](https://github.com/ysc070528/granttrace/actions/workflows/windows-package.yml)
106
+ 只上传已通过 smoke 的 Actions artifact,不自动修改 Release。
107
+ 最新实际 PR HEAD 须独立通过 Windows 构建及原有 CI / CodeQL,
108
+ 不得把本轮本地或其他 SHA 的结果代替该 HEAD;最终 SHA / run / ZIP 哈希在 PR 验收报告记录。
109
+ 人工确认后才可将同一已验收 ZIP 和校验和添加到既有 v2.5.1 Release。
110
+
111
+ 下方记录按各轮验收当时状态保留;其中“未发布”不表示当前 GitHub / PyPI 2.5.1 状态。
112
+
3
113
  ## 2026-10-05 v2.5.1 Ready for release 收尾验收
4
114
 
5
115
  本轮基于最新 main
@@ -1,4 +1,4 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  """GrantTrace core package."""
3
3
 
4
- __version__ = "2.5.1"
4
+ __version__ = "2.5.2"
@@ -1,4 +1,42 @@
1
- # v2.5.1 Ready for release 收尾清单
1
+ # v2.5.2 文档与分发元数据同步发布准备
2
+
3
+ - [x] 从包含 PR #30 最新 README 的 main `0b9c117f4e2d6187dc2f1fb64becb68d2e887fc5` 创建独立分支 `release/v2.5.2-docs-sync`。
4
+ - [x] 项目、runtime、固定版本断言、Windows 启动器 / 说明 / 构建与验证脚本 / artifact 名称同步为 2.5.2。
5
+ - [x] 发布 workflow 只追加 v2.5.2 元数据选项,保留现有触发、历史版本支持和发布门禁。
6
+ - [x] CHANGELOG 明确 documentation / distribution metadata maintenance release;检测逻辑、安全模型、默认只读和 CLI 语义不变。
7
+ - [x] 保留当前 README 的 Windows、SmartScreen、macOS / Linux、Mermaid 和授权说明;long description 不含指定的过时发布文案。
8
+ - [x] 全量 560 tests、85.27% branch-aware coverage、Mypy、Ruff、6 个 business scenarios 和 JSON / YAML 恢复验证通过。
9
+ - [x] 新 wheel / sdist 构建与 twine strict 通过;两者的 long description 均为当前 README,源码外安装验证通过。
10
+ - [x] Windows x64 ZIP 和 SHA256SUMS.txt 构建成功,既有 portable smoke 全部通过;范围与限制见 [本轮验收](../VERIFICATION.md#2026-10-05-v252-文档与分发元数据同步验收)。
11
+
12
+ 最终新 HEAD 的 CI / CodeQL / Windows 工作流结果见本轮 PR,不使用历史结果代替。
13
+ 以下发布动作必须等待维护者人工确认,本轮不执行:
14
+
15
+ - [ ] 人工审查并合并本轮 PR。
16
+ - [ ] 在确认最终 main 与远程检查后创建 v2.5.2 tag / GitHub Release。
17
+ - [ ] 人工确认后发布 PyPI 2.5.2,并核对页面版本、long description 与正式 Windows 附件。
18
+
19
+ 现有 v2.5.1 tag / Release / PyPI 与资产保持不变。下方是对应时点的完整历史记录,
20
+ 不是要求重新发布或重复执行历史步骤。
21
+
22
+ ---
23
+
24
+ # v2.5.1 公开发布与分发状态(历史快照)
25
+
26
+ - [x] [GitHub v2.5.1 Release](https://github.com/ysc070528/granttrace/releases/tag/v2.5.1) 已正式存在。
27
+ - [x] Release 已提供 `GrantTrace-v2.5.1-Windows-x64.zip` 和 `SHA256SUMS.txt`。
28
+ - [x] [PyPI 2.5.1](https://pypi.org/project/granttrace/2.5.1/) 的 wheel / sdist 已存在。
29
+ - [x] README 已同步 Windows 下载、未签名 / SmartScreen 提示、macOS / Linux Python 安装与 v2.5.1 预览图。
30
+ - [x] PyPI 页面历史 README 状态文字已在 [当前验收记录](../VERIFICATION.md#2026-10-05-v251-公开文档与当前分发状态) 说明;不覆盖已发布包或修改版本。
31
+ - [x] 本轮只修改文档;Topics、SECURITY.md、产品 / 测试 / Windows 打包逻辑、tag、Release 和 PyPI 均保持不变。
32
+
33
+ 最终文档 HEAD 的自动检查以对应 PR 为准;历史检查结果不代替该提交。
34
+ 下方完整保留各轮发布准备与验收时点的历史清单,包括当时未勾选的后续动作;
35
+ 其中“Ready for release”“未发布”“待添加”不表示当前状态或要求重新执行发布。
36
+
37
+ ---
38
+
39
+ # v2.5.1 Ready for release 收尾清单(历史)
2
40
 
3
41
  最新 main 为
4
42
  [`c913f19a7331dbd291332f9c7dfb7244f45fb2d3`](https://github.com/ysc070528/granttrace/commit/c913f19a7331dbd291332f9c7dfb7244f45fb2d3),
@@ -0,0 +1,73 @@
1
+ # GrantTrace 2.5.2 Windows 便携包
2
+
3
+ 分发文件为 `GrantTrace-v2.5.2-Windows-x64.zip`。用户解压整个 ZIP 后双击
4
+ `Start-Demo.bat` 即可运行内置 demo,无需安装 Python 或修改系统 PATH。
5
+ 程序版本为 `GrantTrace 2.5.2`;本次仅同步文档与分发元数据,
6
+ 检测规则、身份比较和恢复核验沿用 2.5.1 CLI。
7
+ 推荐 Windows 10 / 11(64 位)。启动器自动打开 HTML 并打印确切路径;报告保存在
8
+ 解压目录的 `granttrace-demo/session-*/run-*/`,每次运行使用新的目录。
9
+
10
+ GitHub 已正式发布 [v2.5.1](https://github.com/ysc070528/granttrace/releases/tag/v2.5.1),
11
+ 现已提供 [GrantTrace-v2.5.1-Windows-x64.zip](https://github.com/ysc070528/granttrace/releases/download/v2.5.1/GrantTrace-v2.5.1-Windows-x64.zip)
12
+ 和 [SHA256SUMS.txt](https://github.com/ysc070528/granttrace/releases/download/v2.5.1/SHA256SUMS.txt)。
13
+ 普通用户以正式 Release 页面实际提供的版本为准;本轮 2.5.2 构建仅用于发布准备,
14
+ 不替换现有附件。以下构建工作流只上传 Actions artifact,
15
+ 不自动修改 tag / Release 或上传 PyPI。
16
+
17
+ ## 本地构建
18
+
19
+ 构建环境固定为 **CPython 3.14.5 / PyInstaller 6.22.3(Windows x64)**。
20
+ 使用独立虚拟环境,从仓库根目录执行;创建环境后先核对 Python 版本。
21
+ 采用 PyInstaller
22
+ one-folder 构建,关闭 UPX;ZIP 包含可执行文件、依赖、demo 资源和启动器,
23
+ 运行时保留解压目录结构。
24
+
25
+ ```powershell
26
+ py -3.14 -m venv dist/windows-build-env
27
+ .\dist\windows-build-env\Scripts\python.exe --version
28
+ .\dist\windows-build-env\Scripts\python.exe -m pip install -r packaging/windows/requirements-build.txt
29
+ .\dist\windows-build-env\Scripts\python.exe -m pip install --no-build-isolation --no-deps .
30
+ .\dist\windows-build-env\Scripts\python.exe scripts/build_windows_portable.py
31
+ .\dist\windows-build-env\Scripts\python.exe scripts/verify_windows_portable.py --zip dist/GrantTrace-v2.5.2-Windows-x64.zip --output dist/windows-portable-verification.json
32
+ ```
33
+
34
+ 最终交付文件为:
35
+
36
+ - `dist/GrantTrace-v2.5.2-Windows-x64.zip`
37
+ - `dist/SHA256SUMS.txt`:记录 ZIP 的 SHA-256。
38
+ - `dist/windows-portable-build.json`:记录源码 commit、工具版本、EXE / ZIP 大小与哈希。
39
+ - `dist/windows-portable-verification.json`:记录实际验证结果,供维护者复核。
40
+
41
+ 验证时使用 ZIP 解压后的程序,确认 `--version` 输出 `GrantTrace 2.5.2`,
42
+ `--help` 可用,内置 demo 能生成 HTML / JSON 报告,关闭本机服务并完整恢复数据。
43
+ 另在含空格和中文的目录双击 `Start-Demo.bat`,确认正常完成且报告可以打开。
44
+ 自动验证会实际将 ZIP 解压到仓库外的空格、中文路径,从空目录启动程序;
45
+ 子进程 PATH 仅保留 Windows 系统目录,并清除 Python / 虚拟环境变量。
46
+ 还核对只读 demo 无 PATCH、YAML 离线计划 0 请求、独立 TCP 端口关闭和可查询的包内进程无残留。
47
+ CI 为避免打开浏览器设置 `GRANTTRACE_DEMO_NO_OPEN=1`;正常双击仍默认打开 HTML。
48
+ 暂停保留,自动验证只通过标准输入模拟按键,不隐藏程序或关闭安全软件。
49
+
50
+ ## GitHub Actions 构建产物与独立验收
51
+
52
+ 1. 在 PR 的 Checks 或仓库 Actions 中打开 **GrantTrace Windows portable**
53
+ 工作流(`windows-package.yml`),
54
+ 核对运行对应的 commit SHA,等待该次运行成功。
55
+ 2. 下载 **GrantTrace-v2.5.2-Windows-x64** artifact,解开外层 artifact ZIP,取出内部的
56
+ `GrantTrace-v2.5.2-Windows-x64.zip`、`SHA256SUMS.txt` 和验证 JSON。
57
+ 3. 用 `Get-FileHash -Algorithm SHA256` 核对分发 ZIP 与 `SHA256SUMS.txt`,
58
+ 阅读验证 JSON,再将分发 ZIP 完整解压到新的测试目录。
59
+ 4. 在没有安装 Python 的 Windows x64 环境双击 `Start-Demo.bat`,
60
+ 核对版本、报告、服务关闭和数据恢复;记录操作系统、commit 和结果。
61
+
62
+ 这些步骤用于维护者验证构建产物,不会替换已经提供的 Release 附件。
63
+
64
+ 本轮 2.5.2 已在 Windows 11 x64(10.0.26200)构建并通过既有自动验证,
65
+ 其中浏览器通过 `GRANTTRACE_DEMO_NO_OPEN=1` 抑制。
66
+ 原 2.5.1 的默认启动器曾另行在不抑制浏览器打开的条件下返回 0,系统打开 HTML 未报告错误;
67
+ 此项保留为历史证据,不代替本轮检查。
68
+ 两轮均不是人工鼠标双击、浏览器视觉验收或干净 Windows 虚拟机实测。
69
+ 原便携分发 PR #29 已合并。后续提交的自动检查须核对各自实际 HEAD;
70
+ 以对应运行的 artifact 和构建 / 验证 JSON 为准,历史结果不代替新的提交。
71
+
72
+ EXE 未签名,下载后可能出现 SmartScreen 或安全软件提示;不保证所有产品均无误报。
73
+ 普通用户只从官方 GitHub Release 下载并核对 `SHA256SUMS.txt`;不关闭或绕过安全软件。
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: granttrace
3
- Version: 2.5.1
3
+ Version: 2.5.2
4
4
  Summary: Safety-first OpenAPI authorization auditing tool for BOLA, IDOR and Mass Assignment testing
5
5
  Author: GrantTrace contributors
6
6
  License-Expression: Apache-2.0
@@ -32,27 +32,32 @@ Dynamic: license-file
32
32
  ![Python](https://img.shields.io/badge/python-3.9%2B-blue)
33
33
  ![License](https://img.shields.io/badge/license-Apache--2.0-green)
34
34
 
35
- **Stable:** [v2.5.0](https://github.com/ysc070528/granttrace/releases/tag/v2.5.0) · [PyPI 2.5.0](https://pypi.org/project/granttrace/2.5.0/)
35
+ **源码 / 包元数据版本:2.5.2** · [GitHub Releases](https://github.com/ysc070528/granttrace/releases) · [PyPI](https://pypi.org/project/granttrace/)
36
36
 
37
- 源码版本为 **2.5.1**,发布前验收已完成,**Ready for release(未发布)**;尚未创建 v2.5.1 tag / GitHub Release 或发布到 PyPI。
37
+ Windows 便携版已正式提供;已发布版本与下载资产以官方 GitHub Release / PyPI 页面实际列出的版本为准。
38
38
 
39
39
  An OpenAPI authorization auditor that compares identities, verifies persisted changes, and reports restoration evidence.
40
40
 
41
41
  安全优先、证据驱动的 OpenAPI 权限审计工具。检查 BOLA / IDOR 与 Mass Assignment,输出身份对比、持久化变更及恢复核验的 HTML / JSON 报告。默认只读;主动写测试须显式开启并配置允许清单与独立读回。
42
42
 
43
- [五分钟体验](#五分钟体验) · [完整示例报告](https://github.com/ysc070528/granttrace/blob/main/examples/sample_report.html) · [配置指南](https://github.com/ysc070528/granttrace/blob/main/docs/configuration.md) · [命令行与迁移](https://github.com/ysc070528/granttrace/blob/main/docs/advanced.md) · [验收记录](https://github.com/ysc070528/granttrace/blob/main/VERIFICATION.md) · [发布自检](https://github.com/ysc070528/granttrace/blob/main/docs/release-checklist.md)
43
+ 仅对明确获得授权的系统进行测试;主动写测试仅应在可丢弃、隔离的测试资源上启用。
44
44
 
45
- ## 为什么是 GrantTrace / Why GrantTrace
45
+ ## Windows 用户:解压后双击体验
46
46
 
47
- - **Compare identities**:比较 Owner / Visitor / Anonymous 等身份访问同一资源的结果。
48
- - **Verify real side effects**:通过独立读回验证状态是否真正持久化,不只看 HTTP 状态码。
49
- - **Restore safely**:主动 PATCH 测试使用显式 allowlist、原始状态快照、恢复与恢复验证。
47
+ **推荐 Windows 10 / 11(64 位),便携包无需安装 Python。** 从官方 [GitHub Release](https://github.com/ysc070528/granttrace/releases/latest) 选择对应版本下载:
50
48
 
51
- <img src="https://raw.githubusercontent.com/ysc070528/granttrace/v2.5.0/docs/assets/report-preview.png" alt="GrantTrace 报告:身份访问摘要、修复建议和端点筛选" width="900">
49
+ 1. 下载 Release 中的 Windows x64 ZIP(2.5.2 对应文件名为 **`GrantTrace-v2.5.2-Windows-x64.zip`**),将整个 ZIP 解压到一个普通文件夹。
50
+ 2. 打开解压后的文件夹,双击 **`Start-Demo.bat`**;保留旁边的程序和依赖文件。
51
+ 3. 查看自动打开的 HTML 报告;若未打开,按启动器打印的 HTML 路径手动打开。HTML / JSON 保存在解压目录的 `granttrace-demo/session-*/run-*/`。Demo 只使用内置、可丢弃的 `127.0.0.1` 靶场,结束时关闭靶场并核验数据恢复。
52
52
 
53
- ## 五分钟体验
53
+ 不要直接在 ZIP 内运行启动器。便携包版本以包内 `README.txt` 和 `.\granttrace.exe --version` 为准;程序、启动器和报告在解压目录内使用,不需要修改系统 PATH。维护者的构建与验收步骤见 [Windows 便携包说明](docs/windows-portable.md)。
54
54
 
55
- 需要 Python 3.9+。当前已发布稳定版 **v2.5.0**:[PyPI](https://pypi.org/project/granttrace/2.5.0/)。安装包包含内置 `granttrace demo`,首次体验只需:
55
+ Windows 便携程序尚未进行代码签名,部分系统可能显示 Microsoft Defender SmartScreen 或“发布者未知”提示。请只从官方 GitHub Release 下载,并使用同一 Release 的 **`SHA256SUMS.txt`** 核对完整性。
56
+
57
+ ## macOS / Linux 用户:使用 Python 安装
58
+
59
+ 需要 **Python 3.9+**;当前不提供 macOS / Linux standalone binary,Windows ZIP 仅适用于 Windows。
60
+ 已有 Python 的 Windows 用户也可沿用此方式:
56
61
 
57
62
  ```bash
58
63
  python -m pip install --upgrade granttrace
@@ -60,6 +65,33 @@ granttrace --version
60
65
  granttrace demo
61
66
  ```
62
67
 
68
+ [Python 五分钟体验](#五分钟体验) · [完整示例报告](https://github.com/ysc070528/granttrace/blob/main/examples/sample_report.html) · [配置指南](https://github.com/ysc070528/granttrace/blob/main/docs/configuration.md) · [命令行与迁移](https://github.com/ysc070528/granttrace/blob/main/docs/advanced.md) · [验收记录](https://github.com/ysc070528/granttrace/blob/main/VERIFICATION.md) · [发布自检](https://github.com/ysc070528/granttrace/blob/main/docs/release-checklist.md)
69
+
70
+ ## 为什么是 GrantTrace / Why GrantTrace
71
+
72
+ - **Compare identities**:比较 Owner / Visitor / Anonymous 等身份访问同一资源的结果。
73
+ - **Verify real side effects**:通过独立读回验证状态是否真正持久化,不只看 HTTP 状态码。
74
+ - **Restore safely**:主动 PATCH 测试使用显式 allowlist、原始状态快照、恢复与恢复验证。
75
+
76
+ ## 10 秒看懂 GrantTrace
77
+
78
+ ```mermaid
79
+ flowchart TD
80
+ A["OpenAPI Spec + Owner / Visitor / Anonymous"] --> B["GrantTrace"]
81
+ B --> C["只读身份差异比较(默认)"]
82
+ C --> R["HTML / JSON(可选 SARIF)"]
83
+ B -->|显式开启并满足写入安全条件| W["PATCH 测试"]
84
+ W --> D["独立 GET 读回"]
85
+ D --> E["恢复并验证"]
86
+ E --> R
87
+ ```
88
+
89
+ <img src="https://raw.githubusercontent.com/ysc070528/granttrace/v2.5.1/docs/assets/report-preview.png" alt="GrantTrace 报告:身份访问摘要、修复建议和端点筛选" width="900">
90
+
91
+ ## 五分钟体验
92
+
93
+ 使用上方 Windows 启动器或 Python 安装命令,即可体验内置 `granttrace demo`。
94
+
63
95
  安装后可在任意目录运行,无需 clone、准备配置、另开终端或访问外部 API。Demo 自动启动动态端口的 `127.0.0.1` 靶场,比较身份访问、演示 BOLA / IDOR 与 Mass Assignment,并通过独立读回与恢复核验展示 PATCH 测试证据。**主动写操作仅发生在内置、可丢弃的本机靶场**;demo 不接受外部 target 或用户凭据,结束时关闭靶场。
64
96
 
65
97
  HTML / JSON 报告保留在当前目录的 `granttrace-demo/` 唯一子目录,终端会输出绝对路径,不覆盖已有报告。可选用 `granttrace demo --output-dir PATH` 指定报告父目录,或 `granttrace demo --read-only` 仅体验只读身份访问,发送 **0 PATCH**。
@@ -36,6 +36,7 @@ docs/business-scenarios.md
36
36
  docs/configuration.md
37
37
  docs/parameter-serialization.md
38
38
  docs/release-checklist.md
39
+ docs/windows-portable.md
39
40
  docs/assets/report-preview.png
40
41
  examples/README.md
41
42
  examples/sample_report.html
@@ -48,9 +49,11 @@ granttrace.egg-info/requires.txt
48
49
  granttrace.egg-info/top_level.txt
49
50
  mock_server/__init__.py
50
51
  mock_server/server.py
52
+ scripts/build_windows_portable.py
51
53
  scripts/verify_business_scenarios.py
52
54
  scripts/verify_examples.py
53
55
  scripts/verify_install.py
56
+ scripts/verify_windows_portable.py
54
57
  tests/test_auditor_integration.py
55
58
  tests/test_business_authorization.py
56
59
  tests/test_cli_report_boundaries.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "granttrace"
7
- version = "2.5.1"
7
+ version = "2.5.2"
8
8
  description = "Safety-first OpenAPI authorization auditing tool for BOLA, IDOR and Mass Assignment testing"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"