On Thu, 26 Sep 2024, Henrik Morsing via GLLUG wrote:

On Wed, Sep 25, 2024 at 09:51:31PM +0100, Damion Yates wrote:
I'm not convinced this is compressed, especially based on the initial hex dump in the OP. Continue the hd and look for more utf-16 strings later, or generally repetitive blocks that you'd expect to be compressed away. Or gzip it and see if it shrinks more that a few percent, which should be unlikely if already compressed. Of course, it still could be compressed later on, but this doesn't necessarily get you closer to recognising the uncompressed format, if it's inhouse/bespoke. That said it's reminiscent to sqlite, which would make a lot of sense for this type of database.

There are a few approaches I'd try next:

Create records with very known data, like all 'A's or 0123456789 in various fields. You can then try and determine where that ends up when expected. Working out the offsets to the various data segments from the hex will be challenging, I used to crack 8bit game loaders in the late 1900s by starring at hex dumps for hours. But as nostalgic, as that sounds, I would probably approach this using another technique.

Only slightly complicated and would fit with James Dutton's post with a
start of a breakdown of the format.

Ask for the format details from the company... Job done. At they're moving to a web system, maybe they consider their old binary abandonware and don't care now.

Not complicated.

Next up, run a decompiler/disassembler over the binary. It'll still be a nightmare but you might be able to trace through to how the data is dumped into the on disc format. You could also maybe try running under gdb to step through the db population part.

Finally, I'd play around with xdotool, have it open each record, copy to clipboard, switch to another tool (e.g. a simple gedit window) and paste. Run this for a few hours to extract the data. You might not like the web app, but if it can import your data then a web-based manipulation tool could also scrape the data back out.

Gosh, that's very complicated but I'll have a think.

Well that's like your opinion dude ;) IMO only some of the suggestions to try were complicated.

TBH, being a Windows app, I started looking at common file-backed DBs Windows developers might use as an equivalent to SQLite and a quick Google mentioned a handful. I might download them and try.

I think recorder.exe can do what xdotool can do, it's a 1990s win16 binary that can probably still be found and should work, there may be a newer equivalent too. Personally I'd run this in wine and stick with xdotool but you could try either.

 - Damion

--
GLLUG mailing list
GLLUG@mailman.lug.org.uk
https://mailman.lug.org.uk/mailman/listinfo/gllug

Reply via email to