ldvd Posted January 6, 2024 Posted January 6, 2024 (edited) This game uses a table file named siren.tbl that was initially encrypted. I made an assumption, given the many FF values there were on the file and how I expected the first value in the file to be an 'S', and XORed the entire file with FF. At first glance the readable filenames give away the index should now be readable. This is all I can make out on this file's structure, read in little endian: File header - 0x20 bytes long 4 - ID (SDT4) 4 - Number of files per the filenames (matches when you subtract the number of 0x0000 in the tail to the number of 0x00 hex values) 4 - Index's total filesize 4 - Unknown (large 32 bit value) 4 - Unknown (equals to 0x20, might the the filesize limit inside the tail) 4 - Tail's offset (0x18D4) 8 - Null bytes File header - 0x20 to 0x18D4 - file entry is 0x0B bytes long 4 - Unknown, each entry has a strictly larger value than the last one 4 - File's total size in the game's chunk files (first entry's field points to the end of the file, seems like each file is rounded out with null bytes) 4 - Filename's relative offset Tail - 0x18D4 to end of the file - contains multiple filenames ending with either a single or multiple null byte I have no idea how the game's able to tell in which chunk file each file's meant to be stored in. Chunk files don't appear to be encrypted. This post contains both the original .tbl file as well as the XORed file. I haven't attached a sample of the chunk files beause of their confusing nature and the fact that they start with large FMVs, hence I'd advise tracking down the game's original files if you wish to help. siren1.7z Edited January 7, 2024 by ldvd
Solution DKDave Posted January 6, 2024 Solution Posted January 6, 2024 The first value in each file entry is the start sector of the file in the iso, so you don't need to extract the SIREN.xxx files first. I've attached a script that should work. siren_tbl.zip 1
ldvd Posted January 6, 2024 Author Posted January 6, 2024 (edited) 52 minutes ago, DKDave said: The first value in each file entry is the start sector of the file in the iso How were you able to figure that out, or which was the number the files were rounded to? How large is the sector on this .iso? Unfortunately, the script doesn't seem to work with QuickBMS. After renaming the disc image to Siren.iso I've got this error: Error: incomplete input file 0: G:\PS2\siren1\Siren.iso Can't read 4294967296 bytes from offset 00000000153f0000. coverage file 0 7% 356450304 4651417600 . offset 00000000153f0000 Last script line before the error or that produced the error: 11 Log MEMORY_FILE 0 ZSIZE - OFFSET 0x0000000000000000 - SIZE 0x00000001153f0000 coverage file 0 7% 356450304 4651417600 . offset 00000000153f0000 coverage file 1 0% 0 4651417600 . offset 0000000000000000 Sadly I'm illiterate in .bms scripts, but from what I can tell it seems to be trying to read a file the same size as the .iso from a certain offset. What's the exact issue here? Could the file structure above in my post be wrong? Edited January 6, 2024 by ldvd
DKDave Posted January 6, 2024 Posted January 6, 2024 1 hour ago, ldvd said: How were you able to figure that out, or which was the number the files were rounded to? How large is the sector on this .iso? Unfortunately, the script doesn't seem to work with QuickBMS. After renaming the disc image to Siren.iso I've got this error: Error: incomplete input file 0: G:\PS2\siren1\Siren.iso Can't read 4294967296 bytes from offset 00000000153f0000. coverage file 0 7% 356450304 4651417600 . offset 00000000153f0000 Last script line before the error or that produced the error: 11 Log MEMORY_FILE 0 ZSIZE - OFFSET 0x0000000000000000 - SIZE 0x00000001153f0000 coverage file 0 7% 356450304 4651417600 . offset 00000000153f0000 coverage file 1 0% 0 4651417600 . offset 0000000000000000 Sadly I'm illiterate in .bms scripts, but from what I can tell it seems to be trying to read a file the same size as the .iso from a certain offset. What's the exact issue here? Could the file structure above in my post be wrong? If you open the iso in, for example, VGMToolbox, the first entry in the TBL file is 0x15f90 which is sector 90000 where the first file starts. I've ran the script on the whole TBL file and it extracts everything fine for me. You run the script on the TBL file not the ISO, if that's the issue ... 1
ldvd Posted January 7, 2024 Author Posted January 7, 2024 12 hours ago, DKDave said: You run the script on the TBL file not the ISO Yes, at one point I was trying to open the .iso instead of the .tbl file. The problem was I had renamed your .txt script to .bms, and somehow it broke functionality with QuickBMS. I've just tried it with your original .txt script and it now works. Very impressive.
ElixerShibito333 Posted February 11 Posted February 11 Have you guys made any more progress on this topic? I'm new to this side of things (Using QuickBMS and looking at .tbl files) but I'm interested in going deeper into Siren hacking. Currently I am recieving an error when using the siren_tbl.txt script. Error info: ( - error in src/file.c lime 633: fdnum_open() Error: No such file or directory last script line before the error or that produced the error: 7 open FDSE "Siren.iso" 1 ) Apologies if I'm just kind of jumping in here and not doing things as I should. I'm not used to formums so please forgive me. If I'm breaking rules or being cumbersome in any way then please just let me know. I'll happily conform to the way of things are done around here. 😊 Hoping to get things snowballing besides the usual ram hacks and freecam stuff for Siren.
DKDave Posted February 11 Posted February 11 17 minutes ago, ElixerShibito333 said: Have you guys made any more progress on this topic? I'm new to this side of things (Using QuickBMS and looking at .tbl files) but I'm interested in going deeper into Siren hacking. Currently I am recieving an error when using the siren_tbl.txt script. Error info: ( - error in src/file.c lime 633: fdnum_open() Error: No such file or directory last script line before the error or that produced the error: 7 open FDSE "Siren.iso" 1 ) Apologies if I'm just kind of jumping in here and not doing things as I should. I'm not used to formums so please forgive me. If I'm breaking rules or being cumbersome in any way then please just let me know. I'll happily conform to the way of things are done around here. 😊 Hoping to get things snowballing besides the usual ram hacks and freecam stuff for Siren. I'm not sure what you mean by further progress? You need to run the QuickBMS script on the SIREN.TBL file and you need the iso file in the same folder. Either rename yours or change the name in the script to match your iso file. It's possible other regions may not work the same, but it works fine on the US version.
ElixerShibito333 Posted February 11 Posted February 11 59 minutes ago, DKDave said: I'm not sure what you mean by further progress? You need to run the QuickBMS script on the SIREN.TBL file and you need the iso file in the same folder. Either rename yours or change the name in the script to match your iso file. It's possible other regions may not work the same, but it works fine on the US version. My apologies. I just really don't know how this works. Changing the name in the script to fit my ISO seems to have worked. I also use the US version. I appreciate your response and explanation greatly. What I meant by further progress is if anyone has unpacked any of the .pac files. I believe the "Event_demo" folder contains data for each level. (Script, Level parts, characters, bindings, sounds, etc) and was just curious. I'm interested in learning how .pac files work so I can do more than what I do with Cheat Engine and PCSX2Dis for this game. Again, I appreciate your helpful reply and kindness!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now