Orpheus Based Password Manager
I've been wanting to make this password manager since I found out more than 33 of my saved passwords on Google had been compromised, so I decided to finally work on it in this hackathon.
What it does
Orpheus Password Manager is an USB device that:
- Saves my passwords physically encrypted on the EEPROM of an Arduino.
- Keeps my passwords away from the internet and safe from password breaches.
- Let's me store up to 62 passwords of 16 characters
- Generates random passwords upon request
- Types any of the saved password automatically when unlocked through an app on my phone.
How I built it
I used Hack Clubs Orpheus Leap as the main board. It is a Leonardo based Arduino giving it ability to act as an USB host device, to which I connected a liquid crystal display, a rotary encoder/knob and a Bluetooth module. I coded the Arduino in the Arduino IDE, made a small app in MIT App Inventor to unlock the device over Bluetooth.
Challenges I ran into
At first I was struggling to encrypt the passwords. I was trying to code the encryption algorithm myself based on articles I read on encrypting data. I later found a library called the AESlib and thankfully I was able to encrypt and decrypt the passwords easily with the function provided in the library.
Saving the encrypted passwords to the right EEPROM address was also a challenge. However I got that figured out after playing around with a bunch of for loops and C functions like
Accomplishments I'm proud of
It was my first time working on a hardware project in a hackathon all while being a one man team.
What I learned
I learnt a whole bunch of things even though I was working alone. Some of the new things I learned were:
- How data encryption works, especially AES.
- How to use an Arduino as an USB host device.
- How to save encrypted data on an EEPROM
- Indexing EEPROM addresses.
- Working alone on a hackathon project is not an easy task.
I plan to design a case for this project in Fusion 360 and 3D print it. The app could be improved to let the user add new passwords.