@cdxgen/cdx-hbom

中文文档
0.8.0发布于 2026/11/06MITES Module零依赖构建来源已验证近 30 天下载 76.6万

材质发现库无依赖硬件账单.

中文使用文档
文档目录15 节
  1. 安装
  2. 无
  3. 日 尔
  4. 国 际
  5. 图书馆使用情况
  6. 从库读取命令诊断
  7. 旋风DX 2.0 输出
  8. 目前覆盖的土著富集
  9. 干流和微量支持
  10. 链接
  11. 达尔文臂64
  12. 视窗( E) win32/amd64 , (中文(简体) ), win32/arm64 (中文(简体) )
  13. 权限
  14. 发展
  15. 许可证

cdx-hbom (英语)

cdx-hbom 是一个小型的,无依赖的硬件单 材料(HBOM)收集器,用于CirponDX BOM工具.

它目前支持以下OS主机:

  • darwin/arm64 (苹果硅麦克斯)
  • linux/amd64
  • linux/arm64
  • win32/amd64
  • win32/arm64

安装

无

npm install @cdxgen/cdx-hbom

日 尔

npx jsr add @cdxgen/cdx-hbom

国 际

为当前主机创建硬件目录 :

npx @cdxgen/cdx-hbom --pretty > host-hbom.json

共同选项 :

  • --pretty 漂亮地打印 JSON 输出
  • --dry-run 块命令执行和跟踪计划收集活动
  • --platform <value> 覆盖平台检测
  • --arch <value> 覆盖架构检测
  • --sensitive 包含原始标识符而不是被编辑的默认
  • --no-command-enrichment 禁用基于命令的可选浓缩( Linux 命令; 在 macOS 上, 每个界面 ifconfig 财务报告和审定财务报表 pmset 调用被跳过;仅在 Windows 上 windows-cim-platform 批量运行)
  • --privileged 收集需要提高权利的源。 在Linux上,它使特权浓缩和明确的非互动 sudo -n 重试选择使用的文件权限敏感命令( 目前) drm_info) (中文(简体) ). 在视窗上,它添加 windows-cim-privileged (TPM、BitLocker、存储可靠性计数器、, Confirm-SecureBootUEFI)),只有管理员才能读取;cdx-hbom从不提升自身,因此从提升的会话运行到获取数据并期望 permission-denied 其他诊断
  • --plist-enrichment 允许额外的基于达尔文列表的浓缩
  • --strict 在浓缩失败时不返回部分结果
  • --spec-version <value> 发布 CircleDX 版本 : 1.7 (违约)或 2.0。在 旋风DX 2.0 输出
  • --timeout <ms> 设定每个命令的超时

实例:

npx @cdxgen/cdx-hbom --pretty
npx @cdxgen/cdx-hbom --privileged --pretty > host-hbom.json
npx @cdxgen/cdx-hbom --plist-enrichment --pretty > mac-hbom.json
npx @cdxgen/cdx-hbom --spec-version 2.0 --pretty > host-hbom-2.0.json

图书馆使用情况

import {
  collectHardware,
  createCollectorTrace,
  buildHardwareFromSources,
  getCollectorTrace,
  getCommandPlan,
} from "@cdxgen/cdx-hbom";

const trace = createCollectorTrace();

const bom = await collectHardware({
  dryRun: true,
  includePlistEnrichment: true,
  trace,
});

const collectedTrace = getCollectorTrace(bom) ?? trace;
console.log(collectedTrace.activities);

const plan = getCommandPlan({ platform: "linux", architecture: "amd64" });

// Some plan entries are templates; their final arguments are resolved per
// device or interface at runtime when live collection expands the plan.

const rebuilt = buildHardwareFromSources({
  platform: "linux",
  architecture: "amd64",
  sources: {
    osRelease: { NAME: "Ubuntu", VERSION_ID: "24.04" },
    cpuInfo: [{ processor: "0", "model name": "AMD Ryzen 7" }],
  },
});

从库读取命令诊断

cdx-hbom 保持JSON对BOM本身的输出,并在所附的采集器追踪和BOM证据属性中记录可选指令问题.

import {
  collectHardware,
  createCollectorTrace,
  getCollectorTrace,
} from "@cdxgen/cdx-hbom";

const trace = createCollectorTrace();

const bom = await collectHardware({
  platform: "linux",
  architecture: "amd64",
  includeCommandEnrichment: true,
  includePrivilegedEnrichment: true,
  allowPartial: true,
  trace,
});

const collectedTrace = getCollectorTrace(bom) ?? trace;
const commandDiagnostics = collectedTrace.activities.filter(
  (entry) =>
    entry.kind === "command-diagnostic" || entry.kind === "command-warning",
);

for (const entry of commandDiagnostics) {
  if (entry.issue === "missing-command") {
    console.error(
      `Install hint for ${entry.command}: ${entry.hint ?? "see package docs"}`,
    );
  }

  if (entry.issue === "permission-denied") {
    console.error(
      `Privilege hint for ${entry.command}: ${entry.hint ?? "retry with --privileged"}`,
    );
  }
}

也可以通过检查从 BOM 根读取序列化命令诊断 cdx:hbom:evidence:commandDiagnostic* 属性.

旋风DX 2.0 输出

collectHardware({ specVersion: "2.0" }) 财务报告和审定财务报表 --spec-version 2.0 发射 旋风DX 2.0草案(CycloneDX/规格2.0-dev at ea8c3605829d1da13339a0790b6da73548e42a6b) (中文(简体) ). 收藏家们还在建造 1.7 文档; 2.0 信封来自它, 因此1.7 输出不 变化。 在2.0文档中:

  • 主机组件是 inventories[0].subject 其他组成部分 为: inventories[0].components; 每一个 bom-ref 变成 refId
  • 工具条目携带 version (当软件包版本不能时离开) 读取,例如,在不包含 package.json和 refId: "pkg:npm/@cdxgen/cdx-hbom" (保留1.7个工具条目) { type, name }(中文(简体) )
  • manufacturer 变成一个 parties[] 条目 manufacturer 角色
  • cdx:hbom:hardwareClass 变成 classification.category,以及 cdx:hbom:pciClassCode 编号 : cdx:hbom:usbClass 变成 classification.codes 条目({ standard: "PCI-SIG class code" | "USB-IF class code", value }(中文(简体) )
  • 单位标识符serial-number, (中文(简体) ), asset-tag, (中文(简体) ), mac-address, (中文(简体) ), imei)仅在收藏随同运行时才被放出 includeSensitiveIdentifiers 编号 : --sensitive 而该值不是 编辑标记. model-number 命名一个产品而不是一个单位,所以 当其值不是编辑标记时,就会释放。 编辑标记 是一个空值或从 redacted 或者说 withheld比较 没有大小写和周围的空白空间( c)redacted, (中文(简体) ), redacted:<last4>, (中文(简体) ), redacted-serial, (中文(简体) ), Withheld(中文(简体) )
  • 标识符由 party-cdx-hbom 政党(作用) asserter, (中文(简体) ), 系统类型 automation,与 system.ref 设置到 cdx- hbom 工具条目, 否 ref 当元数据没有这样的条目时, 以 definitions.parties 仅在标识符时 参考
  • boardLocation 未释放 : boardLocation.designators 预留用于 多氯联苯参考代号,例如: U5 或者说 R12,所以固件槽标签 例如 DIMM3 留下来 cdx:hbom:* 属性
  • 每个 cdx:hbom:* 保存属性

制作自己的 2. 0 文档的工具,例如 cdxgen, 可以重新使用 绘制 @cdxgen/cdx-hbom/cdx20 导出 :

import { mapCdx20HardwareComponent } from "@cdxgen/cdx-hbom/cdx20";

const { component, partyRefIds } = mapCdx20HardwareComponent(hbomComponent, {
  partyRefId: "party-cdxgen", // a declared party, never a tool refId
  includeSensitiveIdentifiers: false, // default; true only for --sensitive runs
});
// Existing identifiers (for example purl identities) are kept and the hardware
// identities are appended. Declare every refId in partyRefIds in
// definitions.parties.

逐地表在 文件/硬件-财产。 。 。 .

目前覆盖的土著富集

cdx-hbom 使用固定的命令登记册和以阵列为基础的程序产卵,但上游包装和整装人员负责任何更严格的命令许可名单, PATH 硬化,或执行政策控制 围绕收集程序.

干流和微量支持

  • dryRun: true 块命令执行 cdx-hbom 而不是依赖呼叫方的后退.
  • getCommandPlan() 曝光静态命令注册,包括模板条目,每个设备或接口在运行时都会解决其具体参数.
  • 成功的文件读取和目录发现,加上完成/封锁/失败的命令尝试,都记录在收集器的追踪中.
  • 过 trace: createCollectorTrace() 将活动收集到呼叫者拥有的分类账中,或稍后通过 getCollectorTrace(bom)。 。 。 .
  • 所附的痕迹是不可想象的,所以 JSON.stringify(bom) 仍然发出一个正常的 CircleDX 文件 .

链接

  • /proc 财务报告和审定财务报表 /sys 基线发现
  • CPU,内存,存储,PCI,USB,DRM显示,音频,MMC/SDIO,和网络库存
  • USB 设备的地貌显示中心等级, 包括每个设备驱动程序、 车道和接口驱动程序
  • USB-C连接器、电子标记电缆和远端对等器 /sys/class/typec,有解码数据率、电流、送电瓦、公示电源简介、替代模式和充电判决
  • USB-C同位素与所列举的USB设备和发电节点相关,可用时从UCSI供电中实时充电读取
  • hwmon、热区、TPM和NVMe控制器浓缩
  • 可选命令浓缩通过 lscpu, (中文(简体) ), lsblk, (中文(简体) ), ip, (中文(简体) ), lsmem, (中文(简体) ), hostnamectl, (中文(简体) ), lspci, (中文(简体) ), lsusb, (中文(简体) ), ethtool, (中文(简体) ), cpupower, (中文(简体) ), drm_info, (中文(简体) ), upower, (中文(简体) ), fwupdmgr, (中文(简体) ), boltctl, (中文(简体) ), mmcli,以及 edid-decode
  • 对缺失的公用事业、部分支持和对许可敏感的浓缩进行指令性诊断

如果您想要通过安装可选主机工具来提高 Linux 的浓缩范围, 请参见 linux-troubleshooting.md。 。 。 .

达尔文臂64

  • system_profiler 硬件、存储、显示、Wi-Fi、USB、音频、相机、蓝牙、霹雳和电力数据
  • networksetup 硬件端口映射
  • 现场直播 ifconfig 网络接口浓缩
  • 可选 plist 浓缩通过 diskutil, (中文(简体) ), diskutil apfs list -plist,以及 ioreg

视窗( E)win32/amd64, (中文(简体) ), win32/arm64(中文(简体) )

Windows 库存来自 CIM/WMI 类和一些注册密钥,由 内置 Windows PowerShell 5.1 (%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe(中文(简体) ) 每批运行一个固定的单行脚本。 平台值在 bOM是: 英国海洋局 windows· ; --platform windows 财务报告和审定财务报表 --platform win32 双向 这个 一个节点 os- 模块基线(处理器、内存、OS发布)总是 所以PowerShell被屏蔽的宿主 仍然产生有效的BOM.

命令编号及其来源(清单与登记册对照核对: 测试,和 getCommandPlan({ platform: "win32" }) 返回完整命令 线条 :

  • windows-cim-platform数字 : root/cimv2数字 : Win32_ComputerSystem, (中文(简体) ), Win32_ComputerSystemProduct, (中文(简体) ), Win32_BIOS, (中文(简体) ), Win32_BaseBoard, (中文(简体) ), Win32_SystemEnclosure, (中文(简体) ), Win32_Processor, (中文(简体) ), Win32_PhysicalMemory, (中文(简体) ), Win32_PhysicalMemoryArray, (中文(简体) ), Win32_OperatingSystem· ; root/wmi数字 : MS_SystemInformation
  • windows-cim-storage-network数字 : root/Microsoft/Windows/Storage数字 : MSFT_PhysicalDisk· ; root/cimv2数字 : Win32_DiskDrive, (中文(简体) ), Win32_Volume, (中文(简体) ), Win32_NetworkAdapter· ; root/StandardCimv2数字 : MSFT_NetAdapter, (中文(简体) ), MSFT_NetAdapterHardwareInfoSettingData
  • windows-cim-display-media数字 : root/cimv2数字 : Win32_VideoController, (中文(简体) ), Win32_SoundDevice, (中文(简体) ), Win32_PnPEntity· ; root/wmi数字 : WmiMonitorID, (中文(简体) ), WmiMonitorBasicDisplayParams, (中文(简体) ), WmiMonitorConnectionParams
  • windows-pnp-devices数字 : root/cimv2数字 : Win32_PnPEntity, (中文(简体) ), Win32_PnPSignedDriver· ; Get-PnpDevice -PresentOnly 财务报告和审定财务报表 Get-PnpDeviceProperty (单位:千美元)DEVPKEY_Device_Parent, (中文(简体) ), DEVPKEY_Device_LocationPaths, (中文(简体) ), DEVPKEY_Device_DriverVersion, (中文(简体) ), DEVPKEY_Device_DriverProvider, (中文(简体) ), DEVPKEY_Device_DriverDate, (中文(简体) ), DEVPKEY_Device_BusReportedDeviceDesc, (中文(简体) ), DEVPKEY_Device_BusNumber, (中文(简体) ), DEVPKEY_Device_Address(中文(简体) )
  • windows-cim-trust数字 : root/Microsoft/Windows/DeviceGuard数字 : Win32_DeviceGuard· ; root/cimv2数字 : Win32_Battery; 登记册 HKLM:\SYSTEM\CurrentControlSet\Control\SecureBoot\State (单位:千美元)UEFISecureBootEnabled; 登记子密钥 HKLM:\SYSTEM\CurrentControlSet\Control\FirmwareResources (单位:千美元)LastAttemptStatus, (中文(简体) ), LastAttemptVersion, (中文(简体) ), Version(中文(简体) )
  • windows-cim-privileged数字 : root/cimv2/Security/MicrosoftTpm数字 : Win32_Tpm· ; root/cimv2/Security/MicrosoftVolumeEncryption数字 : Win32_EncryptableVolume· ; root/Microsoft/Windows/Storage数字 : MSFT_StorageReliabilityCounter; 缩写 Confirm-SecureBootUEFI

内容覆盖范围:主机元数据、处理器、内存和内存模块, 板、固件(BIOS)和底盘;存储(Win32_DiskDrive 丰富 MSFT_PhysicalDisk)和卷;网络和无线适配器;显示 适配器和显示器; 音频控制器和端点;相机; USB 控制器和设备、PCI设备和蓝牙收音机和设备 驱动程序版本和签名及父/子 dependencies 图;TPM, 固件装置和电池;以及主机安全态势 (虚拟化安全、代码完整性、安全靴、BitLocker) 音量为 --privileged) (中文(简体) ). 财产名称记录于 docs/hardware-properties.md。 。 。 .

窗口上的选项语义 :

  • --privileged 添加 windows-cim-privileged 批量(TPM、BitLocker、, 存储可靠性计数器, Confirm-SecureBootUEFI) (中文(简体) ). 那些班级否认 (cdx-hbom 从未升级,从未打电话) sudo.exe 财务报告和审定财务报表 永远不要提示,所以从一个提升的会话中运行来获取数据. 无 提升批次记录 permission-denied 诊断和运行 仍然成功.
  • --no-command-enrichment 仅保留 windows-cim-platform (和节点) 基线).
  • --dry-run 仅生成节点基线并跟踪每个计划 PowerShell 命令为 blocked。 。 。 .
  • --plist-enrichment 不适用于 Windows.
  • --timeout <ms> 超过每个批次的超时(每CIM批次60 s, 90 s为 windows-pnp-devices) (中文(简体) ).
  • 何时 powershell.exe 无法启动( 丢失, 被 AppLocker 、 WDAC 或 命令允许列表)或运行于 Constract Language 模式,设备 库存来自 pnputil /enum-devices /connected /relations /drivers (单位:千美元) windows-fallback partial-support 诊断被记录下来。 pnputil 语录 标签是本地化的,因此一个非英语主机只获得节点基线. 后退命令不在命令计划中; 许可列表必须列出名称 pnputil.exe 允许它.
  • 命令允许列表条目与 Windows 命令不敏感大小写匹配 (单位:千美元)POWERSHELL.EXE 允许 powershell.exe); POSIX 命令完全匹配.

权限、 PowerShell 限制、 EDR 允许列表、 慢速提供者和 x64-on-ARM64案件涵盖在以下几起: windows-troubleshooting.md。 。 。 .

权限

简短回答: 运行 cdx- hbom 作为普通本地用户. 这几乎给了 每一个支持的操作系统上的全部硬件库存. 电梯(管理员或 (b) 增加一些与安全和保健有关的细节。 cdx-hbom 从不提示 对于一个密码, 并且从未在 Windows; 在 Linux 上升级, --privileged 重试 几个有文件记录的、非交互命令 sudo -n。 。 。 .

平台正常用户, 本地会话管理员或根SSH 或 WinRM 上的非管理员
马科斯 (苹果硅)完整目录; 每个收藏器命令作为普通用户运行没有额外的未计量;预期与当地相同
链接/proc 财务报告和审定财务报表 /sys 基线加安装的可选工具--privileged 运行 dmidecode 重试 drm_info 与非交互式 sudo -n (见 linux-troubleshooting.md(中文(简体) )未计量;预期与当地相同
窗口几乎所有; 参见测量矩阵 windows-troubleshooting.md--privileged 添加 TPM 细节, BitLocker 状态, 固件确认的安全靴状态和磁盘可靠性计数器每个 WMI 查询都被拒绝; 只生成基线( 处理器和内存) , 有一个 permission-denied 诊断说明原因 在5个命名空间上授予账户WMI"Remote Election",恢复了本地目录的大部分(参见故障排除页面)

在Windows上,还有一个细节取决于状态而不是权利:磁盘总线 类型、媒体类型和健康MSFT_PhysicalDisk)仅达到标准用户 存储空格 SMP 服务时 (smphost) 已经运行中。 这是 在解决问题的一页里解释了.

每个平台的隐私默认:序列号、UUID、MAC地址和 PnP 实例段被修改为 redacted:<last 4>; 主机名称, 用户 名称和域名从未被收集。 过 --sensitive 仅在生时 需要识别资料.

发展

npm test

许可证

麻省理工学院

版本与发布记录

@cdxgen/cdx-hbom 共发布 9 个版本,首次发布于 2026/05/13;过去 12 个月发布了 9 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.8.0latest2026/11/062 天前
0.7.02026/10/2119 天前
0.6.02026/10/2019 天前
0.5.12026/06/154 个月前
0.5.02026/05/145 个月前
0.4.02026/05/145 个月前

关于 @cdxgen/cdx-hbom 的常见问题

@cdxgen/cdx-hbom 是什么?

材质发现库无依赖硬件账单.

如何安装 @cdxgen/cdx-hbom?

在项目目录运行 npm install @cdxgen/cdx-hbom,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 cdx-hbom,可以用 npx cdx-hbom 直接运行。

@cdxgen/cdx-hbom 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/cdxgen__cdx-hbom 是否存在。

@cdxgen/cdx-hbom 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@cdxgen/cdx-hbom 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@cdxgen/cdx-hbom 可以商用吗?

@cdxgen/cdx-hbom 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@cdxgen/cdx-hbom 的下载量有多少?

根据 npm 官方下载统计,@cdxgen/cdx-hbom 在 2026/10/10 – 2026/11/08 这 30 天内被下载 766,053 次,日均约 25,535 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cdxgen/cdx-hbom 还在维护吗?

最新版本 0.8.0 发布于 2026/11/06(2 天前);至今共发布 9 个版本,其中过去 12 个月发布了 9 个;首次发布于 2026/05/13。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。