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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions