
MCExtractor r352
英特尔、AMD、VIA 和飞思卡尔微码提取工具
MCExtractor
Intel, AMD, VIA & Freescale 微码提取工具
Intel, AMD, VIA & Freescale CPU 微码仓库

A. 关于 MC Extractor
MC Extractor 是一款解析 Intel、AMD、VIA 和 Freescale 处理器微码二进制文件的工具。终端用户可使用它获取所有相关微码信息,如 CPUID、平台、版本、日期、发布、大小、校验和等。它能够将 Intel 微码容器(dat、inc、h、txt)转换为 BIOS 集成所需的二进制映像,检测新的/未知微码,检查微码健康状态、更新/过期状态等。MC Extractor 还可作为研究分析工具,其多种结构支持完整解析并显示所有已记录或未记录的微码头部信息。此外,借助其广泛的数据序库,MC Extractor 能够唯一地对所有受支持的微码进行分类,并检查哪些微码尚未存储到微码仓库中。
A1. MC Extractor 功能特性
- 支持从 1995 年至今的所有当前及历史微码
- 一次运行即可扫描所有 Intel、AMD、VIA 和 Freescale 微码
- 通过校验和验证所有提取微码的完整性
- 检查所有 Intel、AMD 和 VIA 微码是否为最新或已过期
- 根据 CPUID 按需搜索所有微码
- 按需显示微码头部结构及详细信息
- 通过完整性检查忽略大多数误报
- 支持已知的特殊、固定或修改版微码
- 能够自动提取 Intel 扩展微码
- 能够自动提取 Intel 容器(dat、inc、txt、h)
- 能够快速向数据序库添加新微码条目
- 能够检测 Intel 生产/预发布标签
- 能够按需检查 MC Extractor 和/或数据序库更新
- 支持通过拖放或输入路径分析多个文件
- 能够根据名称和内容忽略提取的重复项
- 能够自动扫描较新的 MC Extractor 和数据序库版本
- 报告所有未在微码仓库中找到的微码
- 提供命令行参数以增强功能并辅助研究
- 提供用户友好的消息显示和意外错误的妥善处理
- 以带彩色文本的漂亮表格显示结果以强调重点
- 基于宽松许可的开源项目,代码附有注释
A2. 微码仓库数据序库
MC Extractor 允许终端用户和/或研究人员快速提取、查看、转换及报告新微码版本,而无需使用特殊工具或十六进制编辑器。为实现高效操作,需要构建一个数据序库。Intel, AMD, VIA & Freescale CPU 微码仓库 收集了我们发现的每一个最新生产版的 Intel、AMD 和 VIA CPU 微码。该仓库对 MC Extractor 至关重要,使我们能够继续开展研究、发现新类型微码、比较版本之间的相似性、检查更新的二进制文件等。MC Extractor 附带一个名为 MCE.db 的文件,程序运行需要它。该文件包含了我们可用的所有微码二进制文件的条目。这主要支持两个操作:a) 检查导入的微码是否为最新;b) 通过将结果报告到 Intel, AMD, VIA & Freescale CPU 微码仓库讨论 主题,帮助更快发现新的微码版本。
A3. 来源与灵感
MC Extractor 最初基于 Lordkag 的 UEFIStrip 工具的部分代码,因此首先我要感谢他的所有工作,正是这些工作启发了这个项目。此外,以下是了解微码的绝佳去处:Intel 的官方下载站点和官方文档、Intel 微码补丁认证、Coreboot(a、b、c)、Dominic Chen 的 Microparse、Ben Hawkes 的 笔记与研究、Richard A Burton 的 Microdecode、AIDA64 CPUID dumps、Sandpile CPUID、Free Electrons(a、b)、Freescale(a、b、c、d)以及其他众多可能被我遗忘但本应在此列出的来源。
B. 如何使用 MC Extractor
使用 MC Extractor 有两种方式:MCE 脚本和命令提示符。MCE 脚本允许您输入或拖放一个或多个固件,并逐个查看或递归扫描整个目录。要手动使用 MC Extractor,可以使用命令提示符并带 -skip 参数。
B1. MC Extractor 脚本
要使用 MC Extractor,选择单个或多个文件,然后输入或将其拖放到脚本中。您也可以直接运行 MCE 或先向其中放入一个或多个文件,然后输入某些可选参数。请注意,由于操作系统限制,一次拖放的文件数量有限。如果遇到此限制,可以始终使用 -mass 参数递归扫描整个目录,如下所述。
B2. MC Extractor 参数
以下各种参数可以增强或修改 MC Extractor 的默认行为:
- -? : 显示帮助和用法屏幕
- -skip : 跳过欢迎和选项屏幕
- -exit : 跳过“按 Enter 退出”提示
- -mass : 扫描给定目录的所有文件
- -info : 显示微码结构信息
- -add : 将输入微码添加到数据序库(如果是新的)
- -dbn : 根据唯一的数据序库名称重命名输入文件
- -duc : 禁用自动检查 MCE 和数据序库更新
- -search : 根据 CPUID/型号搜索微码
- -last : 根据用户输入显示“最后”状态
- -repo : 从输入构建微码仓库
- -blob : 从输入构建微码 blob(MCB)
B3. MC Extractor 微码 Blob(MCB)
MC Extractor 可以构建自己的微码 Blob(MCB)格式,该格式将多个 Intel 或 AMD 微码二进制文件合并到一个文件中。这主要允许根据等效的用户微码二进制输入,快速自动提取最新的兼容微码二进制文件。MCB 由一个可识别的头部和一个条目查找表(LUT)以及实际的微码二进制数据组成。头部包含微码供应商(Intel 或 AMD)、微码数量、MCE 数据序库修订版本以及覆盖整个 blob 的校验和等信息。LUT 条目包含每个微码二进制文件的详细信息,如 CPUID、平台、修订版本、日期、大小、校验和以及在 blob 中的偏移量。

要构建 MCE 微码 Blob(MCB.bin),输入所需的 Intel 或 AMD 微码二进制文件,并使用 -blob 参数。您可以使用自己的微码,或者从 Intel, AMD, VIA & Freescale CPU 微码 仓库中获取最新的生产版 Intel 和 AMD 微码。要从 MCB 中提取最新的微码,输入单个微码二进制文件,并使用 -blob 和 -search 参数。MC Extractor 将验证检测到的 MCB,检查微码是否已是最新,然后再提取最新版本,并相应通知。
B4. MC Extractor 流程控制
在运行过程中,MC Extractor 可能会遇到问题,从而触发提示、警告和/或错误。提示(黄色/绿色)提供有关此特定固件特性的有用信息。警告(紫色)通知用户可能导致系统不稳定的可能问题。错误(红色)在遇到意外或有问题的状况时显示。
C. 下载 MC Extractor
MC Extractor 由两个文件组成:脚本(MCE.py)及其数据序库(MCE.db)。从 Releases 标签页下载最新版本,标题应以“MC Extractor vX.Y.Z”开头。如果顶部有数据序库发布版本,您可能需要向下滚动一点。后者可用于更新与最新“MC Extractor vX.Y.Z”版本捆绑的过期数据序库,标题应以“DB rXY”开头。
C1. 兼容性
MC Extractor 应能在所有支持 Python >= 3.7 的 Windows、Linux 或 macOS 操作系统上运行。
C2. 前提条件
要运行 MC Extractor,您需要安装 Python >= 3.7,然后安装以下第三方 Python 模块:
pip3 install colorama pltable
D. 截图
注意: 部分截图可能已过时,展示的是较旧的 MC Extractor 版本。


















