ER1999K/sbom_generator
GitHub: ER1999K/sbom_generator
一个通过 SSH 在离线局域网中为远程 Linux 主机自动生成 CycloneDX SBOM 的 Python 工具。
Stars: 0 | Forks: 0
# SBOM 生成器
为一个或多个远程 Linux 主机(通过 SSH)生成 CycloneDX 软件物料清单(SBOM),运行时无需互联网连接。
## 目录结构
```
sbom_generator/
├── main.py # Entry point
├── host_manager.py # Host input, txt file parsing, password collection
├── connection_tester.py # SSH connection testing and user confirmation
├── ssh_client.py # SSH connection and auth retry logic
├── arch_detector.py # Remote OS/architecture detection
├── remote_executor.py # Syft transfer, execution, and cleanup
├── sbom_handler.py # SBOM retrieval and local save
├── logger.py # Logging configuration
├── requirements.txt # Python dependencies
├── hosts.txt.example # Example hosts file
└── binaries/
├── syft_linux_amd64 # Syft binary for x86_64
├── syft_linux_arm64 # Syft binary for ARM64
└── syft_linux_armv7 # Syft binary for ARMv7
```
## 要求
- Python 3.10+
- Windows、macOS 或 Linux 本地机器
- 远程主机:Linux(x86_64、ARM64 或 ARMv7)
## 设置
### 1. 安装依赖
```
pip install -r requirements.txt
```
### 2. 添加 Syft 二进制文件
从 https://github.com/anchore/syft/releases 下载并放置到 `binaries/`:
| 要下载的文件 | 重命名为 |
|----------------------------------|---------------------|
| `syft_X.X.X_linux_amd64.tar.gz` | `syft_linux_amd64` |
| `syft_X.X.X_linux_arm64.tar.gz` | `syft_linux_arm64` |
| `syft_X.X.X_linux_armv7.tar.gz` | `syft_linux_armv7` |
解压每个归档文件中的 `syft` 二进制文件并按上述名称重命名。
## 使用
```
python main.py
```
程序将引导你完成以下交互式步骤:
1. **加载主机** — 从文本文件或手动输入
2. **输入密码** — 对每个主机安全提示输入(隐藏输入)
3. **连接测试** — 在扫描前验证每个主机的 SSH 连接
4. **确认** — 如果有主机失败,决定是否继续
5. **输出目录** — 选择保存 SBOM 文件的目录
6. **扫描** — 在每个可达主机上运行 Syft
7. **摘要** — 最后显示所有主机的结果
## 主机文件格式
```
# hosts.txt
# username@ip,每行一个
# 以 # 开头的行和空行将被忽略
erikh@192.168.0.42
pi@192.168.0.55
```
## 输出
每个主机生成一个 SBOM 文件:
```
sbom-192-168-0-42.json
sbom-192-168-0-55.json
```
## 退出代码
| 代码 | 含义 |
|------|-----------------------------------|
| 0 | 所有主机扫描成功 |
| 1 | 未提供主机或用户取消 |
| 4 | 所有主机扫描失败 |
| 6 | 部分成功(某些主机失败) |
标签:ARM64, ARMv7, CycloneDX, ETW劫持, Python, SBOM, SSH, x86_64, 主机管理, 二进制分发, 内存分配, 占用监测, 可执行文件, 局域网, 文件传输, 无后门, 日志记录, 本地网络, 特权提升, 硬件无关, 离线工具, 系统架构检测, 网络安全, 自动化部署, 资产管理, 跌倒检测, 软件物料清单, 软件组成分析, 远程执行, 逆向工具, 隐私保护