Relevation Password Printer

a command-line searcher for Revelation Password Manager

New releases will be announced at my main site (see http://outlyer.net/etiq/projects/relevation/), this page and the freshmeat page.

RPMs

I'm not providing RPM packages, however you can find relevation packaged downstream in Fedora's repository, i.e. (not yet up to date as of this writing):
http://archive.fedoraproject.org/pub/fedora/linux/releases/20/Everything/i386/os/Packages/r/ (Fedora 20) or
http://archive.fedoraproject.org/pub/fedora/linux/development/rawhide/i386/os/Packages/r/ (Rawhide)

Starting with 1.2.1, you can also build the RPM yourself. Download the tarball and run the command:

$ rpmbuild -tb relevation-1.2.1.tar.gz

If the buld is successful, the output should look something like:

Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.XXXXXX
+ umask 022
[...]
Wrote: /path/to/RPMS/noarch/relevation-1.2.1-1.pon.noarch.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.XXXXXX
[...]
Where the line in bold includes the location of the resulting RPM.

Description

Relevation is a tool to retrieve passwords stored in a password file in the format used by Revelation, from the command-line instead of through a GUI.

Only retrieval is implemented, Revelation must be used to actually edit the file.

Notes

  • WARNING When storing your password in the configuration file, remember to modify file permissions so that only you can read it.

Configuration file

An optional configuration file ~/.relevation.conf can be used to save the typing of filename and/or password on each run.

It follows an INI-style format:

[relevation]
file=~/mypasses
password=my pass
mode=and

All fields are optional. The [revelation] header is required.
Comment lines can be added by preceding them with a semicolon (';') or hash ('#').
Inline comments can be added by preceding the comment with whitespace and a semicolon (' ;').

Documentation

There's currently no actual documentation but the manual page is available online and a list of usage examples is provided below.

Examples

Here's a few examples of each of the modes of operation.

These examples assume the existence of a configuration file, otherwise the command-line will require filename and password, e.g. $ relevation -f ~/mypasswords.revelation -p mypassword.

All passwords here were generated randomly, no need to try them anywhere :P.

  • No arguments: All entries
  • Search of keywords
  • Search of keywords, entries of a certain type
  • All entries of a certain type
  • Full decrypted XML

· With no arguments, the whole list of entries is dumped:

Relevation v1.0, (c) 2011 Toni Corvera

-------------------------------------------------------------------------------
-> Search all:  201 matches

Type: website
Name: Example 1
Description: 
Url: http://www.example.com/
Username: ex1
Password: zoh3haeH

.
. [entries abridged in this example]
.

Type: website
Name: Example 2
Description: Example site 2, secured
Url: https://2.example.com
Username: ex2
Password: Bootie9p

-------------------------------------------------------------------------------
<- (end of 201 results for {all})

· Search by keyword by adding a string to the command (folders themselves will be skipped but their contents will not):

$ relevation twitter
Relevation v1.0, (c) 2011 Toni Corvera

-> Search "twitter" ('not folder' entries):  1 matches
-------------------------------------------------------------------------------

Type: website
Name: Twitter
Description: 
Url: http://twitter.com/
Username: meeeeee@example.com
Password: ag9thaeP

-------------------------------------------------------------------------------
<- (end of 1 result for {"twitter" ('not folder' entries)})

· Restrict searches to a certain type with the –type option:

$ relevation -t email google.com
Relevation v1.0, (c) 2011 Toni Corvera

-> Search "google.com" ('email' entries):  1 matches
-------------------------------------------------------------------------------

Type: email
Name: Main email address
Description: 
Email: outlyer@gmail.com
Hostname: mail.google.com
Username: guesswhat
Password: edeeKo7m

-------------------------------------------------------------------------------
<- (end of 1 result for {"google.com" ('email' entries)})

· All entries of a certain type will be printed if a type is provided with no string to search for:

$ relevation -t email
Relevation v0.3, (c) 2011 Toni Corvera

-> Search email entries:  2 matches
-------------------------------------------------------------------------------

Type: email
Name: Main email address
Description: 
Email: outlyer@gmail.com
Hostname: mail.google.com
Username: guesswhat
Password: edeeKo7m

-------------------------------------------------------------------------------

Type: email
Name: Example backup email
Description: Just in case
Email: backup@example.com
Hostname: 
Username: backup$example
Password: quoo3Yez

-------------------------------------------------------------------------------
<- (end of 2 results for {email entries})

· The full, decrypted xml can be printed with the –xml option:

$ relevation -x
Relevation v1.0, (c) 2011 Toni Corvera

<?xml version="1.0" encoding="utf-8" ?>
<revelationdata version="0.4.11" dataversion="1">
	.
	.
	.
	<entry type="website">
		<name>some site</name>
		<description>this is some site</description>
		<updated>1255603263</updated>
		<field id="generic-url">http://www.example.com</field>
		<field id="generic-username">myuser</field>
		<field id="generic-password">JaTei7ye</field>
	</entry>
	.
	. [entries abridged in this example]
	.
	<entry type="email">
		<name>my address</name>
		<description>main address</description>
		<updated>1247495779</updated>
		<field id="generic-email">me@example.com</field>
		<field id="generic-hostname">example.com</field>
		<field id="generic-username">meee</field>
		<field id="generic-password">Zuuth3Ai</field>
	</entry>
	.
	.
	.
</revelationdata>

Known issues

None at this point.

There's a bug tracker located at b.outlyer.net. To report a bug use the bug tracker or drop me an e-mail.

Other projects

ChangeLog

1.3 (Published May 24th 2014)

  • Support for the newer data file format (as found in Revelation 0.4.14)
  • Fail gracefully on files in unknown formats
  • Better handling of fields with characters outside of the standard ASCII set

1.2.1 (Published November 5th 2013)

  • Fixes for the minimal GUI (broken in 1.2)
  • Integrated RPM specfile from Fedora Rawhide

1.2 (Published October 21st 2013)

  • BUGFIX: Make case-insensitive search work on uppercase search strings
  • Print notes from entries
  • Allow combining multiple search terms with AND
  • Use getpass when asking for a password to avoid echoing it (suggested by Jorge Gallegos)
  • Explicitly exclude folders when negating types (avoids printing all of their children entries)

1.1 (Published July 13th 2011)

  • Support cryptopy if PyCrypto is not available. Enhances cross-platform support.
  • Print an error message if the decryption produced wrong data (normally caused by a bad password)
  • Add PyCrypto/cryptopy to version info (–version)
  • Windows support enhancements:
    • Minimalistic GUI
    • Py2exe support
    • Packaging scripts
  • Fix $ make uninstall procedure

1.0 (Published June 30th 2011)

  • First public release.
All dates/times in this page are UTC.