Reading out BIOS image Intel microcodes and Intel firmware versions

From Thomas-Krenn-Wiki
Jump to navigation Jump to search

BIOS images for Intel processor based PCs and servers include Intel microcodes and other Intel firmware such as CS(ME), (CS)TXE or (CS)SPS. In this article, we show you how to read the respective version information from a BIOS image using Plato Mavropoulos' MC Extractor and ME Analyzer tools.

System requirements

MC Extractor and ME Analyzer require a Python environment with the following Python modules:

  • colorama
  • crccheck
  • PLTable

We use a Linux system with Debian 12 for this. As the Python module PLTable is not available as Debian package, we use a virtual python environment.[1]

sudo apt install python3-venv
mkdir ~/.venv
python3 -m venv ~/.venv/bios-analysis
source ~/.venv/bios-analysis/bin/activate
pip install colorama crccheck pltable
deactivate

MC Extractor

Download the latest release of MC Extractor from GitHub and unpack the archive.[2] After this, copy a BIOS image to the directory and execute python3 MCE.py [BIOS-IMAGE]:

wfischer@debian12:~$ source ~/.venv/bios-analysis/bin/activate
(bios-anylysis) wfischer@debian12:~$ cd ~/Downloads/MCExtractor-1.96.0-r279/
(bios-anylysis) wfischer@debian12:~/Downloads/MCExtractor-1.96.0-r279$ python3 MCE.py CMU2L210.bin -skip
╔═══════════════════════════════════════════╗
║         MC Extractor v1.96.0 r279         ║
╚═══════════════════════════════════════════╝

CMU2L210.bin (1/1)

╔════════════════════════════════════════════════════════════════════════════════════════════════╗
║                                             Intel                                              ║
╟───┬───────────┬───────┬────────────┬──────────┬────────────┬───────┬─────────┬──────────┬──────╢
║ # │    Type   │ CPUID │ Platforms  │ Revision │    Date    │ State │   Size  │  Offset  │ Last ║
╟───┼───────────┼───────┼────────────┼──────────┼────────────┼───────┼─────────┼──────────┼──────╢
║ 1 │ Microcode │ 806EA │  C0 (6,7)  │    F0    │ 2021-11-12 │  PRD  │ 0x19C00 │ 0xD70400 │  No  ║
╟───┼───────────┼───────┼────────────┼──────────┼────────────┼───────┼─────────┼──────────┼──────╢
║ 2 │ Microcode │ 806EB │ D0 (4,6,7) │    F2    │ 2022-12-26 │  PRD  │ 0x19C00 │ 0xD8A000 │  No  ║
╟───┼───────────┼───────┼────────────┼──────────┼────────────┼───────┼─────────┼──────────┼──────╢
║ 3 │ Microcode │ 806EC │ 94 (2,4,7) │    F6    │ 2022-12-26 │  PRD  │ 0x19C00 │ 0xDA3C00 │  No  ║
╟───┼───────────┼───────┼────────────┼──────────┼────────────┼───────┼─────────┼──────────┼──────╢
║ 4 │ Microcode │ A0660 │   80 (7)   │    F6    │ 2022-12-26 │  PRD  │ 0x17C00 │ 0xDBD800 │  No  ║
╚═══╧═══════════╧═══════╧════════════╧══════════╧════════════╧═══════╧═════════╧══════════╧══════╝

Press enter to exit
(bios-anylysis) wfischer@debian12:~/Downloads/MCExtractor-1.96.0-r279$ deactivate
wfischer@debian12:~/Downloads/MCExtractor-1.96.0-r279$ 

ME Analyzer

Download the latest release of ME Analyzer by GitHub and unpack the archive.[3] After this, copy a BIOS image into the directory and execute python3 MEA.py [BIOS-IMAGE]:

wfischer@debian12:~$ source ~/.venv/bios-analysis/bin/activate
(bios-anylysis) wfischer@debian12:~$ cd ~/Downloads/MEAnalyzer-r336/
(bios-anylysis) wfischer@debian12:~/Downloads/MEAnalyzer-r336$ python3 MEA.py CMU2L210.bin -skip
╔═══════════════════════════════════════════╗
║         ME Analyzer v1.283.3 r336         ║
╚═══════════════════════════════════════════╝

╔══════════════════════════════════════════════╗
║              CMU2L210.bin (1/1)              ║
╟─────────────────────────────┬────────────────╢
║            Family           │     CSE ME     ║
╟─────────────────────────────┼────────────────╢
║           Version           │  14.1.67.2046  ║
╟─────────────────────────────┼────────────────╢
║           Release           │   Production   ║
╟─────────────────────────────┼────────────────╢
[...]
Press enter to exit
(bios-anylysis) wfischer@debian12:~/Downloads/MEAnalyzer-r336$ deactivate 
wfischer@debian12:~/Downloads/MEAnalyzer-r336$ 

References

  1. 12. Virtual Environments and Packages (docs.python.org/3)
  2. MC Extractor - Releases (github.com/platomav)
  3. ME Analyzer - Releases (github.com/platomav)


Author: Werner Fischer

Werner Fischer, working in the Knowledge Transfer team at Thomas-Krenn, completed his studies of Computer and Media Security at FH Hagenberg in Austria. He is a regular speaker at many conferences like LinuxTag, OSMC, OSDC, LinuxCon, and author for various IT magazines. In his spare time he enjoys playing the piano and training for a good result at the annual Linz marathon relay.


Translator: Alina Ranzinger

Alina has been working at Thomas-Krenn.AG since 2024. After her training as multilingual business assistant, she got her job as assistant of the Product Management and is responsible for the translation of texts and for the organisation of the department.


Related articles

BMC System Event Log (SEL) Full on Intel Server
NVMe basics
Supermicro X12SPL-F with Proxmox VE 7 ethX instead of enoX NICs with BIOS 1.1