Deark demonstration

Note: Deark is not intended for mission-critical uses. It’s there if you need it, but despite this demo, you really shouldn’t use it to deal with difficult formats like tar or gzip, when a better option is available.

Plug: Deark is self-contained. It’s not a script or a shell that just runs other programs.

This demo assumes you’re using a Unix-like shell. From a Windows command prompt, you can still run the “deark” commands, but the other commands probably won’t work.

We’ll make a scratch directory, and download an old and possibly-interesting file that I found on the internet. (If this link is broken, do a web search for “fbm-1.2.tgz”.)

$ mkdir dtest
$ cd dtest
~/dtest $ wget 'http://ibiblio.org/pub/linux/apps/graphics/convert/fbm-1.2.tgz'

What sort of file is it? Let’s ask the “file” utility:

~/dtest $ file fbm-1.2.tgz
fbm-1.2.tgz: gzip compressed data ...

It’s a gzipped file. We could use GNU gzip, or another gzip decoder. But we could also use Deark:

~/dtest $ deark fbm-1.2.tgz
Module: gzip
Writing output.000.fbm1.2.tar

We’ve extracted a file that Deark has named “output.000.fbm1.2.tar”. (It’s a bit odd that the “-” symbol in “fbm-1.2” has disappeared, but Deark did not remove it. For unknown reasons, the internal name of the file does not include the “-” symbol.)

What kind of file is it?

~/dtest $ file output.000.fbm1.2.tar
output.000.fbm1.2.tar: tar archive

No surprise; it’s a “tar” archive.

By the way, we could also ask Deark what kind of file it thinks it is:

~/dtest $ deark -id output.000.fbm1.2.tar
Module: tar

But the “file” utility is much, much better at this sort of thing.

To deal with the tar archive, we could use GNU tar, or another tar extractor. But we could also use Deark.

First, let’s see what’s in the file. I expect that it might contain lots of files, so I’ll use the -l option, and the “head” utility, to list only the first few files.

~/dtest $ deark output.000.fbm1.2.tar -l | head
Module: tar
output.000.Features
output.001.README
output.002.Makefile
output.003.FTP
output.004.GLOSSARY
output.005.test.clr.Z.uu
output.006.clr2gray.1
output.007.fbcat.1
output.008.fbclean.1

If you really wanted to extract all the files from the tar file, you probably wouldn’t just use Deark, because of the way it prepends things like "output.000" to the file names. If you didn’t have a tar utility, but you did have an Unzip utility, one thing you could do is use Deark’s -zip option. That will cause it to write all the files to a Zip file, and when possible it will use the original filenames. But in this demo, we’re just going to extract one file, so we we’re not going to do that.

That “005” file looks interesting. Let’s extract it.

~/dtest $ deark output.000.fbm1.2.tar -get 5
Module: tar
Writing output.005.test.clr.Z.uu

What kind of file is it?

~/dtest $ file output.005.test.clr.Z.uu
output.005.test.clr.Z.uu: uuencoded or xxencoded, ASCII text

We could go find a uuencode/xxencode utility. Or we could see what Deark thinks of it:

~/dtest $ deark output.005.test.clr.Z.uu
Module: uuencode
Format: Uuencoded
Writing output.000.test.clr.Z

And now what do we have?

~/dtest $ file output.000.test.clr.Z
output.000.test.clr.Z: compress'd data 16 bits

It’s a “compress'd” file. Whatever that is. What are we going to do now?

(Right. We have to go deeper.)

Here’s an idea. We could use Deark:

~/dtest $ deark output.000.test.clr.Z
Module: compress
Writing output.000.bin

I admit, this is an annoyance. We can see that the original filename was “test.clr”. But Deark doesn’t know that. It really only cares about the contents of files, not their names, and “test.clr” was not in the contents of the “output.000.test.clr.Z” file. (Primitive file formats are primitive.)

Deark’s -k option might be better than nothing, but it isn’t smart enough to delete the “.Z”, so the resulting filename would be “output.000.test.clr.Z.bin”. Maybe a future version of Deark will have a way to better deal with this. But for now, for clarity, let’s just manually rename it:

~/dtest $ mv output.000.bin test.clr

What kind of a file is test.clr?

~/dtest $ file test.clr
test.clr: Sun raster image data, 320 x 420, 8-bit, RGB colormap

It’s a “Sun raster image” file. Okay.

If you know something about image formats or web searching, you might be able to figure out that we can now use the “rasttopnm” and “pamtopng” utilities from the Netpbm software. But there is another option. We could use Deark. This time, just as an example, let’s also use the -d option, to print detailed information about the file.

~/dtest $ deark -d test.clr
DEBUG: Input file: test.clr
Module: sunras
DEBUG: header at 0
DEBUG:  dimensions: 320×420
DEBUG:  depth: 8
DEBUG:  image type=1 (standard), len=134400
DEBUG:  map type=1 (EQUAL_RGB), len=768
DEBUG: colormap at 32
DEBUG: image data at 800
Writing output.000.png

Finally, Deark has converted the file to a mainstream format that almost anything can deal with: PNG.

test.clr (as output.000.png)

[Back to main Deark page]