Skip to content

PSPTool does not support reading "Dragon Range" UEFI/PSP firmware #63

@moldimolt

Description

@moldimolt

Hello,

It appears PSPTool does not support reading/extracting/etc. the attached UEFI ROMs from ASUS GX650PY (7945HX) and G733PYV (7945HX3D). The ROM images/PSP data within appears to be intact/undamaged, as AM5 SMU Checker v0.8 and IOActive's efs_parser.py can read them. Please see the attached files and the error output:

noellemercer@Noelles-MacBook-Pro Downloads % psptool G733PYV323.rom
Warning: Couldn't parse entry at: 0x123000. Type: 0x48. Size 0x100
Warning: Couldn't parse entry at: 0x124000. Type: 0x4a. Size 0x100
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.13/bin/psptool", line 8, in <module>
    sys.exit(main())
             ~~~~^^
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/psptool/__main__.py", line 105, in main
    psp = PSPTool.from_file(args.file, verbose=args.verbose)
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/psptool/psptool.py", line 33, in from_file
    pt = PSPTool(file_bytes, verbose=verbose)
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/psptool/psptool.py", line 41, in __init__
    self.blob = Blob(rom_bytes, len(rom_bytes), self)
                ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/psptool/blob.py", line 68, in __init__
    potential_rom = Rom(self, rom_size, rom_offset, fet_offset, psptool)
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/psptool/rom.py", line 20, in __init__
    self.fet = Fet(self, fet_offset, psptool)
               ~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/psptool/fet.py", line 45, in __init__
    self._parse_entry_table()
    ~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/psptool/fet.py", line 121, in _parse_entry_table
    self._create_directory(rom_addr, dir_magic, zen_generation='unknown')
    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/psptool/fet.py", line 92, in _create_directory
    secondary_dir = Directory(self.rom, secondary_directory_address, 'secondary', self.psptool, zen_generation)
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/psptool/directory.py", line 76, in __init__
    self._parse_entries()
    ~~~~~~~~~~~~~~~~~~~^^
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/psptool/directory.py", line 140, in _parse_entries
    entry_fields['offset'] &= self.rom.addr_mask
    ~~~~~~~~~~~~^^^^^^^^^^
KeyError: 'offset'
noellemercer@Noelles-MacBook-Pro Downloads % psptool GX650PY319.rom
Warning: Couldn't parse entry at: 0x123000. Type: 0x48. Size 0x100
Warning: Couldn't parse entry at: 0x124000. Type: 0x4a. Size 0x100
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.13/bin/psptool", line 8, in <module>
    sys.exit(main())
             ~~~~^^
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/psptool/__main__.py", line 105, in main
    psp = PSPTool.from_file(args.file, verbose=args.verbose)
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/psptool/psptool.py", line 33, in from_file
    pt = PSPTool(file_bytes, verbose=verbose)
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/psptool/psptool.py", line 41, in __init__
    self.blob = Blob(rom_bytes, len(rom_bytes), self)
                ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/psptool/blob.py", line 68, in __init__
    potential_rom = Rom(self, rom_size, rom_offset, fet_offset, psptool)
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/psptool/rom.py", line 20, in __init__
    self.fet = Fet(self, fet_offset, psptool)
               ~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/psptool/fet.py", line 45, in __init__
    self._parse_entry_table()
    ~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/psptool/fet.py", line 121, in _parse_entry_table
    self._create_directory(rom_addr, dir_magic, zen_generation='unknown')
    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/psptool/fet.py", line 92, in _create_directory
    secondary_dir = Directory(self.rom, secondary_directory_address, 'secondary', self.psptool, zen_generation)
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/psptool/directory.py", line 76, in __init__
    self._parse_entries()
    ~~~~~~~~~~~~~~~~~~~^^
  File "/Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/psptool/directory.py", line 140, in _parse_entries
    entry_fields['offset'] &= self.rom.addr_mask
    ~~~~~~~~~~~~^^^^^^^^^^
KeyError: 'offset'

Thank you.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions