Vanish is a research prototype. We are making the source code available below for other researchers to study. The source code below is for our second public release, which includes defenses to vulnerabilities found in our first public release. We welcome further contributions and feedback from the community. Vanish is offered as-is with absolutely no warranty.

Download the Vanish Source Code

The research prototype is distributed in three separate packages, two of which correspond to the Vanish system and the third corresponds to the Vanish Firefox Plugin.

Package Name Description License
Vanish Core Includes all Vanish-specific functionality + an OpenDHT backend Academic
Vuze Vanish Backend Modified version of Vuze storing metadata provided by Vanish Core GPL v.2
Firefox Vanish Plugin Enables users to use Vanish on the Web via Firefox 3.0+ MPL

At a minimum, if you want to play with Vanish, you will need to download the Vanish Core package. You can then choose whether to download the other packages, depending on your goals. For example, if you want to run Vanish with the Vuze backend, you should also download the Vuze Vanish Backend. However, if you intend to run Vanish on top of another backend that you or others have developed, you don't have to download Vuze Vanish Backend. Finally, if you plan to use Vanish with Firefox 3, then you should also either download the code of our Firefox Vanish Plugin.

After downloading the source tarballs, follow the instructions below or the READMEs found in the tarballs to compile, run, and configure Vanish.

Download the Vanish Core

Please review the Vanish License carefully before downloading.

The Vanish core download includes a backend connection to OpenDHT. A list of dependencies for the Vanish core is provided here.

Download the Vuze Vanish Backend

The Vuze Vanish Backend source code is available here under GPL v.2 license (license file included in the tarball). It contains slight modifications made to an older version of Vuze.

A list of dependencies is provided here.

Download the Vanish Firefox Plugin

The Vanish Firefox Plugin source code is available here under MPL license (license file included in the tarball). It can be used with Firefox 3.0+.

Compiling and Running Vanish

Compiling and running Vanish consists of three steps, which are detailed next. As a prerequisite, you must have Java 1.5 or higher installed on your computer.

Step 1: Compiling and Starting the Vanish Core

To compile the Vanish Core, untar the downloaded tarball and cd into the newly created vanish-X directory (where X is the version).

You can compile Vanish by running ant in the root Vanish directory, as shown below. This will create the necessary jars in the dist folder.
   # ant -f build-vanish.xml

The above command will create a jar called vanish-core.jar in the dist directory. For now, just take note of this jar, as you will need it when you compile the Vuze-Vanish backend (Step 2).

Then, you can start Vanish using the following command:

   # bin/start-vanish.sh

NOTE: You're not yet done. Vanish relies on a backend process running on the same machine, to which it talks via RPC. So, if you tried using Vanish right now, it would complain that it can't find any backend. You can use any type of backend for Vanish, but for now there's only one available: the Vuze Vanish Backend. So go ahead and compile and start the Vuze Vanish Backend now (step 2).

Step 2: Compiling and Starting the Vuze Vanish Backend

To compile and start the Vuze Vanish Backend, proceed as follows. Download the Vuze Vanish Backend code and untar it. Then, copy the vanish-core.jar created at Step 1 (you'll find it in the vanish-X/dist directory) into the vuze-vanish-X/lib directory. Finally, position yourself into the vuze-vanish-X directory and run ant like this:
   # ant -f build-vuze-vanish.xml

At this point, you might get an error having to do with Java running out of memory while compiling your code. This is because the Vuze code is pretty large. To solve this problem, simply configure ant to allow the forked JVM to use more memory when compiling. To do that, add to the environment variable ANT_OPTS a JVM option "-Xmx1024m".

After compiling the backend, you can start it using the following command:
   # bin/start-vuze-vanish.sh

As an aside, the order in which you start the Vuze Backend and the Vanish Core doesn't actually matter. The VanishCore will try to contact the backend over and over again until you actually launch it.

NOTE: Do not forget about Step 3 -- waiting for the backend to bootstrap -- before you jump to using Vanish.

Step 3: Waiting for the Vanish Vuze Backend to Boostrap

Before you can start using or testing your Vanish compilation, you should wait for 5-10 minutes. This is because Vuze takes some time to bootstrap and our own optimizations for later-on Vanish performance take some time to configure themselves.

While you are waiting, you can read about how to use our command-line tool. This tool can be used to test your Vanish compilation.

Command-Line Vanish Application

We provide a basic command-line tool that allows you to interact with Vanish. Using it, you can encapsulate and decapsulate files on your computer. Not, however, that original files are not deleted securely, so you should not rely on this application for security. Rather, the tool is more for testing at this point.

To use the file-based tool, proceed as follows:

Stopping Vanish

To stop Vanish and its backend, you run:
   # bin/stop-vanish.sh; bin/stop-vuze-vanish.sh

Again, it doesn't quite matter the order in which you run these, but normally you do them in the above order.

Configuring Vanish

Configuration files in both the Vanish system and the Vanish Vuze Backend system can be found in the conf directory in the respective source directory. All parameters have reasonable default values in Vanish, which can be overriden by editing these files. For each configurable parameter, we provide a short description of its functions in the appropriate configuration file.

Open-Source Dependencies

The Vanish Core relies on several open-source packages, whose links we make available here:

Package License
commons-logging Apache
commons-configuration Apache
commons-httpclient Apache
apache.xmlrpc Apache
log4j Apache

The Vuze Vanish Backend relies on several open-source packages, whose links we make available here:

Package License Modified
Vuze GPL v.2 Yes
commons-logging Apache No
commons-configuration Apache No
apache.xmlrpc Apache No
log4j Apache No

All of the above dependencies have been included in the appropriate tarballs for your convenience.