Betriebssysteme & Firmware-Images scannen
kunnus sbom os inventarisiert ein Betriebssystem-Dateisystem: die Maschine, vor der Sie stehen, oder ein read-only gemountetes Firmware-Image. Das ist der Modus für Industrie-PCs, IoT-Gateways und jedes Gerät, das mit einem OS ausgeliefert wird.
# Die Maschine, vor der Sie stehen (Standard-Root: / unter Unix, C:\ unter Windows)
kunnus sbom os --output machine.cdx.json
# Ein gemountetes Firmware-Image oder extrahiertes Rootfs
kunnus sbom os /mnt/firmware --target-os linux --output firmware.cdx.jsonWas inventarisiert wird
- Linux: Die Distro-Familie wird per Fingerprint erkannt (Debian/Ubuntu, RHEL, SUSE, Alpine, Arch, Gentoo, Nix, Container-Optimized OS) und ihre Paketdatenbank gelesen; Flatpak- und Snap-Pakete werden ebenfalls erfasst.
- Windows: installierte Programme aus der Registry, plus Chocolatey- und winget-Bestand.
- macOS: Homebrew, MacPorts und installierte .app-Bundles.
- Nicht-paketierte Binaries: Ein Klassifikator findet Executables, die kein Paketmanager kennt — ein selbst kompiliertes memcached, ein vendortes python — mit Überlappungsunterdrückung, damit nichts doppelt erscheint.
- Auf dem Image installierte Sprachpakete (site-packages-Wheels, Gems, JARs, node_modules, Go-Binaries, …).
Fremdes Rootfs scannen: --target-os
Wenn das gescannte Dateisystem nicht das OS ist, auf dem Sie arbeiten — etwa ein Linux-Firmware-Image auf Ihrem Mac — sagt --target-os (linux | windows | mac) kunnus, womit es es zu tun hat.
Firmware-Image mounten
kunnus sbom os scannt einen Verzeichnisbaum; eine Image-Datei muss also zuerst gemountet oder extrahiert werden. Alle folgenden Wege sind read-only — kunnus schreibt nie in das Scan-Root.
sudo mount -o ro,loop firmware.img /mnt/firmware
kunnus sbom os /mnt/firmware --target-os linux --output firmware.cdx.json
sudo umount /mnt/firmwaresudo losetup -f --show -P firmware.img # gibt z. B. /dev/loop0 aus
lsblk /dev/loop0 # Rootfs-Partition finden
sudo mount -o ro /dev/loop0p2 /mnt/firmware
kunnus sbom os /mnt/firmware --target-os linux -o firmware.cdx.jsonunsquashfs -d rootfs rootfs.squashfs
kunnus sbom os ./rootfs --target-os linuxHersteller-Update-Pakete (.swu, .raucb, zip-/tar-Container) umhüllen meist eines der obigen Formate — erst den Container entpacken, dann das Dateisystem darin mounten oder extrahieren. Bei unbekanntem Format findet und extrahiert binwalk -e eingebettete Dateisysteme. Unter macOS oder Windows gibt es kein Loop-Mount für Linux-Dateisysteme: stattdessen extrahieren (7z, unsquashfs, binwalk) und --target-os linux setzen.
var/lib/dpkg, lib/apk/db, …) treibt die OS-Paket-Erkennung. Verteilt das Gerät das OS über mehrere Partitionen (A/B-Schemata, separates /usr), den vollen Satz mounten oder einzeln scannen und downstream zusammenführen.