在Linux中读取BIOS内容的最佳方法

发布于 2024-08-12 06:42:50 字数 72 浏览 6 评论 0原文

确实是一个奇怪的问题。是否可以读取BIOS芯片的全部内容。我们有一个问题,需要验证BIOS芯片的内容?

干杯詹姆斯

An odd question really. Is it possible to read the entire contents of the bios chip in. We have a problem where we need to verify the contents of the bios chip?

Cheers James

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

绝不放开 2024-08-19 06:42:50

如果有的话,您可以尝试 dmidecode 或 biosdecode。

you can try dmidecode or biosdecode if you have them.

九歌凝 2024-08-19 06:42:50

如何读取BIOS区域

是否可以读取BIOS芯片的全部内容。我们有一个问题,需要验证BIOS芯片的内容?

我假设您的意思是专门读取“BIOS 区域”,因为同一芯片可能包含多个不同的区域:

读取 BIOS 区域:

  • 最简单的方法是从 /dev/mem 0xffffffff 向下读取。您可以在 /proc/iomem 中找到范围(尝试命令:sudo grep -- '-ffffffff ' /proc/iomem)。然后您可以使用 dd 转储该区域。
  • 另一种方法是使用 flashrom,如果您的主板受此工具支持(例如 sudo flashrom -p internal --ifd -i bios -r /tmp/bios_region.img >)。
  • 另一种方法是使用特定于供应商的工具,例如 AFULNX。这种方式很大程度上取决于特定的主板和 BIOS 供应商。
  • 另一种方法是使用Linux的MTD驱动程序。有时,带有 BIOS 区域的 SPI 存储芯片可用作 /dev/mtd*
  • 此外,对于服务器主板,BIOS 通常可通过 BMC 获得。

如何验证内容(出于安全目的)

您实际上可以仅使用 TPM 中的 PCR0 值,该值应该测量 BIOS 的内容。它有很多警告,但它们都经过了马马虎虎的调查和解决(请随意提出问题,我会尽力提供帮助)。

但如果您需要直接比较内容,请记住:

  • 原始图像中存在占位符,可以用真实数据替换这些占位符,因此您可能会得到不匹配的图像,而这正是它应该的样子。
  • BIOS 可以在 NVRAM(也可能是其他地方)写入一些数据。例如,在某些 BIOS 上,您可能会看到每次重新启动时 BIOS 区域转储不匹配。这也好。

避免这两个问题的最简单方法是仅使用 PCR0 值。

如何验证内容(出于操作目的)

另请参阅上面的“安全目的”部分,但除此之外 BIOS 卷和文件还有校验和。在某些情况下您可能只想检查它们。

PS

其他答案建议使用诸如 dmidecode 之类的东西。他们不会转储 BIOS 映像,而只会打印 SMBIOS 信息等。

How to read BIOS region

Is it possible to read the entire contents of the bios chip in. We have a problem where we need to verify the contents of the bios chip?

I assume you mean to read specifically "BIOS region", because the same chip may contain multiple different regions:

To read the BIOS region:

  • The easiest way is to read from /dev/mem 0xffffffff downwards. You can find the range in /proc/iomem (try command: sudo grep -- '-ffffffff ' /proc/iomem). Then you can use dd to dump the region.
  • Another way is to use flashrom, if you motherboard is supported by this tool (something like sudo flashrom -p internal --ifd -i bios -r /tmp/bios_region.img).
  • Another way would be to use vendor-specific tool, like AFULNX. This way highly depends on specific motherboard and BIOS vendors.
  • One more way is to use the MTD driver of Linux. Sometimes the SPI storage chip with BIOS region is available as /dev/mtd*.
  • Also given a server motherboard the BIOS is often available via BMC.

How to verify the content (for security purposes)

You can actually just use PCR0 value from TPM, which supposed to measure the content of BIOS. It has a lot of caveats, but they are so-so investigated and solved (feel free to ask a question, I'll try to help).

But if you need to compare the content directly, keep in mind:

  • There are placeholders in the original image, which could be replaced with real data, so you may get non-matching image, and it is how it is supposed to be.
  • There is NVRAM (and possibly other places) where BIOS may write some data. For example, on some BIOSes you may see that on each reboot the BIOS region dump does not match. This is also fine.

The easiest way to avoid both problems is to just use the PCR0 value.

How to verify the content (for operational purposes)

See also the "security purposes" section above, but on top of that BIOS volumes and files has checksums. You may just want to check them in some cases.

P.S.

Other answers suggests to use things like dmidecode. They won't dump the BIOS image, but just will print the SMBIOS info and things like that.

青丝拂面 2024-08-19 06:42:50

您读过 ?

<块引用>

有没有简单的方法可以读取系统BIOS的内容
用户空间?

没有。大多数现代 BIOS 代码都是分页的,
压缩并且在某些情况下
已加密。

Have you read this ?

Is there any easy way to read the contents of a system BIOS from
userland?

No. Most modern BIOS code is paged,
compressed and in some cases
encrypted.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文