# BIOSUtilities
## About
Various BIOS/UEFI-related utilities which aid in research and/or modding
## Usage
### Main
The "main" script provides a simple way to check and parse each of the user provided files against all utilities, in succession. It is ideal for quick drag & drop operations but lacks the finer control of the "Package" method. If needed, a few options can be set, by using the command line:
``` text
usage: main.py [-h] [-e] [-o OUTPUT_DIR] [paths ...]
positional arguments:
paths
options:
-h, --help show help and exit
-e, --auto-exit do not pause on exit
-o OUTPUT_DIR, --output-dir OUTPUT_DIR extraction directory
```
``` text
python ./main.py "/path/to/input/file.bin" --output-dir "/path/to/file extractions"
```
If no arguments/options are provided, the "main" script requests the input and output paths from the user. If no output path is provided, the utility will use the parent directory of the first input file or fallback to the runtime execution directory.
``` text
Enter input file or directory path: "C:\P5405CSA.303"
Enter output directory path: "C:\P5405CSA.303_output"
```
### Package
Each utility is derived from a base "BIOSUtility" template and all utilities form the "biosutilities" python package, which can be installed from PyPi:
``` bash
python -m pip install --upgrade biosutilities[pefile,lznt1]
```
Installing the python package is the recommended way to call one or more utilities programatically, while fully controlling arguments and options.
``` python
from biosutilities.ami_pfat_extract import AmiPfatExtract
ami_pfat_extractor = AmiPfatExtract(input_object='/path/to/input/file.bin', extract_path='/path/to/output/folder/')
is_supported = ami_pfat_extractor.check_format()
is_extracted = ami_pfat_extractor.parse_format()
```
``` python
from biosutilities.dell_pfs_extract import DellPfsExtract
with open('/path/to/input/file.bin', 'rb') as pfs_file:
pfs_data = pfs_file.read()
dell_pfs_extractor = DellPfsExtract(input_object=pfs_data, extract_path='/path/to/output/directory/', padding=8)
is_supported = dell_pfs_extractor.check_format()
is_extracted = dell_pfs_extractor.parse_format()
```
#### Arguments
Each BIOSUtility expects the following required and optional arguments to check and/or parse a given file format:
##### input_object (required)
``` python
input_object: str | bytes | bytearray = b''
```
##### extract_path (required)
``` python
extract_path: str = runtime_root()
```
##### padding (optional)
``` python
padding: int = 0
```
If the required arguments are not provided, placeholder values are set so that it is possible to use the BIOSUtility-inherited instance to access auxiliary public methods and class constants. However, checking and/or parsing of file formats will not yield results.
#### Methods
Once the BIOSUtility-inherited object is initialized with arguments, its two public methods can be called:
##### check_format
Check if input object is of specific supported format
``` python
is_supported: bool = check_format()
```
##### parse_format
Process input object as a specific supported format
``` python
is_extracted: bool = parse_format()
```
## Compatibility
Unless explicitely noted, all utilities should work under Windows, Linux or macOS operating systems which have Python 3.10 - 3.12 support.
## Requirements
There are two main types of requirements, depending on the utility.
### Python Packages
* [pefile](https://pypi.org/project/pefile/2023.2.7/)
* [dissect.util](https://pypi.org/project/dissect.util/3.18/)
Python packages can be installed via Pypi (e.g. pip)
``` bash
python -m pip install --upgrade -r requirements.txt
```
or
``` bash
python -m pip install pefile==2023.2.7 dissect.util==3.18
```
### External Executables / Scripts
To run the utilities, you must have the following 3rd party tools at PATH or "external":
* [7-Zip](https://www.7-zip.org/) (i.e. 7z.exe for Windows or 7zz for macOS or 7zz, 7zzs for Linux)
* [UEFIFind](https://github.com/LongSoft/UEFITool/) (i.e. [UEFIFind.exe for Windows or UEFIFind for Linux/macOS](https://github.com/LongSoft/UEFITool/releases))
* [UEFIExtract](https://github.com/LongSoft/UEFITool/) (i.e. [UEFIExtract.exe for Windows or UEFIExtract for Linux/macOS](https://github.com/LongSoft/UEFITool/releases))
* [TianoCompress](https://github.com/tianocore/edk2/tree/master/BaseTools/Source/C/TianoCompress/) (i.e. [TianoCompress.exe for Windows](https://github.com/tianocore/edk2-BaseTools-win32/) or TianoCompress for Linux/macOS)
* [ToshibaComExtractor](https://github.com/LongSoft/ToshibaComExtractor) (i.e. [comextract.exe for Windows or comextract for Linux/macOS](https://github.com/LongSoft/ToshibaComExtractor/releases))
Note: On Linux, you need to compile "comextract" from sources as no pre-built binary exists.
Note: On Linux and macOS, you need to compile "TianoCompress" from sources as no pre-built binary exists.
Optionally, to decompile the Intel BIOS Guard Scripts (when applicable), you must have the following 3rd party python script at PATH or "external":
* [BIOS Guard Script Tool](https://github.com/platomav/BGScriptTool) (i.e. big_script_tool.py)
External executables and/or scripts (e.g. TianoCompress.exe, big_script_tool.py, 7z.exe) need to be found via the "PATH" environment variable, which is configured differently depending on the operating system.
Alternatively, if neither modifying PATH environment variable nor copying the executables in standard OS PATH directories is an option, you can create a folder "external" at the root of the "biosutilities" project.
#### Linux
[Linux Path](https://www.digitalocean.com/community/tutorials/how-to-view-and-update-the-linux-path-environment-variable)
or
``` bash
sudo install "/path/to/downloaded/executable" /usr/local/bin
```
#### Windows
[Windows Path](https://www.computerhope.com/issues/ch000549.htm)
Note: In the "Environment Variables" window, you can modify the "Path" variable under "User variables" instead of "System variables", contrary to what many guides suggest.
#### MacOS
[Mac Path](https://mac.install.guide/terminal/path)
## Utilities
* [AMI BIOS Guard Extractor](#ami-bios-guard-extractor)
* [AMI UCP Update Extractor](#ami-ucp-update-extractor)
* [Apple EFI IM4P Splitter](#apple-efi-im4p-splitter)
* [Apple EFI Image Identifier](#apple-efi-image-identifier)
* [Apple EFI Package Extractor](#apple-efi-package-extractor)
* [Apple EFI PBZX Extractor](#apple-efi-pbzx-extractor)
* [Award BIOS Module Extractor](#award-bios-module-extractor)
* [Dell PFS Update Extractor](#dell-pfs-update-extractor)
* [Fujitsu SFX BIOS Extractor](#fujitsu-sfx-bios-extractor)
* [Fujitsu UPC BIOS Extractor](#fujitsu-upc-bios-extractor)
* [Insyde iFlash/iFdPacker Extractor](#insyde-iflashifdpacker-extractor)
* [Panasonic BIOS Package Extractor](#panasonic-bios-package-extractor)
* [Phoenix TDK Packer Extractor](#phoenix-tdk-packer-extractor)
* [Portwell EFI Update Extractor](#portwell-efi-update-extractor)
* [Toshiba BIOS COM Extractor](#toshiba-bios-com-extractor)
* [VAIO Packaging Manager Extractor](#vaio-packaging-manager-extractor)
### AMI BIOS Guard Extractor
#### Description
Parses AMI BIOS Guard (a.k.a. PFAT, Platform Firmware Armoring Technology) images, extracts their SPI/BIOS/UEFI firmware components and optionally decompiles the Intel BIOS Guard Scripts. It supports all AMI PFAT revisions and formats, including those with Index Information tables or nested AMI PFAT structures. The output comprises only final firmware components which are directly usable by end users.
Note that the AMI PFAT structure may not have an explicit component order. AMI's BIOS Guard Firmware Update Tool (AFUBGT) updates components based on the user/OEM provided Parameters and Options or Index Information table, when applicable. Thus, merging all the components together does not usually yield a proper SPI/BIOS/UEFI image. The utility does generate such a merged file with the name "00 -- \<filename\>\_ALL.bin" but it is up to the end user to determine its usefulness. Additionally, any custom OEM data, after the AMI PFAT structure, is stored in the last file with the name "\<n+1\> -- \_OOB.bin" and it is once again up to the end user to determine its usefulness. In cases where the trailing custom OEM data includes a nested AMI PFAT structure, the utility will process and extract it automatically as well.
#### Arguments
No additional optional arguments are provided for this utility.
#### Requirements
* BIOS Guard Script Tool (optional)
### AMI UCP Update Extractor
#### Description
Parses AMI UCP (Utility Configuration Program) Update executables, extracts their firmware components (e.g. SPI/BIOS/UEFI, EC, ME etc) and shows all relevant info. It supports all AMI UCP revisions and formats, including those with nested AMI PFAT, AMI UCP or Insyde iFlash/iFdPacker structures. The output comprises only final firmware components and utilities which are directly usable by end users.
#### Arguments
Additional optional arguments are provided for this utility:
* checksum -> bool : verify AMI UCP Checksums (slow)
#### Requirements
* 7-Zip (required)
* TianoCompress (required)
* BIOS Guard Script Tool (optional)
### Apple EFI IM4P Splitter
#### Description
Parses Apple IM4P multi-EFI files and splits all detected EFI firmware into separate Intel SPI/BIOS images. The output comprises only final firmware components and utilities which are directly usable by end users.
#### Arguments
No additional optional arguments are provided for this utility.
#### Requirements
No additional requirements are needed for this utility.
### Apple EFI Image Identifier
#### Description
Parses Apple EFI images and identifies them based on Intel's official "IBIOSI" tag, which contains info such as Model, Version, Build, Date and Time. Additionally, the utility can provide both "IBIOSI" and "Apple ROM Version" structure info, when available, as well as a suggested EFI image filename, while also making sure to differentiate any EFI images with the same "IBIOSI" tag (e.g. Production, Pre-Production) by appending a checksum of their data.
#### Arguments
Additional optional arguments are provided for this utility:
* silent -> bool : suppress structure display
The utility exposes certain public class attributes, once parse_format() method has been successfully executed:
* efi_file_name -> str : Suggested image filename, based on Intel "IBIOSI" information
* intel_bios_info -> dict[str, str] : Information contained at Intel "IBIOSI" structure
* apple_rom_version -> dict[str, str] : Information contained at "Apple ROM Version" structure
#### Requirements
* UEFIFind (required)
* UEFIExtract (required)
### Apple EFI Package Extractor
#### Description
Parses Apple EFI PKG firmware packages (e.g. FirmwareUpdate.pkg, BridgeOSUpdateCustomer.pkg, InstallAssistant.pkg, iMacEFIUpdate.pkg, iMacFirmwareUpdate.tar), extracts their EFI images, splits those in IM4P format and identifies/renames the final Intel SPI/BIOS images accordingly. The output comprises only final firmware components which are directly usable by end users.
#### Arguments
No additional optional arguments are provided for this utility.
#### Requirements
* 7-Zip (required)
* UEFIFind (required)
* UEFIExtract (required)
### Apple EFI PBZX Extractor
#### Description
Parses Apple EFI PBZX images, re-assembles their CPIO payload and extracts its firmware components (e.g. IM4P, EFI, Utilities, Scripts etc). It supports CPIO re-assembly from both Raw and XZ compressed PBZX Chunks. The output comprises only final firmware components and utilities which are directly usable by end users.
#### Arguments
No additional optional arguments are provided for this utility.
#### Requirements
* 7-Zip (required)
### Award BIOS Module Extractor
#### Description
Parses Award BIOS images and extracts their modules (e.g. RAID, MEMINIT, \_EN_CODE, awardext etc). It supports all Award BIOS image revisions and formats, including those which contain LZH compressed files. The output comprises only final firmware components which are directly usable by end users.
#### Arguments
No additional optional arguments are provided for this utility.
#### Requirements
* 7-Zip (required)
### Dell PFS Update Extractor
#### Description
Parses Dell PFS Update images and extracts their Firmware (e.g. SPI, BIOS/UEFI, EC, ME etc) and Utilities (e.g. Flasher etc) component sections. It supports all Dell PFS revisions and formats, including those which are originally LZMA compressed in ThinOS packages (PKG), ZLIB compressed or Intel BIOS Guard (PFAT) protected. The output comprises only final firmware components which are directly usable by end users.
#### Arguments
Additional optional arguments are provided for this utility:
* advanced -> bool : extract signatures and metadata
* structure -> bool : show PFS structure information
#### Requirements
* BIOS Guard Script Tool (optional)
### Fujitsu SFX BIOS Extractor
#### Description
Parses Fujitsu SFX BIOS images and extracts their obfuscated Microsoft CAB archived firmware (e.g. SPI, BIOS/UEFI, EC, ME etc) and utilities (e.g. WinPhlash, PHLASH.INI etc) components. The output comprises only final firmware components which are directly usable by end users.
#### Arguments
No additional optional arguments are provided for this utility.
#### Requirements
* 7-Zip (required)
### Fujitsu UPC BIOS Extractor
#### Description
Parses Fujitsu UPC BIOS images and extracts their EFI compressed SPI/BIOS/UEFI firmware component. The output comprises only a final firmware component which is directly usable by end users.
#### Arguments
No additional optional arguments are provided for this utility.
#### Requirements
* TianoCompress (required)
### Insyde iFlash/iFdPacker Extractor
#### Description
Parses Insyde iFlash/iFdPacker Update images and extracts their firmware (e.g. SPI, BIOS/UEFI, EC, ME etc) and utilities (e.g. InsydeFlash, H2OFFT, FlsHook, iscflash, platform.ini etc) components. It supports all Insyde iFlash/iFdPacker revisions and formats, including those which are 7-Zip SFX 7z compressed in raw, obfuscated or password-protected form. The output comprises only final firmware components which are directly usable by end users.
#### Arguments
No additional optional arguments are provided for this utility.
#### Requirements
No additional requirements are needed for this utility.
### Panasonic BIOS Package Extractor
#### Description
Parses Panasonic BIOS Package executables and extracts their firmware (e.g. SPI, BIOS/UEFI, EC etc) and utilities (e.g. winprom, configuration etc) components. It supports all Panasonic BIOS Package revisions and formats, including those which contain LZNT1 compressed files and/or AMI PFAT payloads. The output comprises only final firmware components which are directly usable by end users.
#### Arguments
No additional optional arguments are provided for this utility.
#### Requirements
* 7-Zip (required)
* pefile (required)
* dissect.util (required)
### Phoenix TDK Packer Extractor
#### Description
Parses Phoenix Tools Development Kit (TDK) Packer executables and extracts their firmware (e.g. SPI, BIOS/UEFI, EC etc) and utilities (e.g. WinFlash etc) components. It supports all Phoenix TDK Packer revisions and formats, including those which contain LZMA compressed files. The output comprises only final firmware components which are directly usable by end users.
#### Arguments
No additional optional arguments are provided for this utility.
#### Requirements
* pefile (required)
### Portwell EFI Update Extractor
#### Description
Parses Portwell UEFI Unpacker EFI executables (usually named "Update.efi") and extracts their firmware (e.g. SPI, BIOS/UEFI, EC etc) and utilities (e.g. Flasher etc) components. It supports all known Portwell UEFI Unpacker revisions (v1.1, v1.2, v2.0) and formats (used, empty, null), including those which contain EFI compressed files. The output comprises only final firmware components and utilities which are directly usable by end users.
#### Arguments
No additional optional arguments are provided for this utility.
#### Requirements
* pefile (required)
* TianoCompress (required)
### Toshiba BIOS COM Extractor
#### Description
Parses Toshiba BIOS COM images and extracts their raw or compressed SPI/BIOS/UEFI firmware component. This utility is effectively a python wrapper around [ToshibaComExtractor by LongSoft](https://github.com/LongSoft/ToshibaComExtractor). The output comprises only a final firmware component which is directly usable by end users.
#### Arguments
No additional optional arguments are provided for this utility.
#### Requirements
* ToshibaComExtractor (required)
### VAIO Packaging Manager Extractor
#### Description
Parses VAIO Packaging Manager executables and extracts their firmware (e.g. SPI, BIOS/UEFI, EC, ME etc), utilities (e.g. WBFLASH etc) and driver (audio, video etc) components. If direct extraction fails, it attempts to unlock the executable in order to run at all non-VAIO systems and allow the user to choose the extraction location. It supports all VAIO Packaging Manager revisions and formats, including those which contain obfuscated Microsoft CAB archives or obfuscated unlock values. The output comprises only final firmware components which are directly usable by end users.
#### Arguments
No additional optional arguments are provided for this utility.
#### Requirements
* 7-Zip (required)
Raw data
{
"_id": null,
"home_page": null,
"name": "biosutilities",
"maintainer": "Plato Mavropoulos",
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "bios, uefi, firmware, extract, unpack, package, ami, insyde, phoenix, award, apple, dell, fujitsu, panasonic, toshiba, dynabook, vaio, portwell, bios guard, pfat, ucp, im4p, pbzx, efi, pfs, sfx, upc, iflash, ifdpacker, ifd, com",
"author": "Plato Mavropoulos",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/f5/67/7563fa5a4d378e120fbf1def01567d52376a4e3059ff73c72ae93d66a7b7/biosutilities-24.11.10.tar.gz",
"platform": null,
"description": "# BIOSUtilities\r\n\r\n## About\r\n\r\nVarious BIOS/UEFI-related utilities which aid in research and/or modding\r\n\r\n## Usage\r\n\r\n### Main\r\n\r\nThe \"main\" script provides a simple way to check and parse each of the user provided files against all utilities, in succession. It is ideal for quick drag & drop operations but lacks the finer control of the \"Package\" method. If needed, a few options can be set, by using the command line:\r\n\r\n``` text\r\nusage: main.py [-h] [-e] [-o OUTPUT_DIR] [paths ...]\r\n\r\npositional arguments:\r\n paths\r\n\r\noptions:\r\n -h, --help show help and exit\r\n -e, --auto-exit do not pause on exit\r\n -o OUTPUT_DIR, --output-dir OUTPUT_DIR extraction directory\r\n```\r\n\r\n``` text\r\npython ./main.py \"/path/to/input/file.bin\" --output-dir \"/path/to/file extractions\"\r\n```\r\n\r\nIf no arguments/options are provided, the \"main\" script requests the input and output paths from the user. If no output path is provided, the utility will use the parent directory of the first input file or fallback to the runtime execution directory.\r\n\r\n``` text\r\nEnter input file or directory path: \"C:\\P5405CSA.303\"\r\n\r\nEnter output directory path: \"C:\\P5405CSA.303_output\"\r\n```\r\n\r\n### Package\r\n\r\nEach utility is derived from a base \"BIOSUtility\" template and all utilities form the \"biosutilities\" python package, which can be installed from PyPi:\r\n\r\n``` bash\r\npython -m pip install --upgrade biosutilities[pefile,lznt1]\r\n```\r\n\r\nInstalling the python package is the recommended way to call one or more utilities programatically, while fully controlling arguments and options.\r\n\r\n``` python\r\nfrom biosutilities.ami_pfat_extract import AmiPfatExtract\r\n\r\nami_pfat_extractor = AmiPfatExtract(input_object='/path/to/input/file.bin', extract_path='/path/to/output/folder/')\r\n\r\nis_supported = ami_pfat_extractor.check_format()\r\nis_extracted = ami_pfat_extractor.parse_format()\r\n```\r\n\r\n``` python\r\nfrom biosutilities.dell_pfs_extract import DellPfsExtract\r\n\r\nwith open('/path/to/input/file.bin', 'rb') as pfs_file:\r\n pfs_data = pfs_file.read()\r\n\r\ndell_pfs_extractor = DellPfsExtract(input_object=pfs_data, extract_path='/path/to/output/directory/', padding=8)\r\n\r\nis_supported = dell_pfs_extractor.check_format()\r\nis_extracted = dell_pfs_extractor.parse_format()\r\n```\r\n\r\n#### Arguments\r\n\r\nEach BIOSUtility expects the following required and optional arguments to check and/or parse a given file format:\r\n\r\n##### input_object (required)\r\n\r\n``` python\r\ninput_object: str | bytes | bytearray = b''\r\n```\r\n\r\n##### extract_path (required)\r\n\r\n``` python\r\nextract_path: str = runtime_root()\r\n```\r\n\r\n##### padding (optional)\r\n\r\n``` python\r\npadding: int = 0\r\n```\r\n\r\nIf the required arguments are not provided, placeholder values are set so that it is possible to use the BIOSUtility-inherited instance to access auxiliary public methods and class constants. However, checking and/or parsing of file formats will not yield results.\r\n\r\n#### Methods\r\n\r\nOnce the BIOSUtility-inherited object is initialized with arguments, its two public methods can be called:\r\n\r\n##### check_format\r\n\r\nCheck if input object is of specific supported format\r\n\r\n``` python\r\nis_supported: bool = check_format()\r\n```\r\n\r\n##### parse_format\r\n\r\nProcess input object as a specific supported format\r\n\r\n``` python\r\nis_extracted: bool = parse_format()\r\n```\r\n\r\n## Compatibility\r\n\r\nUnless explicitely noted, all utilities should work under Windows, Linux or macOS operating systems which have Python 3.10 - 3.12 support.\r\n\r\n## Requirements\r\n\r\nThere are two main types of requirements, depending on the utility.\r\n\r\n### Python Packages\r\n\r\n* [pefile](https://pypi.org/project/pefile/2023.2.7/)\r\n* [dissect.util](https://pypi.org/project/dissect.util/3.18/)\r\n\r\nPython packages can be installed via Pypi (e.g. pip)\r\n\r\n``` bash\r\npython -m pip install --upgrade -r requirements.txt\r\n```\r\n\r\nor\r\n\r\n``` bash\r\npython -m pip install pefile==2023.2.7 dissect.util==3.18\r\n```\r\n\r\n### External Executables / Scripts\r\n\r\nTo run the utilities, you must have the following 3rd party tools at PATH or \"external\":\r\n\r\n* [7-Zip](https://www.7-zip.org/) (i.e. 7z.exe for Windows or 7zz for macOS or 7zz, 7zzs for Linux)\r\n* [UEFIFind](https://github.com/LongSoft/UEFITool/) (i.e. [UEFIFind.exe for Windows or UEFIFind for Linux/macOS](https://github.com/LongSoft/UEFITool/releases))\r\n* [UEFIExtract](https://github.com/LongSoft/UEFITool/) (i.e. [UEFIExtract.exe for Windows or UEFIExtract for Linux/macOS](https://github.com/LongSoft/UEFITool/releases))\r\n* [TianoCompress](https://github.com/tianocore/edk2/tree/master/BaseTools/Source/C/TianoCompress/) (i.e. [TianoCompress.exe for Windows](https://github.com/tianocore/edk2-BaseTools-win32/) or TianoCompress for Linux/macOS)\r\n* [ToshibaComExtractor](https://github.com/LongSoft/ToshibaComExtractor) (i.e. [comextract.exe for Windows or comextract for Linux/macOS](https://github.com/LongSoft/ToshibaComExtractor/releases))\r\n\r\nNote: On Linux, you need to compile \"comextract\" from sources as no pre-built binary exists.\r\nNote: On Linux and macOS, you need to compile \"TianoCompress\" from sources as no pre-built binary exists.\r\n\r\nOptionally, to decompile the Intel BIOS Guard Scripts (when applicable), you must have the following 3rd party python script at PATH or \"external\":\r\n\r\n* [BIOS Guard Script Tool](https://github.com/platomav/BGScriptTool) (i.e. big_script_tool.py)\r\n\r\nExternal executables and/or scripts (e.g. TianoCompress.exe, big_script_tool.py, 7z.exe) need to be found via the \"PATH\" environment variable, which is configured differently depending on the operating system.\r\n\r\nAlternatively, if neither modifying PATH environment variable nor copying the executables in standard OS PATH directories is an option, you can create a folder \"external\" at the root of the \"biosutilities\" project.\r\n\r\n#### Linux\r\n\r\n[Linux Path](https://www.digitalocean.com/community/tutorials/how-to-view-and-update-the-linux-path-environment-variable)\r\n\r\nor\r\n\r\n``` bash\r\nsudo install \"/path/to/downloaded/executable\" /usr/local/bin\r\n```\r\n\r\n#### Windows\r\n\r\n[Windows Path](https://www.computerhope.com/issues/ch000549.htm)\r\n\r\nNote: In the \"Environment Variables\" window, you can modify the \"Path\" variable under \"User variables\" instead of \"System variables\", contrary to what many guides suggest.\r\n\r\n#### MacOS\r\n\r\n[Mac Path](https://mac.install.guide/terminal/path)\r\n\r\n## Utilities\r\n\r\n* [AMI BIOS Guard Extractor](#ami-bios-guard-extractor)\r\n* [AMI UCP Update Extractor](#ami-ucp-update-extractor)\r\n* [Apple EFI IM4P Splitter](#apple-efi-im4p-splitter)\r\n* [Apple EFI Image Identifier](#apple-efi-image-identifier)\r\n* [Apple EFI Package Extractor](#apple-efi-package-extractor)\r\n* [Apple EFI PBZX Extractor](#apple-efi-pbzx-extractor)\r\n* [Award BIOS Module Extractor](#award-bios-module-extractor)\r\n* [Dell PFS Update Extractor](#dell-pfs-update-extractor)\r\n* [Fujitsu SFX BIOS Extractor](#fujitsu-sfx-bios-extractor)\r\n* [Fujitsu UPC BIOS Extractor](#fujitsu-upc-bios-extractor)\r\n* [Insyde iFlash/iFdPacker Extractor](#insyde-iflashifdpacker-extractor)\r\n* [Panasonic BIOS Package Extractor](#panasonic-bios-package-extractor)\r\n* [Phoenix TDK Packer Extractor](#phoenix-tdk-packer-extractor)\r\n* [Portwell EFI Update Extractor](#portwell-efi-update-extractor)\r\n* [Toshiba BIOS COM Extractor](#toshiba-bios-com-extractor)\r\n* [VAIO Packaging Manager Extractor](#vaio-packaging-manager-extractor)\r\n\r\n### AMI BIOS Guard Extractor\r\n\r\n#### Description\r\n\r\nParses AMI BIOS Guard (a.k.a. PFAT, Platform Firmware Armoring Technology) images, extracts their SPI/BIOS/UEFI firmware components and optionally decompiles the Intel BIOS Guard Scripts. It supports all AMI PFAT revisions and formats, including those with Index Information tables or nested AMI PFAT structures. The output comprises only final firmware components which are directly usable by end users.\r\n\r\nNote that the AMI PFAT structure may not have an explicit component order. AMI's BIOS Guard Firmware Update Tool (AFUBGT) updates components based on the user/OEM provided Parameters and Options or Index Information table, when applicable. Thus, merging all the components together does not usually yield a proper SPI/BIOS/UEFI image. The utility does generate such a merged file with the name \"00 -- \\<filename\\>\\_ALL.bin\" but it is up to the end user to determine its usefulness. Additionally, any custom OEM data, after the AMI PFAT structure, is stored in the last file with the name \"\\<n+1\\> -- \\_OOB.bin\" and it is once again up to the end user to determine its usefulness. In cases where the trailing custom OEM data includes a nested AMI PFAT structure, the utility will process and extract it automatically as well.\r\n\r\n#### Arguments\r\n\r\nNo additional optional arguments are provided for this utility.\r\n\r\n#### Requirements\r\n\r\n* BIOS Guard Script Tool (optional)\r\n\r\n### AMI UCP Update Extractor\r\n\r\n#### Description\r\n\r\nParses AMI UCP (Utility Configuration Program) Update executables, extracts their firmware components (e.g. SPI/BIOS/UEFI, EC, ME etc) and shows all relevant info. It supports all AMI UCP revisions and formats, including those with nested AMI PFAT, AMI UCP or Insyde iFlash/iFdPacker structures. The output comprises only final firmware components and utilities which are directly usable by end users.\r\n\r\n#### Arguments\r\n\r\nAdditional optional arguments are provided for this utility:\r\n\r\n* checksum -> bool : verify AMI UCP Checksums (slow)\r\n\r\n#### Requirements\r\n\r\n* 7-Zip (required)\r\n* TianoCompress (required)\r\n* BIOS Guard Script Tool (optional)\r\n\r\n### Apple EFI IM4P Splitter\r\n\r\n#### Description\r\n\r\nParses Apple IM4P multi-EFI files and splits all detected EFI firmware into separate Intel SPI/BIOS images. The output comprises only final firmware components and utilities which are directly usable by end users.\r\n\r\n#### Arguments\r\n\r\nNo additional optional arguments are provided for this utility.\r\n\r\n#### Requirements\r\n\r\nNo additional requirements are needed for this utility.\r\n\r\n### Apple EFI Image Identifier\r\n\r\n#### Description\r\n\r\nParses Apple EFI images and identifies them based on Intel's official \"IBIOSI\" tag, which contains info such as Model, Version, Build, Date and Time. Additionally, the utility can provide both \"IBIOSI\" and \"Apple ROM Version\" structure info, when available, as well as a suggested EFI image filename, while also making sure to differentiate any EFI images with the same \"IBIOSI\" tag (e.g. Production, Pre-Production) by appending a checksum of their data.\r\n\r\n#### Arguments\r\n\r\nAdditional optional arguments are provided for this utility:\r\n\r\n* silent -> bool : suppress structure display\r\n\r\nThe utility exposes certain public class attributes, once parse_format() method has been successfully executed:\r\n\r\n* efi_file_name -> str : Suggested image filename, based on Intel \"IBIOSI\" information\r\n* intel_bios_info -> dict[str, str] : Information contained at Intel \"IBIOSI\" structure\r\n* apple_rom_version -> dict[str, str] : Information contained at \"Apple ROM Version\" structure\r\n\r\n#### Requirements\r\n\r\n* UEFIFind (required)\r\n* UEFIExtract (required)\r\n\r\n### Apple EFI Package Extractor\r\n\r\n#### Description\r\n\r\nParses Apple EFI PKG firmware packages (e.g. FirmwareUpdate.pkg, BridgeOSUpdateCustomer.pkg, InstallAssistant.pkg, iMacEFIUpdate.pkg, iMacFirmwareUpdate.tar), extracts their EFI images, splits those in IM4P format and identifies/renames the final Intel SPI/BIOS images accordingly. The output comprises only final firmware components which are directly usable by end users.\r\n\r\n#### Arguments\r\n\r\nNo additional optional arguments are provided for this utility.\r\n\r\n#### Requirements\r\n\r\n* 7-Zip (required)\r\n* UEFIFind (required)\r\n* UEFIExtract (required)\r\n\r\n### Apple EFI PBZX Extractor\r\n\r\n#### Description\r\n\r\nParses Apple EFI PBZX images, re-assembles their CPIO payload and extracts its firmware components (e.g. IM4P, EFI, Utilities, Scripts etc). It supports CPIO re-assembly from both Raw and XZ compressed PBZX Chunks. The output comprises only final firmware components and utilities which are directly usable by end users.\r\n\r\n#### Arguments\r\n\r\nNo additional optional arguments are provided for this utility.\r\n\r\n#### Requirements\r\n\r\n* 7-Zip (required)\r\n\r\n### Award BIOS Module Extractor\r\n\r\n#### Description\r\n\r\nParses Award BIOS images and extracts their modules (e.g. RAID, MEMINIT, \\_EN_CODE, awardext etc). It supports all Award BIOS image revisions and formats, including those which contain LZH compressed files. The output comprises only final firmware components which are directly usable by end users.\r\n\r\n#### Arguments\r\n\r\nNo additional optional arguments are provided for this utility.\r\n\r\n#### Requirements\r\n\r\n* 7-Zip (required)\r\n\r\n### Dell PFS Update Extractor\r\n\r\n#### Description\r\n\r\nParses Dell PFS Update images and extracts their Firmware (e.g. SPI, BIOS/UEFI, EC, ME etc) and Utilities (e.g. Flasher etc) component sections. It supports all Dell PFS revisions and formats, including those which are originally LZMA compressed in ThinOS packages (PKG), ZLIB compressed or Intel BIOS Guard (PFAT) protected. The output comprises only final firmware components which are directly usable by end users.\r\n\r\n#### Arguments\r\n\r\nAdditional optional arguments are provided for this utility:\r\n\r\n* advanced -> bool : extract signatures and metadata\r\n* structure -> bool : show PFS structure information\r\n\r\n#### Requirements\r\n\r\n* BIOS Guard Script Tool (optional)\r\n\r\n### Fujitsu SFX BIOS Extractor\r\n\r\n#### Description\r\n\r\nParses Fujitsu SFX BIOS images and extracts their obfuscated Microsoft CAB archived firmware (e.g. SPI, BIOS/UEFI, EC, ME etc) and utilities (e.g. WinPhlash, PHLASH.INI etc) components. The output comprises only final firmware components which are directly usable by end users.\r\n\r\n#### Arguments\r\n\r\nNo additional optional arguments are provided for this utility.\r\n\r\n#### Requirements\r\n\r\n* 7-Zip (required)\r\n\r\n### Fujitsu UPC BIOS Extractor\r\n\r\n#### Description\r\n\r\nParses Fujitsu UPC BIOS images and extracts their EFI compressed SPI/BIOS/UEFI firmware component. The output comprises only a final firmware component which is directly usable by end users.\r\n\r\n#### Arguments\r\n\r\nNo additional optional arguments are provided for this utility.\r\n\r\n#### Requirements\r\n\r\n* TianoCompress (required)\r\n\r\n### Insyde iFlash/iFdPacker Extractor\r\n\r\n#### Description\r\n\r\nParses Insyde iFlash/iFdPacker Update images and extracts their firmware (e.g. SPI, BIOS/UEFI, EC, ME etc) and utilities (e.g. InsydeFlash, H2OFFT, FlsHook, iscflash, platform.ini etc) components. It supports all Insyde iFlash/iFdPacker revisions and formats, including those which are 7-Zip SFX 7z compressed in raw, obfuscated or password-protected form. The output comprises only final firmware components which are directly usable by end users.\r\n\r\n#### Arguments\r\n\r\nNo additional optional arguments are provided for this utility.\r\n\r\n#### Requirements\r\n\r\nNo additional requirements are needed for this utility.\r\n\r\n### Panasonic BIOS Package Extractor\r\n\r\n#### Description\r\n\r\nParses Panasonic BIOS Package executables and extracts their firmware (e.g. SPI, BIOS/UEFI, EC etc) and utilities (e.g. winprom, configuration etc) components. It supports all Panasonic BIOS Package revisions and formats, including those which contain LZNT1 compressed files and/or AMI PFAT payloads. The output comprises only final firmware components which are directly usable by end users.\r\n\r\n#### Arguments\r\n\r\nNo additional optional arguments are provided for this utility.\r\n\r\n#### Requirements\r\n\r\n* 7-Zip (required)\r\n* pefile (required)\r\n* dissect.util (required)\r\n\r\n### Phoenix TDK Packer Extractor\r\n\r\n#### Description\r\n\r\nParses Phoenix Tools Development Kit (TDK) Packer executables and extracts their firmware (e.g. SPI, BIOS/UEFI, EC etc) and utilities (e.g. WinFlash etc) components. It supports all Phoenix TDK Packer revisions and formats, including those which contain LZMA compressed files. The output comprises only final firmware components which are directly usable by end users.\r\n\r\n#### Arguments\r\n\r\nNo additional optional arguments are provided for this utility.\r\n\r\n#### Requirements\r\n\r\n* pefile (required)\r\n\r\n### Portwell EFI Update Extractor\r\n\r\n#### Description\r\n\r\nParses Portwell UEFI Unpacker EFI executables (usually named \"Update.efi\") and extracts their firmware (e.g. SPI, BIOS/UEFI, EC etc) and utilities (e.g. Flasher etc) components. It supports all known Portwell UEFI Unpacker revisions (v1.1, v1.2, v2.0) and formats (used, empty, null), including those which contain EFI compressed files. The output comprises only final firmware components and utilities which are directly usable by end users.\r\n\r\n#### Arguments\r\n\r\nNo additional optional arguments are provided for this utility.\r\n\r\n#### Requirements\r\n\r\n* pefile (required)\r\n* TianoCompress (required)\r\n\r\n### Toshiba BIOS COM Extractor\r\n\r\n#### Description\r\n\r\nParses Toshiba BIOS COM images and extracts their raw or compressed SPI/BIOS/UEFI firmware component. This utility is effectively a python wrapper around [ToshibaComExtractor by LongSoft](https://github.com/LongSoft/ToshibaComExtractor). The output comprises only a final firmware component which is directly usable by end users.\r\n\r\n#### Arguments\r\n\r\nNo additional optional arguments are provided for this utility.\r\n\r\n#### Requirements\r\n\r\n* ToshibaComExtractor (required)\r\n\r\n### VAIO Packaging Manager Extractor\r\n\r\n#### Description\r\n\r\nParses VAIO Packaging Manager executables and extracts their firmware (e.g. SPI, BIOS/UEFI, EC, ME etc), utilities (e.g. WBFLASH etc) and driver (audio, video etc) components. If direct extraction fails, it attempts to unlock the executable in order to run at all non-VAIO systems and allow the user to choose the extraction location. It supports all VAIO Packaging Manager revisions and formats, including those which contain obfuscated Microsoft CAB archives or obfuscated unlock values. The output comprises only final firmware components which are directly usable by end users.\r\n\r\n#### Arguments\r\n\r\nNo additional optional arguments are provided for this utility.\r\n\r\n#### Requirements\r\n\r\n* 7-Zip (required)\r\n",
"bugtrack_url": null,
"license": "BSD-2-Clause-Patent",
"summary": "Various BIOS Utilities for Modding/Research",
"version": "24.11.10",
"project_urls": {
"Changelog": "https://github.com/platomav/BIOSUtilities/blob/main/CHANGELOG",
"Homepage": "https://github.com/platomav/BIOSUtilities",
"Issues": "https://github.com/platomav/BIOSUtilities/issues",
"Readme": "https://github.com/platomav/BIOSUtilities/blob/main/README.md",
"Repository": "https://github.com/platomav/BIOSUtilities"
},
"split_keywords": [
"bios",
" uefi",
" firmware",
" extract",
" unpack",
" package",
" ami",
" insyde",
" phoenix",
" award",
" apple",
" dell",
" fujitsu",
" panasonic",
" toshiba",
" dynabook",
" vaio",
" portwell",
" bios guard",
" pfat",
" ucp",
" im4p",
" pbzx",
" efi",
" pfs",
" sfx",
" upc",
" iflash",
" ifdpacker",
" ifd",
" com"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "02f45aa6f65b93170f18cd5c41636dc585d1abefa589f3fd7127a329ac6813b2",
"md5": "67b8cd0e3010deb6edce3a5e3d09f91d",
"sha256": "1a4d61bb522c860a0a1ab0e1424ffe0821a97448ca872f7c84ff43c8cfb9791a"
},
"downloads": -1,
"filename": "biosutilities-24.11.10-py3-none-any.whl",
"has_sig": false,
"md5_digest": "67b8cd0e3010deb6edce3a5e3d09f91d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 70979,
"upload_time": "2024-11-10T23:21:39",
"upload_time_iso_8601": "2024-11-10T23:21:39.944998Z",
"url": "https://files.pythonhosted.org/packages/02/f4/5aa6f65b93170f18cd5c41636dc585d1abefa589f3fd7127a329ac6813b2/biosutilities-24.11.10-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f5677563fa5a4d378e120fbf1def01567d52376a4e3059ff73c72ae93d66a7b7",
"md5": "48f9104528856aed2b48c557f1dec177",
"sha256": "53fcd2781845026a50e1ebfd1f4a67063c921a3da167105ac7ca5b4b8d0ace67"
},
"downloads": -1,
"filename": "biosutilities-24.11.10.tar.gz",
"has_sig": false,
"md5_digest": "48f9104528856aed2b48c557f1dec177",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 62221,
"upload_time": "2024-11-10T23:21:41",
"upload_time_iso_8601": "2024-11-10T23:21:41.701628Z",
"url": "https://files.pythonhosted.org/packages/f5/67/7563fa5a4d378e120fbf1def01567d52376a4e3059ff73c72ae93d66a7b7/biosutilities-24.11.10.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-10 23:21:41",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "platomav",
"github_project": "BIOSUtilities",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "biosutilities"
}