BIOSUtilities v25.04.02

Improved UAF module detection at AMI UCP Extract
Fixed crashes at Dell PFS and Award BIOS Extract
Upgraded dependency "dissect.util" to 3.20
This commit is contained in:
Plato Mavropoulos 2025-04-03 00:14:35 +03:00
parent 40553b3244
commit a0e0ae7557
9 changed files with 21 additions and 12 deletions

View file

@ -1,3 +1,9 @@
25.04.02
Improved UAF module detection at AMI UCP Extract
Fixed crashes at Dell PFS and Award BIOS Extract
Upgraded dependency "dissect.util" to 3.20
25.02.23 25.02.23
Fixed AMI PFAT Extract file naming of "ALL" and "OOB" Fixed AMI PFAT Extract file naming of "ALL" and "OOB"

View file

@ -26,7 +26,7 @@ There are two main types of requirements, depending on the utility: "Python Pack
#### Python Packages #### Python Packages
* [pefile](https://pypi.org/project/pefile/2023.2.7/) * [pefile](https://pypi.org/project/pefile/2023.2.7/)
* [dissect.util](https://pypi.org/project/dissect.util/3.19/) * [dissect.util](https://pypi.org/project/dissect.util/3.20/)
Python packages can be installed via Pypi (e.g. pip) Python packages can be installed via Pypi (e.g. pip)
@ -37,7 +37,7 @@ python -m pip install --upgrade -r requirements.txt
or or
``` bash ``` bash
python -m pip install pefile==2023.2.7 dissect.util==3.19 python -m pip install pefile==2023.2.7 dissect.util==3.20
``` ```
#### External Executables / Scripts #### External Executables / Scripts

View file

@ -5,4 +5,4 @@
Copyright (C) 2018-2025 Plato Mavropoulos Copyright (C) 2018-2025 Plato Mavropoulos
""" """
__version__ = '25.02.23' __version__ = '25.04.02'

View file

@ -4,7 +4,7 @@
""" """
AMI UCP Extract AMI UCP Extract
AMI UCP Update Extractor AMI UCP Update Extractor
Copyright (C) 2021-2024 Plato Mavropoulos Copyright (C) 2021-2025 Plato Mavropoulos
""" """
import contextlib import contextlib
@ -341,6 +341,9 @@ class AmiUcpExtract(BIOSUtility):
uaf_mod_len: int = uaf_hdr.ModuleSize uaf_mod_len: int = uaf_hdr.ModuleSize
if uaf_mod_len < 0x400:
continue
uaf_mod_dat: bytes = uaf_mod_buf[:uaf_mod_len] uaf_mod_dat: bytes = uaf_mod_buf[:uaf_mod_len]
if uaf_mod_len != len(uaf_mod_dat): if uaf_mod_len != len(uaf_mod_dat):

View file

@ -4,7 +4,7 @@
""" """
Award BIOS Extract Award BIOS Extract
Award BIOS Module Extractor Award BIOS Module Extractor
Copyright (C) 2018-2024 Plato Mavropoulos Copyright (C) 2018-2025 Plato Mavropoulos
""" """
import os import os
@ -52,7 +52,7 @@ class AwardBiosExtract(BIOSUtility):
continue continue
if len(mod_bin) >= 0x16: if len(mod_bin) > 0x16:
tag_txt: str = safe_name(in_name=mod_bin[0x16:0x16 + mod_bin[0x15]].decode('utf-8', 'ignore').strip()) tag_txt: str = safe_name(in_name=mod_bin[0x16:0x16 + mod_bin[0x15]].decode('utf-8', 'ignore').strip())
else: else:
tag_txt = f'{mod_bgn:X}_{mod_end:X}' tag_txt = f'{mod_bgn:X}_{mod_end:X}'

View file

@ -4,7 +4,7 @@
""" """
Dell PFS Extract Dell PFS Extract
Dell PFS Update Extractor Dell PFS Update Extractor
Copyright (C) 2018-2024 Plato Mavropoulos Copyright (C) 2018-2025 Plato Mavropoulos
""" """
import contextlib import contextlib
@ -431,7 +431,7 @@ class DellPfsExtract(BIOSUtility):
header_data: bytes = zlib_data[header_start:compressed_start] header_data: bytes = zlib_data[header_start:compressed_start]
# Check if the PFS ZLIB section header Checksum XOR 8 is valid # Check if the PFS ZLIB section header Checksum XOR 8 is valid
if checksum_8_xor(data=header_data[:0xF]) != header_data[0xF]: if len(header_data) > 0xF and checksum_8_xor(data=header_data[:0xF]) != header_data[0xF]:
printer(message='Error: Invalid Dell PFS ZLIB section Header Checksum!', padding=padding) printer(message='Error: Invalid Dell PFS ZLIB section Header Checksum!', padding=padding)
is_zlib_error = True is_zlib_error = True
@ -461,7 +461,7 @@ class DellPfsExtract(BIOSUtility):
is_zlib_error = True is_zlib_error = True
# Check if the PFS ZLIB section footer Checksum XOR 8 is valid # Check if the PFS ZLIB section footer Checksum XOR 8 is valid
if checksum_8_xor(data=footer_data[:0xF]) != footer_data[0xF]: if len(footer_data) > 0xF and checksum_8_xor(data=footer_data[:0xF]) != footer_data[0xF]:
printer(message='Error: Invalid Dell PFS ZLIB section Footer Checksum!', padding=padding) printer(message='Error: Invalid Dell PFS ZLIB section Footer Checksum!', padding=padding)
is_zlib_error = True is_zlib_error = True

View file

@ -34,7 +34,7 @@ classifiers = [
] ]
[project.optional-dependencies] [project.optional-dependencies]
lznt1 = ["dissect.util == 3.19"] lznt1 = ["dissect.util == 3.20"]
pefile = ["pefile == 2023.2.7"] pefile = ["pefile == 2023.2.7"]
[project.urls] [project.urls]

View file

@ -1,2 +1,2 @@
mypy==1.15.0 mypy==1.15.0
pylint==3.3.4 pylint==3.3.6

View file

@ -1,2 +1,2 @@
dissect.util==3.19 dissect.util==3.20
pefile==2023.2.7 pefile==2023.2.7