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 up to Fedora 30:
https://archive.fedoraproject.org/pub/fedora/linux/releases/30/Everything/x86_64/os/Packages/r/

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.1 (Published Feb 11th 2020)

  • Switched to Python 3
  • Internal refactoring
  • Minimalistic GUI included by default

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.