[sword-devel] How to reverse engineer e-Sword's format (no illegality involved)

Chris Little chrislit at crosswire.org
Mon Apr 6 13:22:16 MST 2009

Let's ignore EULAs and DMCA violations for a moment (given that we're 
discussing interoperability, and the DMCA specifically permits reverse 
engineering in such circumstances). And let's just consider the quick 
and simple method of reverse engineering e-Sword's "format" without ever 
visiting e-sword.net or installing any software from the site.

Step 1: Grab a user-created e-Sword module. Here's one: 

Step 2: Unzip it until you get a .bbl file. (The above file is a zip 
with an enclosed self-extracting zip. So use unzip or winzip or whatever 
on it twice.)

Step 3: The .bbl file is an Access database. Use MS Access or any other 
program capable of reading a Jet database (e.g. anything based on 
libmdb, as mentioned) to analyze the structure. User created e-Sword 
content will tend not to include any passwords (as the official content 
does), there's no possible appearance of impropriety.

Step 4: Deal with RTF translation and encoding stuff.

Step 5: Repeat for other module types.

This doesn't address loading any of the official or paid content, since 
that's all behind an access control (of a sort).

I'm not _sure_ that building e-Sword resource support into Sword is the 
right way to go. It might be better to build a converter from e-Sword to 
Sword or OSIS. I was working on something like that myself a couple 
weeks ago, but gave up on it when it became clear how poor Perl's 
cross-platform support for database support was. Something built on 
libmdb or in Java might have been more fruitful.


More information about the sword-devel mailing list