Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parsing PS3 ISO images failes with exception #98

Open
sahlberg opened this issue Aug 6, 2022 · 2 comments
Open

Parsing PS3 ISO images failes with exception #98

sahlberg opened this issue Aug 6, 2022 · 2 comments

Comments

@sahlberg
Copy link

sahlberg commented Aug 6, 2022

I rip my PS3 disks into ISO on my custom firmware PS3.
I wrote a small tool using pycdlib to extract the DISC-ID number from the ISO (stored in the file /PS3_GAME/PARAM.SFO)
however pycdlib fails to parse these iso images and fails with the exception:

Traceback (most recent call last):
File "/data/sahlberg/pop-fe/./ps3discid.py", line 23, in
iso.open(path)
File "/home/sahlberg/.local/lib/python3.10/site-packages/pycdlib/pycdlib.py", line 4123, in open
self._open_fp(fp)
File "/home/sahlberg/.local/lib/python3.10/site-packages/pycdlib/pycdlib.py", line 2394, in _open_fp
self._parse_udf_descriptors()
File "/home/sahlberg/.local/lib/python3.10/site-packages/pycdlib/pycdlib.py", line 2083, in _parse_udf_descriptors
raise pycdlibexception.PyCdlibInvalidISO('UDF File Set Tag identifier not 256')
pycdlib.pycdlibexception.PyCdlibInvalidISO: UDF File Set Tag identifier not 256

In this case it is because the tag in question has the value 261, not 256.

A quick fix for me was to just edit pycdlib.py and comment out these lines:
elif ident == b'BEA01':
self._has_udf = False
#self._has_udf = True
#udf_bea = udfmod.BEAVolumeStructure()
#udf_bea.parse(vd, curr_extent)
#self.udf_beas.append(udf_bea)
(I don't care about UDF much, I just want to read the PARAM.SFO file from the ISO)

Is this something you can fix?
If not, is it possible to add a method to the class to disable all UDF parsing for an ISO to handle cases like mine where there are UDF tags that the library can not handle?

I am on Fedora36 and this is the version installed:
$ head pycdlib-1.13.0.dist-info/METADATA
Metadata-Version: 2.1
Name: pycdlib
Version: 1.13.0
Summary: Pure python ISO manipulation library
Home-page: http://github.com/clalancette/pycdlib
Author: Chris Lalancette
Author-email: [email protected]
License: LGPLv2
Keywords: iso9660 iso ecma119 rockridge joliet eltorito udf
Platform: UNKNOWN

(These ISO images were created by the PS3 CFW tool MultiMan ripping a PS3 DVD so may be difficult to reproduce without access to a PS3.)

@clalancette
Copy link
Owner

I'm sorry it's been a month and no response on this.

I'd very much prefer to fix this problem, rather than disabling UDF parsing. Is there any way you can make an example ISO available to me so I can download it and try to figure out what is wrong with pycdlib parsing of it? Thanks

@sahlberg
Copy link
Author

sahlberg commented Sep 8, 2022

I can make an ISO available with this. The smallest one I have is ~2Gbyte.
Let me know how/where I can upload it to you.

Please contact me on [email protected] with details and I can try to get the ISO to you

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants