xodnr927-byte/repro-evidence-kit
GitHub: xodnr927-byte/repro-evidence-kit
用于创建、比较和验证证据包的命令行工具。
Stars: 11 | Forks: 0
# 重放证据套件
[](https://github.com/xodnr927-byte/repro-evidence-kit/actions/workflows/ci.yml)
[](https://github.com/xodnr927-byte/repro-evidence-kit/releases)
[](https://www.python.org/)
[](LICENSE)
一个用于二进制分析、安全研究和自动化工作流程中可重复性工件验证的小型命令行工具包。
它创建哈希清单,比较实验输出,并验证证据包,以便可以在不依赖私有源数据的情况下审查结果。
## 为什么这很重要
当唯一的证据是一个大日志、一个私有的输入树或口头声明“没有重要的事情改变”时,生成的工件很难进行审查。`repro-evidence-kit`保持审查表面小:它记录字节哈希,将预期的输出更改与意外的更改分开,并存储足够的命令上下文,以便另一个维护者可以重新运行或挑战证据。
该项目有意保持目标中立。它应该帮助维护者在CI、安全研究、二进制分析、数据处理和自动化工作流程中,而无需他们发布专有样本或项目特定的案例文件。
## 用例
- 审查在工件密集的CI或发布自动化期间发生了什么变化。
- 验证沙箱实验只产生了明确允许的输出。
- 将紧凑的、基于哈希的证据包附加到拉取请求或研究笔记中。
- 保持生成的报告可审查,而无需发布私有输入数据。
## 这证明了什么
- 文件清单证明了它们列出的文件的字节身份。
- 清单差异将预期的工件更改与意外的更改分开。
- 沙箱验证证明了观察到的输出集保持在明确的允许列表内。
- 证据包保留了命令上下文、输入、输出和哈希以供审查。
- 签名侧车添加了本地篡改检测以精确地检测证据包的字节。
## 这不证明什么
- 哈希不能证明生成的输出在语义上是正确的。
- 通过沙箱检查通过不能证明命令是安全的。
- 签名侧车不能证明签名者的身份、密钥信任、命令执行或工件语义。
- 私人或专有输入仍然需要审查者的判断,这超出了此存储库的范围。
## 功能
- 为文件或过滤后的目录树创建确定性的SHA-256清单。
- 比较两个清单以识别添加的、删除的、更改的和未更改的工件。
- 将沙箱/实验输出与明确的允许列表进行验证,可选JUnit XML用于CI报告消费者。
- 验证简单的YAML或JSON证据包,可选JSON Schema检查。
- 使用本地密钥篡改检测原型对证据包侧车进行签名和验证。
- 仅包括合成公共示例。
## 安装
在发布软件包索引之前,从存储库安装:
```
pip install "git+https://github.com/xodnr927-byte/repro-evidence-kit.git@v0.3.0"
```
对于本地开发:
```
python -m venv .venv
. .venv/bin/activate
pip install -e .
```
## 快速入门
```
repro-evidence manifest create examples/dummy-binary -o before.json
repro-evidence manifest diff before.json before.json
repro-evidence evidence validate examples/evidence-bundle.yaml
```
对于更大的工件树,使用明确的包含/排除模式过滤清单:
```
repro-evidence manifest create artifacts --include reports --exclude "*.tmp" -o manifest.json
```
对于更严格的证据包检查,安装可选的schema扩展并验证已检查的JSON Schema:
```
pip install "repro-evidence-kit[schema]"
repro-evidence evidence validate examples/evidence-bundle.yaml --schema
```
签名证据包侧车是可选的。对于本地篡改检测原型,创建或提供本地信任材料,并确保它不在git中:
```
printf 'synthetic local test key only\n' > local-test.key
repro-evidence evidence sign examples/evidence-bundle.yaml --key local-test.key -o evidence-bundle.yaml.sig.json
repro-evidence evidence verify-signature examples/evidence-bundle.yaml --signature evidence-bundle.yaml.sig.json --key local-test.key
```
沙箱验证比较基线清单与运行后的清单:
```
repro-evidence verify sandbox-run before.json after.json --allow-added report.json
```
当所有更改都允许时,命令退出`0`,当存在意外更改时,命令退出`1`。
## 文档
- [CLI参考](docs/cli.md)
- [教程](docs/tutorial.md)
- [证据包格式](docs/evidence-bundle-format.md)
- [签名证据包设计笔记](docs/signed-bundles.md)
- [维护者工作流程](docs/maintainer-workflow.md)
- [GitHub Actions食谱](docs/github-actions.md) — 验证、清单、沙箱检查和基于Schema的过滤工作流程的CI食谱。
- [设计原则](docs/design-principles.md)
- [路线图](ROADMAP.md)
## 数据政策
此存储库用于通用可重复性工具。请不要添加专有二进制文件、私有数据集、受版权保护的样本、实时凭证、法医案例数据或项目特定的逆向工程目标。公共示例必须是合成的或明确可分发的。
## 状态
`0.3.x`是一个早期维护者工具系列。CLI和schema有意保持小、保守和仅合成示例。
标签:逆向工具