This is an old revision of the document!


Password manager

Introduction

A password manager (similar to a physical crypto wallet), that can be interacted with using a remote. The user can save multiple passwords by using the menus of the wallet. On the LCD are displayed the saved passwords and the status. Passwords can be added, deleted and saved to the EEPROM. It is intended to be used with highly sensitive passwords such as banking passwords (card pins, etc) that should never touch the internet.

General description

Hardware Design

Parts list: Arduino UNO R3, Infrared receiver, remote control, Alphanumeric LCD, breadboard, resistor 1k, jumper wires

Software Design

Developed using CLion (+PlatformIO) and Arduino IDE (to upload the code to the Arduino). On boot, the walled displays a seed, that is used in the companion app to retrieve the password. After the password is entered in the wallet, the user can scroll trough the passwords, edit or delete a password or save a new one. After performing edits on the passwords, they can be saved by pressing FOL+ while in ADD_PASSWORD mode (mode 4). This is done in order to prevent too many writes to the EEPROM (after 100000 writes, the EEPROM will become damaged, hence an 'autosave' feature is not provided).

The companion app is a cross-platform app, written in Flutter.

Results

The device works as expected, passwords are saved and retrieved from EEPROM, there seem to be no bugs in the software, neither for the Arduino nor for the companion app.

Conclusions

This was the first project of this type that I've made, it helped me better understand the labs, and how hardware works.

Download

You can find the code for the Arduino here https://github.com/xrusu/ma-lab and for the companion app here https://github.com/xrusu/ma-lab-companion.

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Log

21/04/2022: Project selection

22/04/2022: Wiki page

07/05/2022: Started writing the software

08/05/2022: Code brush-up

09/05/2022: Wiki brush-up

Bibliography/Resources

pm/prj2022/apredescu/111.1652174772.txt.gz · Last modified: 2022/05/10 12:26 by dinu_stefan.rusu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0