Part 2: What do we have to work with?
Table of Contents
This article is part of a series: FlashFiler Data Necromancy
What’s in a backup? #
As stated before, these backup files we had access to weren’t formatted in something easy to use, as say, text (like JSON for example). Teenage me couldn’t figure out how to even open them I think, but the people I hang out with say I’m clevererer now, so surely I can figure this one out.
Extracting the .zip
file shows me… a bunch of .FF2
files.
lydia@Athena:~/backup_extract$ ls
Activity.FF2
ActivityConditions.FF2
ActivityFibreSales.FF2
ActivityMilkProd.FF2
ActivityObservation.FF2
ActivityProductBatch.FF2
ActivityProducts.FF2
ActivityReproduction.FF2
ActivityTransactions.FF2
ActivityWorkLabour.FF2
BlockDetail.FF2
BlockList.FF2
CoverList.FF2
CropList.FF2
CropSummary.FF2
CropVariety.FF2
D.FF2
...
Welp, my vague hope for a SQLite extract seems to have gone out the window, but that wasn’t really based in reality anyway.
Experience tells me that these are probably database table extracts, but opening one up in a text editor shows that it’s not exactly plaintext.
There seems to be text data down lower, but I don’t feel confident trying to get anything meaningful out of these directly.
Maybe some google-fu will tell us some more about the file format. FileExt.com seems to think it’s a file associated with FlashFiler, although I’m not very convinced at their claim to be able to decode it in a browser. Sounds like the FlashFiler company, Turbopower, has gone out of business and their site no longer works. Bugger.
Googling the product, the first link is to a SourceForge repo, which has this lovely little tag line:
FlashFiler is a client-server database for Borland Delphi & C++Builder. It features a component-based architecture & the server engine can be embedded in your applications. FlashFiler is easy to configure, performs well, & includes SQL support.
Hmm unfortunately, I know bugger all about Delphi. They provide .exe
files in the repo though, that’s pretty neat!
I don’t really know what anything here does, and all the internal docs here are the long dead .hlp
extension.
I clicked around a bit, but I ended up needing to download the PDF documents in the SourceForge repo to get anywhere.
The gist is, you open the ffserver.exe
file, create an “alias” that points to the folder containing your .FF2
files, and then connect to that server with the ffe.exe
program.
Okay I am pleasantly surprised that this software still works on Windows 11. Maybe the whole backwards compatibility thing is good after all 😂. I can even query the DB using regular old SQL and get some rows back! At this point I thought I had the whole project in the bag.
I put the tools down for a weekend or two.
Plain Text is a Common Courtesy #
Okay so I can read all the paddock records now, in their de-constructed state. I’m a Melbournian, so I think I can make something out of this 😜.
One would think that you can easily export a query’s results to some kind of plaintext output now, right? Like they’re right there in HD? There’s even a “Save” button! But it only saves the query, not the results, which I really don’t care about.
Googling about, there doesn’t really seem to be any existing Database Clients for any language I have any experience in, only for the Delphi IDE, which I don’t really feel like downloading if at all possible. Heck, 20 years later, there’s no guarantees that integration works either. However, with enough searching, and a little bit of swearing, I eventually found a Freeware version of an ODBC Driver on this NexusDB Website I initially thought was unrelated.
They’ll come up later, but for now I won’t look a gift horse in the mouth.
I install it, and with a bit of screwing about with Connection Strings, I eventually get it to connect properly. Score! I mess about with it a bit and see if I can’t get the data to import directly into Excel or something. Excel doesn’t seem to keen to read the data, but it’s an old driver so fair enough. Visual Studio 2019 seems happy enough to connect to it though? The data source explorer bugs out a bit, but it seems happy enough to connect and query the DB, so I rest easy, thinking I am close to home.
Visual Studio is crashing a little while I’m doing this, but I don’t clock it as weird at the time. I put the tools down for another weekend.