Reading out BIOS image Intel microcodes and Intel firmware versions
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
- ↑ 12. Virtual Environments and Packages (docs.python.org/3)
- ↑ MC Extractor - Releases (github.com/platomav)
- ↑ 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.
|


