Jump to content

Hi-MD File format explorations

Rate this topic


emeb

Recommended Posts

I've been poking around in the guts of the Hi-MD file data. Here is a gzipped archive with a few text files that describe what I've learned, along with C source for a program that parses the binary data for analysis. The code is based on fishstyc's HiMD-Xtract program.

Let me know if you find errors or have questions about this

(Edited 'cause I couldn't figure out how to attach the file to this post - find it on my website)

Edited by emeb
Link to comment
Share on other sites

I've been poking around in the guts of the Hi-MD file data. Here is a gzipped archive with a few text files that describe what I've learned, along with C source for a program that parses the binary data for analysis. The code is based on fishstyc's HiMD-Xtract program.

Let me know if you find errors  or have questions about this

(Edited 'cause I couldn't figure out how to attach the file to this post - find it on my website)

Very interesting, I see you're working hard on this one.

Now that we have SS 3.2, and you can have both an encrypted and an unencrypted version of the same file on your computer, could that help in any way?

Did you notice the difference between a drm-ed (above) file and a none drm file (below)? At pos. 0x0406 (or 0x0C06, that depends on the header which doesn't seem to be important), 00 01 means drm, use the key, FF FF means no drm, and ignore the key (XX -> it can be anything), which should mean unencrypted (didn't test with PCM with 0-samples or something yet)

Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00000400   45 41 33 01 00 60 00 01  00 00 00 00 01 0F 50 00   EA3..`........P.
00000410   00 04 00 00 00 DF 79 17  34 53 26 D4 8F 97 96 AD   .....ßy.4S&Ô�—–­
00000420   00 00 20 30 00 00 00 00  00 00 00 00 00 00 00 00   .. 0............

00000C00   45 41 33 01 00 60 FF FF  00 00 00 00 XX XX XX XX   EA3..`ÿÿ........
00000C10   XX XX XX XX XX XX XX XX  XX XX XX XX XX XX XX XX   ....U...@°zãé0Q.
00000C20   01 00 28 B9 00 00 00 00  00 00 00 00 00 00 00 00   ..(¹............

Anyway, I'll shurely take a look at what you've done so far.

greets

----

PS: I also changed the ReadFromInfoFile_String, because not always the whole string was read...

} while (( (c1 == 0x10) || (c1 == 0x11) ) && (c2 != 0x0));

became

( ! ( (c1 == 0x10) && (c2 == 0x0) ) );

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...