Thursday, April 16, 2009

Arcmexer: a library for reading archive files in Java

A beta version of the Arcmexer library is now available from the Javamex site. Arcmexer is a library that allows you to read the contents of various types of archive file from Java. The idea is that the library could be useful in various data conversion and data recovery operations.

At present, the following are supported:
  • ZIP files, including those with files encrypted with 128-bit AES encryption or the traditional (but insecure) PKZIP encryption scheme. Note that other encryption algorithms (including 256-bit AES) currently aren't supported but may be in the future if I'm told that people need them. (See the page on reading encrypted ZIP files.)
  • Tar files, commonly used on UNIX platforms. Tar files may come directly off a tape drive (usually via the UNIX dd command), or are created on disk via the tar command and used to transport bundles of files.
  • GZIP-compressed tar files, commonly with the ending .tar.gz or .tgz.
Other archive formats are likely to be added to future versions if people nag me about them. (That means, leave a comment on this blog entry asking for it!)

As well as reading files from the archive, a method is provided that can aid in ZIP file password recovery.

Please bear in mind that this should very much be considered a beta version. I've found it the routines it contains useful and thought they could be useful for other people. If you encounter problems, please let me know! Comments can be left on this blog post, or on the site's Java discussion forum.


rrc7cz said...

Thanks for the library. Do you have any plans to open source it?

Neil Coffey said...

In the long run, I may open source it but the truth is I'm not planning to just yet. At the moment, I'm really waiting to see what suggestions people have for improvements in functionality as I still consider this to be a "beta" version. As and when the library is a bit more mature, I may open source it -- it's really for the practical reason of wanting to keep one single version in one place for now rather than any ideological reason.

Anonymous said...

pretty much useless unless you put a license on it. Code wise nice job.

Neil Coffey said...

Re licence: it's basically Freeware-- you accept that it's provided "as is", and you can use it as is for whatever legal purpose you want, commercial or otherwise, so long as you don't distribute it publicly e.g. on another web site, don't try and sell it/pretend you wrote it etc. You are legally responsible for what you do with it: don't try and sue me if you use it to blow up the universe, put your cat in the washing machine etc. The usual sensible stuff. If you want to use it for a particular purpose but aren't sure, then feel free to ask.