ME Analyzer: Intel Engine Firmware Analysis Tool Discussion

ME Analyzer
Intel Engine Firmware Analysis Tool
Discussion Topic


This thread is meant as a place to discuss ME Analyzer's functionality.

You can find all details and download links at the project's Github page.

Any issues or suggestions should be reported at the Github Issues page.

Thanks for the tool. However, it fails to start with an error about some missing encoding:

1
2
 
Fatal Python error: Py_Initialize: can't initialize sys standard streams
LookupError: unknown encoding: cp850
 
Placing "cp850.pyc" from my local Python 3.4.x installation in "ME_Analyzer.zip\encodings" fixed it.

I continued to extract the ME region from a Latitude E6430 BIOS update and it seems to be recognized correctly:

me.jpg

@k3nny

Thank you very much for the report. I tested it on 5-6 systems (Windows XP, 7, 8.1) but I never saw this missing dependency error. I have uploaded v0.9.9 r2 to address this issue. I also included a Changelog.txt file now.

The ME is not recognized properly in the picture. It’s showing it as Partial Update which makes no sense for an SPI/BIOS image. What image did you load exactly? I downloaded the latest Dell Latitude E6430 A16 BIOS and this is what I got:



Update:

ME Analyzer v0.9.9 r2 - Fixed missing dependency error (cp850.pyc)

I ran it on a separate ME image, manually extracted from the A16 BIOS.
Turns out I missed a part when calculating the size, and the resulting image was missing a part.

Now I get the same result, as shown in your screenshot - nice.

EDIT:
r2 fixed the encoding issue for me.

Error for me, Win 8.1 64 bit

Is this my new toy? You shouldn’t have…

I will take a look at the firmwares I have, but there shouldn’t be any other than those I already posted. The error with missing encoding is related to the OS language, because I needed cp852.pyc instead. Probably more encodings are needed for different languages. And while you are updating, can you also bump the version of the libraries, please? The python34.dll should be at 3.4.3 and Msvcr100.dll is already at 10.00.40219.455 in my system (and I haven’t updated them in a while). You can safely replace them as is (actually, the python dll should be updated with main python), just as I did. The VC libraries can be downloaded from one (old and not maintained), two (too big for my taste, but updated), three, four (my favourite).

@gpvecchi

You have to run the .bat files and not the exe itself, because it expects some arguments.



Thanks, solved. I have to open a command prompt with administrator rights; just answering yes to the popup window doesn’t work.

@gpvecchi

Thank you for your feedback regarding Admin privileges not working. I decided to convert the .bat file to .exe and add an Administrator manifest instead. This should fix any such issue and work for Windows XP, Vista, 7, 8.x, 10 etc operating systems. The new main file is ME_Analyzer_Run.exe and it replaced ME_Analyzer.bat script. For the record, administrator privileges are needed for ME_Utility_Cut to work since it needs to access the HECI driver.

Can you guys let me know if the Driver/Firmware reporting works properly? It does on my system.

@lordkag

ME Analyzer should tell you right away if you have anything newer via the drag&drop feature. Thank you for letting me know about the outdated libraries, I didn’t even think of that for some weird reason. ME Analyzer was built with Python 3.4.2 and that’s why the python interpreter dll was outdated. I updated to 3.4.3 now. The Msvcr100.dll library is only needed for Windows XP as shown by various operating system tests before release. Initially I was planning to release v1.0.0 but I went with v0.9.9 as a beta in order to fix any missing python dependencies based on user feedback.

Update:

ME Analyzer v0.9.9 r3

ME Analyzer & ME Utility Cut were rebuilt using Python 3.4.3
Fixed bug where Admin privileges were not given (ME_Analyzer.bat → ME_Analyzer_Run.exe)
Fixed all missing dependency errors (all cpXXX.py files now included)
Updated Python Interpreter & Visual C DLL libraries to latest versions
Release version (rX) is now shown at all program headers

Just a quick question, to confirm I understood this right: the "Updated: Yes/No" field reports if you have the latest version of that firmware branch, while the yellow "Note, … you have a rare firmware …" is the one that tell us to report the firmware for database inclusion?

If someone tries to run Me Analyzer → I option on a system with no ME firmware/driver, the script reports an error in ME_Utility_Cut.py, line 296, about HECI interface not present. Maybe wrap that one in a try - except? This only with the old .bat file, because the new exe displays nothing at all, not even that error message.


Yes & Yes. Updated is Major/Minor specific (remember that it does not show for non-production, partial updates, all non-FWUpdate images etc). The rare firmware note is there for a) finding new firmware releases b) finding older firmware that are not already at the database.

Capture.PNG




Thank you for the report. I addressed that, check v0.9.9 r4 please.

Update:

ME Analyzer v0.9.9 r4

Improved Error handling & reporting for ME Utility Cut

Works, I get the same message you posted.


Yup, fine on P8Z77-V Deluxe!

@lordkag

At the ME thread, you asked me this:


Since it’s related to ME Analyzer I decided to reply here now that I have a little more py2exe experience.

The result is satisfactory. This is the process (with py2exe, colorama etc installed):

1. I created two py2exe setup files (one for ME_Analyzer and one for ME_Utility_Cut):

Capture1.PNG



2. I created a batch script that automatically builds the executables by calling the two py2exe setup files:

Capture2.PNG



3. The .exe icon as well as the actual python files for ME_Analyzer and ME_Utility Cut need to be at the same folder:

Note: Py2exe does not find Colorama automatically so you need to copy-paste it’s folder at the same folder which for me is Python34 root.

Capture3.PNG

Capture4.PNG



4. The dist folder holds Py2exe’s output which for me is two .exe files and one .zip dependency package:

Note: It’s ONE .zip dependency package. Normally you get one .zip file for every .exe but after research I saw that ME_Analyzer’s .zip package “includes” the Utility’s one so both py2exe setup scripts point to ME_Analyzer.zip file.

Capture5.PNG



5. As you can see the .zip file py2exe creates by default is huge. This is the boring/tiring part but thankfully it needs to be done once usually. Basically remove everything from the zip, run the .exe and add one-by-one the files that are missing (+ all cpXXX encoding dependencies). The end result is this:

Note: As you can see the "cut" .zip file is now 320KB which is a lot smaller than the original 2.75MB one.

Capture6.PNG



6. To call the python .exe files I have created some batch scripts and to convert them to .exe (Run only, not Drop) I use Bat to Exe Converter:

Capture8.PNG

Capture9.PNG



7. Then I add some other dependences like Msvcr100.dll for Windows XP, Database, Batch files etc and the Release version is ready:

Capture7.PNG

Can you read minds? What I’m thinking right now?

It is strange that I actually thought of PM you about this, just to have the basics, in case I will someday decide to make an exe from .py script.


Yeap, secret ability!

I plan to release ME Analyzer for MAC & Linux platforms as well (hopefully). For MAC it shouldn’t be hard, py2app is by far the easiest to use according to what I’ve read. That’s because Apple executables are basically folders with a .app extension. However, Linux will require the use of other tools. Most probably cx-Freeze.

The real problem though is not the actual “conversions” but the files that call the python executables. For Windows I used simple batch scripting but I have no Mac OS or Linux Bash knowledge.

Hello

I have been testing ME Analyzer for a while now, and i just wanted to say thank for this utility!, it is great :slight_smile:
Had the same problems with the first releases that has been reported by other people in this thread already, but so far no problems with r4.

@Pacman

Thank you Pacman. So far nothing new has been reported but hopefully it will help make that process a lot easier from now on. The BIOS files released at SD, are they scanned with ME Analyzer now before release? I am asking so that I can stop manually doing that, no other reason.

One favor, can Station-Drivers add TXE firmware as well? You guys have a very big base of people looking and reporting new releases so that will definitely help the three-man show (Pacman, lordkag, me) that is currently going on in this forum TXE-wise. I have already done all the required research so every info on platform support, SKU etc can be found at the TXE thread in this forum. It shouldn’t be too much work.


I don’t scan all BIOSes added, and mostly i will scan them after they are added, as fdrsoft does most of the BIOS updating.


It is a good idea and i will talk to Fdrsoft.

Update:

ME Analyzer v1.0.0 r1

Restructured code to accommodate SPS firmware
Added SPS 1-3 firmware to Repository Database
Added experimental SPS 1-3 firmware detection & support
Added early ME11.0 (Skylake-S) firmware support
Added experimental ME11.0 Consumer SKU detection
Added 11.0.0.1120_CONS_PRD_EXTR to Repository Database
Added 10.0.33.1012_5MB_PRD_RGN to Repository Database
Added 6.0.20.1185_IGN_IP_PRE_RGN to Repository Database
Added 6.0.20.1185_IGN_IP_PRE_UPD to Repository Database

Capture.PNG

Capture1.PNG

Capture2.PNG



Note: There are a lot of things I would like to state about SPS (since 1.0.0 is basically made for that). I will, but no time now. Also, you are probably going to find a lot of new SPS images that I don’t have. That’s normal since I haven’t really been looking for SPS firmware up until very recently. Upload them and they will be added to the repository.

Update 07/05/2015:

ME Analyzer v1.1.0

Added detection & support for TXE 2.0 (Braswell/Cherry Trail) 1.375MB firmware
Added early detection & support for ME 1.x firmware
Added detection without support for an unknown ME5 SKU
Adjusted latest ME 9.1 1.5MB firmware to 9.1.26.1006
Adjusted latest ME 6 1.5MB UPD firmware to 6.0.40.1215
Adjusted latest ME 1.x firmware to 1.4.3
Adjusted latest TXE 2.0 1.375MB firmware to 2.0.0.2060
Adjusted latest SPS 2 Sub-SKU 1 firmware to 02.03.00.398.1
Adjusted latest SPS 2 Sub-SKU 0 firmware to 02.02.00.049.0
Fixed wrong firmware SVN detection for ME 9.x and up
Fixed wrong firmware release detection (Rom-Bypass) on some SPI images
Fixed wrong firmware type detection (SPS) on some SPI images
Firmware VCN will be hidden when it is 0 for ME8 and up
Updated Engine Firmware Repository Database to r11

Engine Firmware Repository Database r11

Reversed firmware in descending order
Added ME 9.1.26.1006_1.5MB_PRD_RGN
Added ME 9.1.21.1000_1.5MB_PRD_EXTR
Added ME 9.1.0.1110_1.5MB_PRD_RGN
Added ME 9.1.0.1015_1.5MB_PRD_EXTR
Added ME 9.1.0.1015_5MB_PRD_EXTR
Added ME 9.0.21.1462_1.5MB_PRD_RGN
Removed ME 9.0.21.1462_1.5MB_PRD_EXTR
Added ME 9.0.21.1462_1.5MB_PRE_RGN
Added ME 9.0.20.1427_1.5MB_PRD_RGN
Added ME 9.0.20.1447_1.5MB_PRD_RGN
Removed ME 9.0.20.1447_1.5MB_PRD_EXTR
Added ME 9.0.13.1402_5MB_PRD_RGN
Added ME 9.0.13.1402_5MB_PRE_RGN
Added ME 9.0.0.1257_1.5MB_PRE_EXTR
Added ME 9.0.0.1272_1.5MB_PRE_EXTR
Added ME 9.0.0.1310_1.5MB_PRD_EXTR
Added ME 8.1.51.1471_1.5MB_PRD_RGN
Removed ME 8.1.51.1471_1.5MB_PRD_EXTR
Added ME 8.1.50.1456_5MB_PRD_EXTR
Added ME 8.1.40.1416_1.5MB_PRE_RGN
Added ME 8.0.20.1513_1.5MB_PRD_RGN
Added ME 8.0.20.1513_1.5MB_PRE_RGN
Added ME 8.0.20.1513_5MB_PRD_RGN
Added ME 8.0.20.1513_5MB_PRE_RGN
Added ME 8.0.4.1441_1.5MB_PRD_RGN
Removed ME 8.0.4.1441_1.5MB_PRD_EXTR
Added ME 8.0.3.1427_5MB_PRD_EXTR
Added ME 8.0.0.1351_1.5MB_PRE_RGN
Added ME 8.0.0.1340_5MB_PRE_EXTR
Added ME 8.0.0.1296_1.5MB_PRD_EXTR
Added ME 7.1.52.1176_1.5MB_ALL_PRD_EXTR
Added ME 7.1.30.1142_5MB_CPT_PRD_EXTR
Added ME 7.1.21.1134_5MB_PBG_PRD_EXTR
Added ME 7.1.21.1134_5MB_PBG_PRD_UPD
Added ME 7.1.3.1053_1.5MB_CPT_PRD_EXTR
Added ME 7.1.3.1053_1.5MB_CPT_PRD_UPD
Added ME 7.0.1.1141_1.5MB_CPT_PRD_RGN
Removed ME 7.0.1.1141_1.5MB_CPT_PRD_EXTR
Added ME 7.0.1.1141_1.5MB_CPT_PRE_RGN
Added ME 7.0.1.1141_1.5MB_CPT_PRE_UPD
Added ME 6.2.50.1062_5MB_DT_PRD_EXTR
Added ME 6.1.10.1052_5MB_DT_PRD_EXTR
Added ME 6.1.1.1045_5MB_MB_PRD_EXTR
Added ME 6.0.40.1215_1.5MB_PRD_UPD
Added ME 6.0.40.1215_1.5MB_PRD_RGN
Removed ME 6.0.40.1215_1.5MB_PRD_EXTR
Added ME 6.0.30.1203_1.5MB_PRD_UPD
Added ME 6.0.30.1203_1.5MB_PRD_RGN
Removed ME 6.0.30.1203_1.5MB_PRD_EXTR
Added ME 6.0.3.1195_5MB_DT_PRD_EXTR
Added ME 5.2.10.1023_AMT_PRD_EXTR
Added ME 5.2.1.1001_AMT_PRD_EXTR
Added ME 5.0.0.1081_UNK_PRD_RGN
Added ME 4.0.10.1143_TPM_PRD_EXTR
Added ME 2.6.20.1044_AMT_PRD_UPD
Added ME 2.6.1.1030_AMT_PRD_UPD
Added ME 2.1.0.1028_AMT_PRE_RGN
Added ME 2.0.4.1122_AMT_PRD_RGN
Added ME 2.0.4.1122_QST_PRD_RGN
Added ME 1.4.3
Added ME 1.3.10
Added ME 1.1.40
Added ME 1.1.36
Added TXE 2.0.0.2060_1.375MB_PRD_EXTR
Added TXE 2.0.0.2056_1.375MB_PRD_RGN
Added TXE 2.0.0.2056_1.375MB_PRE_RGN
Added TXE 2.0.0.2048_1.375MB_PRD_RGN
Added TXE 2.0.0.2048_1.375MB_PRE_RGN
Added SPS 03.00.07.013.1_PRD_RGN
Added SPS 03.00.03.007.0_PRD_RGN
Added SPS 02.03.00.398.1_PRD_RGN
Added SPS 02.03.00.250.1_PRD_RGN
Added SPS 02.02.00.049.0_PRD_RGN
Added SPS 02.01.07.112.0_PRD_RGN
Added SPS 02.01.07.112_PRD_REC