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 转储、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 : 跳过"按回车键退出"提示
- -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。