1

如下图,最后2个板子的序列号是取不到的。

所以:

  1. 怎么了?
  2. 如何在linux上通过C语言获取基板序列号?

谢谢!

dmidecode --type baseboard

板 1:

    SMBIOS 2.7 present.

    Handle 0x0002, DMI type 2, 15 bytes
    Base Board Information
            Manufacturer: TBD
            Product Name: TBD
            Version: TBD
            Serial Number: 4535NP0023
            Asset Tag:                                 
            Features:
                    Board is a hosting board
                    Board is replaceable
            Location In Chassis: TBD
            Chassis Handle: 0x0003
            Type: Motherboard
            Contained Object Handles: 

板 2:

    SMBIOS 2.4 present.

    Handle 0x0002, DMI type 2, 8 bytes
    Base Board Information
            Manufacturer: Gigabyte Technology Co., Ltd.
            Product Name: P55-UD3L
            Version: x.x
            Serial Number:  SMBIOS 2.4 present.

    Handle 0x0002, DMI type 2, 15 bytes
    Base Board Information
            Manufacturer: Intel Corporation
            Product Name: 440BX Desktop Reference Platform
            Version: None
            Serial Number: None
            Asset Tag: Not Specified
            Features: None
            Location In Chassis: Not Specified
            Chassis Handle: 0x0000
            Type: Unknown
            Contained Object Handles: 0

板 3:

    SMBIOS 2.4 present.

    Handle 0x0002, DMI type 2, 8 bytes
    Base Board Information
            Manufacturer: Gigabyte Technology Co., Ltd.
            Product Name: P55-UD3L
            Version: x.x
            Serial Number:  
4

1 回答 1

1

检查 /sys/ 目录(从 /sys/class/dmi 开始)你会发现包含序列号的文件......或者没有!

但请注意,只有当主板制造商完成他的工作时,DMI 信息才会在启动阶段由 BIOS 填充,或者最终在操作系统启动期间由 (??) ACPI 初始化填充。

查看 BIOS 屏幕 一些制造商在 BIOS 屏幕页面中显示序列号,但是,它们不会填写 DMI 信息...(序列号通常存储在不同的硬件中,例如通过 EEPROM 连接i2c)

因此,您最终将解决伪造固件的问题。

但是 - 问问自己阅读序列号是否是解决问题的正确方法。最终你只需要一些东西来识别PC,比如mac地址、磁盘序列号——更像是一个UUID......

于 2015-07-28T13:50:40.640 回答