SingleSimon is a password manager application which, in addition to storing the sensitive login data in the database, also provides the following functionality:
- Auto Retrieving user login data after the user performs a successful login to a website and auto filling that login on the next login attempt.
- Filling the entire web form in just one click by using personal data sets.
- Storing any type of data that usually is put on "Post – it" notes – Passwords, lock combinations, software serial, etc.
The application was developed as my final project in my Computer Science BSc. degree, at the MTA - Israel (Academit Tel-Aviv), under the guidance of Mr. Kirsh Amir.
When I first thought about the idea of password manager tool as my final project, it sounded like a nice idea and since I only knew basic C#, it was a very nice way of acquiring experience, getting familiarized with SQL and working with the DOM environment - especially hooking to Explorer events.
From the start of this project, I tried to comment my code as much as possible, and I hope this would prove helpful for newcomers.
The project took about two and a half semesters.
Using the Code
To try the program as a user, copy the zipped executables to any folder and just run the main EXE file. Help can be found under the Help menu and through each of the help buttons scattered around the application.
Using the source code is very easy - I try to comment most of my code.
The program requires that the .NET Framework 2.0 will be installed, as well as SQL Express Server 2005.
SingleSimon - Main Features
There are many password managers out there. Mine is unique in a couple of ways:
- It is open-source – which means you can use it as is or modify it to your needs or even make it better!
- The fact that it gives you complete control over the process of filling web forms makes it ideal for running in the background of your computer and using it to save time and trouble.
- It has a very cool interface!
Main Code Elements
SingleSimon Main code elements can be separated to the following groups:
- Forms code. Each form contains most of its code.
WebScanLogic code. This handles the detection of fillable forms and user logins.
FillEntireFormHelper code. This code handles the algorithm which fills a webform.
- Shared classes – classes which expose
public methods for general use like the
DataBaseHandler which handles the DB layer, the
MainLogicHandler which exposes general methods.
The idea behind that part is that most key logger programs monitor the user key presses and mouse clicks. In case the user will login to my application in a hostile environment, his login data will be recorded. My idea, which I got from some old pocket PC application, was to give the user the option to select a picture, select 4 points on top of it so that in the next login only the user name is required. After filling the user name, the user will open the password picture and will click over the four pre-selected points. Key loggers can record the clicks but they will be out of context without the picture. Of course, there are ways to overcome it, but this is only an idea.
Of course, in those kind of applications, security is very important. My application is still growing, and for now, it is not secured. The next instalment will include password protected database that will be encrypted in the code. Note - The encryption class is already included in the source code, but it is still not in use.
Since I like to deal with GUI application, nice user interface was a must, so after hours of color matching and icon searching, I came across a website dedicated to free icons - http://downloadpedia.org/Free_Icons_and_Buttons.
Because this is my first article here, I would very much appreciate any feedback, comments, suggestions and of course bug reports. I will also appreciate it if users can report any experience on other system configurations, especially Internet Explorer 8.
In the Next Versions
Future versions of this program will include the following additions:
- Improved WebLogin Detection Engine
- Security and data encryption (Almost finished in this version!)
- Backup / Restore options
- Export to popular formats
- Moving to Access DB in order to reduce size and release the pain of needing SQL Express installed
- Custom Icons for Data Cards
- Tool Tips
- Suggestions from users?
- And last but not least: fewer bugs…
- September 20, 2008 – Created the article,
SingleSimon first Alpha version
- September 30, 2008 - Version 1.1