Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,12 @@ unwrap_used = "deny"
clap = { version = "4.5.48", features = ["derive"] }
env_logger = "0.11.8"
log = "0.4.28"

crc = "3.4.0"
md5 = "0.8.0"
num-bigint = "0.4.6"
sha2 = "0.10.9"

num-bigint = "0.4.6"
phf = { version = "0.13.1", default-features = false, features = ["macros"] }
phf_macros = "0.13.1"
strum = { version = "0.27.2", features = ["derive"] }
Expand Down
4 changes: 4 additions & 0 deletions docs/knowledge.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ Note that the public information mainly focuses on host processor firmware.
- [TXE MFS exploit PoC](https://github.com/ptresearch/IntelTXE-PoC)
- [ME disablement](https://github.com/ptresearch/me-disablement)
- [many other repositories](https://github.com/ptresearch?tab=repositories)
- earlier commmunity research
- [xvilka's attempts with r2](http://xvilka.me/h2hc2014-reversing-firmware-radare-slides.pdf)
- [community wiki of people who wanted custom ME firmware](https://web.archive.org/web/20170930114403/http://me.bios.io/Main_Page)
- [analysis of ME v6-10 Huffman algorithm](https://web.archive.org/web/20160428074432/https://io.netgarage.org/me/)

## Research

Expand Down
27 changes: 27 additions & 0 deletions docs/platforms.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,31 @@ generation and specific platforms a certain firmware version range. For example,
Lenovo ThinkPad X270 laptops came with 6th/7th gen Intel Core processors, which
means 3rd generation ME hardware and version 11.x.x.x ME firmware.

The following table is not necessarily correct nor complete, based on rough
findings and notes on Wikipedia[^26].

| Year | Microarchitecture | Chipset series | Generation | ME version |
| ---- | ----------------- | -------------- | ---------- | ---------- |
| 2015 | Broadwell | | 5th | 11.x.x.x |
| | Skylake | 100[^22] | 6th | 11.x.x.x |
| 2016 | | | | |
| 2017 | Kaby Lake | 200[^23] | 7th | 11.5.x.x |
| | Coffee Lake | | 8th | 12.x.x.x |
| 2018 | Coffee Lake | 300[^24] | 9th | 12.x.x.x |
| 2019 | | | | |
| 2020 | Comet Lake | 400[^25] | 10th | 14.x.x.x |
| 2021 | Rocket Lake | | 11th | 15.x.x.x |
| 2022 | Alder Lake | | 12th | 15.x.x.x |
| 2023 | Raptor Lake | | 13th | 15.x.x.x |
| | Raptor Lake | | 14th | 15.x.x.x |
| 2024 | Arrow Lake | | Series 2 | 15.x.x.x |

[^22]: <https://www.intel.com/content/www/us/en/products/sku/90587/intel-q170-chipset/specifications.html>
[^23]: <https://www.intel.com/content/www/us/en/products/sku/98088/intel-q270-chipset/specifications.html>
[^24]: <https://www.intel.com/content/www/us/en/products/sku/133282/intel-q370-chipset/specifications.html>
[^25]: <https://www.intel.com/content/www/us/en/products/sku/201836/intel-q470-chipset/specifications.html>
[^26]: <https://en.wikipedia.org/wiki/Intel_AMT_versions>

## Processor names

Intel publicly documents how to interpret procesor names[^12] and what their
Expand All @@ -65,6 +90,7 @@ suffixes mean[^13].
| HAP | High-Assurance Platform |
| {I,M,P}CH | {I/O,Memory,Platform} Controller Hub[^9] |
| IFD | Intel Flash Descriptor |
| LMS | Local Manageability Service[^21] |
| PTT | Platform Trust Technology |
| RBE | ROM Boot Extensions (part of ME firmware) |
| SPS | Server Platform Services |
Expand Down Expand Up @@ -99,3 +125,4 @@ The following abbreviations have a second meaning:
[^18]: <https://bitkeks.eu/blog/2017/12/the-intel-management-engine.html>
[^19]: <https://www.intel.com/content/dam/www/public/us/en/security-advisory/documents/intel-csme-security-white-paper.pdf>
[^20]: <https://www.intel.com/content/dam/support/us/en/documents/technologies/intel_amt_linux_enablement_guide_revision_1_1.pdf>
[^21]: <https://web.archive.org/web/20070630000420/http://www.openamt.org/>
6 changes: 6 additions & 0 deletions scripts/testall.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ cargo run --release -- me clean -b MFS -O x230_clean_b_MFS.rom ./fixtures/x230.r
cargo run --release -- me clean -w EFFS -O x230_clean_w_EFFS.rom ./fixtures/x230.rom
#me_cleaner -b EFFS -O ./fixtures/x230_cleaned_b_EFFS.rom ./fixtures/x230.rom
cargo run --release -- me clean -b EFFS -O x230_clean_b_EFFS.rom ./fixtures/x230.rom
#me_cleaner -b EFFS -O ./fixtures/x230_cleaned_b_EFFS.rom -M ./fixtures/x230_cleaned_b_EFFS_me.bin ./fixtures/x230.rom
cargo run --release -- me clean -b EFFS -O x230_clean_b_EFFS.rom -M x230_clean_b_EFFS_me.bin ./fixtures/x230.rom

#me_cleaner -O ./fixtures/x270_cleaned_simple.rom ./fixtures/x270.rom
cargo run --release -- me clean -O x270_clean.rom ./fixtures/x270.rom
Expand All @@ -41,6 +43,10 @@ cargo run --release -- me clean -b MFS -O x270_clean_b_MFS.rom ./fixtures/x270.r
cargo run --release -- me clean -w EFFS -O x270_clean_w_EFFS.rom ./fixtures/x270.rom
#me_cleaner -b EFFS -O ./fixtures/x270_cleaned_b_EFFS.rom ./fixtures/x270.rom
cargo run --release -- me clean -b EFFS -O x270_clean_b_EFFS.rom ./fixtures/x270.rom
#me_cleaner -b EFFS -O ./fixtures/x270_cleaned_b_EFFS.rom -M ./fixtures/x270_cleaned_b_EFFS_me.bin ./fixtures/x270.rom
cargo run --release -- me clean -b EFFS -O x270_clean_b_EFFS.rom -M x270_clean_b_EFFS_me.bin ./fixtures/x270.rom
me_cleaner -b EFFS -O ./fixtures/x270_cleaned_b_EFFS.rom -t -M ./fixtures/x270_cleaned_b_EFFS_me_t.bin ./fixtures/x270.rom
cargo run --release -- me clean -b EFFS -O x270_clean_b_EFFS.rom -t -M x270_clean_b_EFFS_me_t.bin ./fixtures/x270.rom

./scripts/bdiffstat x230_clean.rom fixtures/x230_cleaned_simple.rom
./scripts/bdiffstat x230_clean_k.rom fixtures/x230_cleaned_k.rom
Expand Down
Loading