otproxy: a one-time-pad encrypting AIM proxy

otproxy (also known as imotproxy) is the new encrypting proxy that uses IMOTP/Py to encrypt and decrypt outgoing and incoming messages to users using the same program. Written in the cross-platform Python language, otproxy obsoletes otpRaim (a C encrypting AIM proxy). Supported platforms are Windows, Unix, and Mac.

Setting up otproxy.py

Make sure you have a correct imotp.cfg. Run otproxy.py with:

python otproxy.py

Change your AIM preferences to connect to localhost instead of login.oscar.aol.com. On the Windows client, this can be found under My AIM -> Edit Options -> Edit Preferences -> Sign On/Off -> Connection -> Host. Leave the port as 5190. Do not check "Connect using a proxy". In iChat, TODO. In GAIM, go to your account preferences (you'll have to change it for every account you wish to talk through otproxy with).

You should now be able to connect to AIM through the otproxy, and the otproxy will scroll messages as you login.

Encryption between users is off by default. It will be turned on while typing (if you have typing notifications on in AIM--this is the default) if the other user is running otproxy. You can manually turn on/off encryption using .on and .off commands in AIM, or use the GUI below.

Using The GUI

Run the GUI with: python gui.py. You can have multiple GUIs open simultaneously.

The interface requires some explaining. Quit obviously closes the GUI. This will not close otproxy.

The Status menu is more interesting. You can tear it off to be continually reminded of the otproxy status. The first entry is the GUI status--it will have the otproxy version if successfully connected. You can disconnect from the proxy by clicking the menu. Note that this will only disconnect from the otproxy, not disconnect the otproxy clients.

Any AIM users connected through the otproxy will be shown, with their screen names, if known. You can click their entries to disconnect them as well, but most clients will usually reconnect, so this is of little use.

The main area of the GUI is filled with a list of information about the users you can talk securely with. The padlock icon, labelled Sec, is broken and red if we are sending cleartext (non-encrypted) messages to the user, or locked and green if you want to send encrypted messages. Simply click the icon to toggle between secure and insecure. otproxy will never change the security from secure to insecure unless you explicitedly do it, but will automatically change from insecure to secure if otproxy is detected in the remote user.

The "Ver" icon is a red X if the remote user is unverified, a green checkmark if verified. A verified user has otproxy running and enabled (the padlock icon on their computer is locked). Receiving an encrypted message will verify the user, as will receiving an otproxy-tagged typing notification. So basically, the "Sec" icon is whether we have encryption enabled, and "Ver" is whether we think they do.

Beside the padlock and X/check toggles, is two progress bars. These represent the usage of the send (blue, first) and receive (green, second) pad. Imposed on the bar is, in order, the current pad location, the percentage of pad used, and the total pad length. You can left-click the progress bar to find out its name, or right-click to open its containing folder.