popey/grummage

GitHub: popey/grummage

Grummage 是 Grype 漏洞扫描器的交互式终端前端,让用户无需掌握 jq 语法即可方便地浏览和分析漏洞扫描的 JSON 结果。

Stars: 47 | Forks: 7

# Grummage Grype + Rummage = Grummage。 Grummage 是 [Grype](https://github.com/anchore/grype) 的一个交互式终端前端。 ![展示 Grummage 的短视频](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/8430c363c7040725.gif) ## 简介 [Grype](https://github.com/anchore/grype) 是一款出色的漏洞扫描器。它可以生成简单的文本输出,或者是详尽的 JSON 文件。我想要一个工具来仔细翻阅这些 JSON,而不需要去学习晦涩难懂的 jq 语法 ;). 于是,Grummage 诞生了。 ## 安装说明 Grummage 使用 Python 编写,需要 Python 3.8 或更高版本。 ### 前置条件 Grummage 需要你的路径中存在 [Grype](https://github.com/anchore/grype) 二进制文件才能运行。 你可能需要先确认 Grype 命令行能否正常工作,并且已经更新了漏洞数据库。 ``` grype --version ``` ``` grype 0.84.0 ``` ``` grype db update ``` ``` ✔ Vulnerability DB [no update available] No vulnerability database update available ``` ### 通过 PyPI 安装(推荐) 安装 grummage 最简单的方法是通过 PyPI: ``` pip install grummage ``` ### 通过 GitHub Releases 安装 从 [GitHub releases 页面](https://github.com/popey/grummage/releases)下载最新版本。 ### 使用 Homebrew (macOS/Linux) ``` brew tap popey/grummage brew install grummage ``` ### 使用 Docker 注意:需要使用 `-it` 来与应用程序进行交互。设置 `TERM` 环境变量可以获得更好的颜色支持。 ``` docker run --rm -it -e TERM=xterm-256color -v $(pwd):/data ghcr.io/popey/grummage:latest /data/your-sbom.json ``` ### 使用 Nix (macOS/Linux) 命令式安装 ``` # 使用 channels nix-env -iA grummage # OR 与 nix flakes nix profile install nixpkgs#grummage ``` 声明式安装 ``` environment.systemPackages = with pkgs; [ grummage ]; ``` ### 使用 Snap ``` sudo snap install grummage ``` ### 从源码安装 用于开发,或者如果你倾向于从源码安装: ``` git clone https://github.com/popey/grummage cd grummage pip install -e . ``` ### 使用 uv(可选) 如果你使用 [uv](https://github.com/astral-sh/uv) 来管理 Python 环境: ``` git clone https://github.com/popey/grummage cd grummage uv venv source .venv/bin/activate # On Windows: .venv\Scripts\activate uv pip install -e . ``` ## 使用说明 将 grummage 指向一个 SBOM (Software Bill of Materials): ``` grummage ./example_sboms/nextcloud-latest-syft-sbom.json ``` Grummage 会检查 grype 漏洞数据库,并在需要时进行更新,然后加载 SBOM 并使用 Grype 对其进行分析。在这些操作期间,会有一个加载界面显示进度。 加载完成后,使用方向键或鼠标在左侧窗格的树状结构中进行导航。 按下 Enter 键或用鼠标点击某个漏洞,可以获取有限的详细信息。 ### 按键说明: **导航:** * 方向键或 `h`/`j`/`k`/`l` - 导航树状结构 * Enter - 选择项目 **视图:** * `p` - 按包名查看 * `v` - 按漏洞 ID 查看 * `t` - 按包类型查看 * `s` - 按严重程度查看 **搜索:** * `/` - 在当前视图中搜索 * `n` - 查找下一个结果 * `N` - 查找上一个结果 **操作:** * `e` - 通过 `grype explain` 请求更多详细信息 * `q` - 退出 ## 生成 SBOM 我使用 [Syft](https://github.com/anchore/syft) 来生成 SBOM,但也有其他工具可用。例如: ``` syft nextcloud:latest -o syft-json=nextcloud-latest-syft-sbom.json ``` ``` ✔ Loaded image nextcloud:latest ✔ Parsed image sha256:44c884988b43e01e1434a66f58943dc809a193abf1a6df0f2cebad450e587ad7 ✔ Cataloged contents bdca3ed5b303726bba5579564ab8fe5df700d637ae04f00689443260b26cc832 ├── ✔ Packages [418 packages] ├── ✔ File digests [10,605 files] ├── ✔ File metadata [10,605 locations] └── ✔ Executables [1,317 executables] ``` ## 发行渠道 Grummage 可通过多种渠道获取: - **PyPI**: `pip install grummage` - **Homebrew**: `brew tap popey/grummage && brew install grummage` - **Docker**: `ghcr.io/popey/grummage:latest` - **Snap**: `sudo snap install grummage` - **GitHub Releases**: 提供预构建的安装包 ## 注意事项 我是一名开源爱好者和自学成才的程序员,出于好奇心和解决问题的热爱来创建项目。这些代码可能存在 bug 或粗糙的边缘。如果你发现了任何问题,请通过 [issue](https://github.com/popey/grummage/issues) 告知我。非常感谢。
标签:Mutation, Python, TUI, 可视化, 无后门, 终端工具, 请求拦截, 逆向工具