The only real way to do this without knowing the format is to use process monitor from sysinternals to track the read access to the file and then dump it out to be processed.
So we end up with this kind of file where we can see the offsets that are being read from the file and the lengths that are being read. In this way we can work out the things like reads that are lengths of what to read next.
So then writing some code to parse this file into something useful and look for these length values we end up with output like this.
The big lengths are what we are interested in here and you can see for example a length of 236,900 and 2 reads before it a potential length value of 11,845. If you divide 236,900 by 11,845 you get 20 exactly which suggests that this is 20 byte values repeated 11,845 times. 20 bytes would be 5 lots of 4 byte values. This could potentially be vertices and texture coordinates.
The 42 then 1 then 349680 are the dds files and you can see them increment as they go along.