Magic To Master

Extraction and unpacking of game archives and compression, encryption, obfuscation, decoding of unknown files
CriticalError
Posts: 204
Joined: Thu Aug 14, 2014 8:52 pm

Magic To Master

Post by CriticalError »

Hello guys, well today I found interesting game, so I wanna study this, format stored in .db3 and .status, sure they are connected so maybe someone can take a look? I checked the files and .db3 contain in the header "SQLite format", I read something about that and is an embedded SQL database engine, ok anyway hope it helps, many thanks.

https://cloud.mail.ru/public/BhZT/uSb4rrLA1
Last edited by CriticalError on Fri Jul 03, 2015 12:28 pm, edited 1 time in total.
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Magic To Master

Post by aluigi »

You linkedin the DarkEden files.
Anyway try this:
http://www.yunqa.de/delphi/doku.php/pro ... espy/index
CriticalError
Posts: 204
Joined: Thu Aug 14, 2014 8:52 pm

Re: Magic To Master

Post by CriticalError »

aluigi wrote:You linkedin the DarkEden files.
Anyway try this:
http://www.yunqa.de/delphi/doku.php/pro ... espy/index
thanks for report, I fix link now, anyway I checking what you give me.
CriticalError
Posts: 204
Joined: Thu Aug 14, 2014 8:52 pm

Re: Magic To Master

Post by CriticalError »

sorry for dump topic again luigi, but what suppose I do with them? I can only see database, and what about data of game? I mean, textures, models,animations,etc?
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Magic To Master

Post by aluigi »

There are for sure better ways but let's try some stdin pipe fun via command-line:

Code: Select all

# How to use:
#   download https://www.sqlite.org/2015/sqlite-shell-win32-x86-3081002.zip
#   md output
#   sqlite3 12_asset_data.db3 .dump | quickbms script.bms - output
#
# (script optimized for stdin)

for
    getct CMD string ' '
    if CMD == "INSERT"
        do
            get TMP byte
        while TMP != ','
        getct SIZE string ','
        getct DUMMY string ','
        get TMP byte    # X
        get TMP byte    # '
        getct DATA binary '\''
        strlen SIZE DATA
        log MEMORY_FILE2 0 0
        put DATA string MEMORY_FILE2
        goto 0 MEMORY_FILE2
        comtype hex
        clog MEMORY_FILE 0 SIZE SIZE MEMORY_FILE2
        get SIZE asize MEMORY_FILE
        getvarchr TMP MEMORY_FILE 0 short
        if TMP == 0x8b1f
            comtype gzip
            clog "" 0 SIZE SIZE MEMORY_FILE
        else
            log "" 0 SIZE MEMORY_FILE
        endif
    endif
    get TMP line
next
CriticalError
Posts: 204
Joined: Thu Aug 14, 2014 8:52 pm

Re: Magic To Master

Post by CriticalError »

many thanks luigi, it worked very well, now my question, the file names are generated random? because I only got numbers, now after unpacking I got this.

Image
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Magic To Master

Post by aluigi »

Unfortunately there are no filenames saved in the database
CriticalError
Posts: 204
Joined: Thu Aug 14, 2014 8:52 pm

Re: Magic To Master

Post by CriticalError »

so exist some way to make unpacker for get hash? in this case any typs from where can begin? because the unpacker no work at all, just unpack few files and after that got error, and .dat files generated by scricpt are wrong extention, because some files are gr2 meshes files (Granny) and others are from animations,etc.
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Magic To Master

Post by aluigi »

That's strange that it doesn't work because here I extract all the almost 400 files correctly.
You can also try to not use the pipe and go with the > output.txt and then open it with quickbms to extract it.

Quickbms tries to guess the extension of lot of files but textual files like lua scripts and meshes cannot be guessed.