A few days ago I released captlog: The Captain’s Log. It’s a small toy application that serves as a secret diary and, thanks to a bookmarks facility, can also double as a secret notes application. The content of the entries/notes is protected by a single master password.
Under the hood, it uses Python with Tk and PyCrypto, so I think it should work on many platforms. I’ve settled with Python 2 for now, as that’s what my OS provides me.
The tagged version 0.1 has all the basic features I wanted. It’s organized like many other simple apps. The entries are listed on a panel to the left, sorted by date with the most recent ones at the top. When clicking on an entry, the entry contents are displayed on the right, and the entry can be modified and saved.
In that left panel where the entries are listed sorted by date there’s also a bookmarks tab. When an entry is open, you can bookmark it giving it a name. This helps you keeping shortcuts to interesting log entries that you may want to read or modify in the future, with a meaningful name.
Only the entry contents are encrypted. In the GUI, that translates to the text field were the entry content is displayed. Everything else is not encrypted. The encryption relies on AES-256, so it should be pretty safe.
I tried to get Colin Percival to review my use of crypto in the program, but unfortunately he doesn’t speak Python and the devil is in the details, so he naturally refused.
Road for the future
So it’s a very tiny app with only a few hundreds lines of code. As I get some spare time here and there (which may be complicated given that I just bought Borderlands 2 and Dishonored from the Steam Summer Sales — I didn’t have a choice!), I plan to add the following "features".
Support for changing the master password. A small "detail" I didn’t take into account when building the app and didn’t realize was sensible to add once it was finished. Version 0.2 will be released with this.
Support for selecting and remembering the Tk style. Tk styles or themes do not work the same way as in GTK or Qt and are selected on a per-app basis. I’m not a Tk expert as I basically learned the library to create this app. Corrections are welcome. Could be part of 0.2 or 0.3.
Getting someone to review my use of PyCrypto. I tried to learn as much about correctly using crypto as I could, but this is my first app with a central crypto component, so I want to make sure I didn’t screw anything up.
Python 3 support. For this I need to install Python 3 myself, with a parallel installation of PyCrypto too and see what needs to be fixed. I hope not much. Probably import names and a few details here and there. I don’t know when this will be ready.
Build a proper website for the program once version 0.2 or 0.3 is released.