Introduction: Lynx (Offline Password Keeper)

Check out Version 2 at : https://www.instructables.com/id/Password-Keeper/

Meet Lynx, my offline password keeper. Lynx generates it's own passwords using an entropy library. This ensures that sufficiently strong passwords are created. You control lynx through it's touch screen. In this version there are five password slots; but that is only a software limitation.

All the password data is stored on an internal SD card. The passwords are encrypted using XOR encryption and uses three separate keys. As an added level of protection, lynx wont allow you to view or change a password, without the correct rfid card present.

If you would like to change your password, lynx will generate a new password and overwrite the existing one.

Lynx doesn't store any account information; I also don't label any of the password entries. This was intentional because it acts as a another level of protection. Although if you wanted to change the buttons to display other text you can.

Lynx is powered by a lithium polymer battery and has a charger built in. The device requires a power booster circuit that increases the 3.3 volts from the battery to 5 volts. There are always more features I would like to add but the project is far enough along to share the code and build details.

The motivation for this project came from the, "mooltipass", project on hackaday.com. The "mooltipass" is a community created offline password keeper; and in my opinion is looking really great so far. It seemed like a good project to undertake; so I got to work trying to implement my own design.

Step 1: Gather Materials

All the materials with shipping should cost around $220.00. But if that number doesn't scare you; below is an itemized list.

Part 1:  2.8'' TFT Touch Shield V2.0
Web URL: http://www.seeedstudio.com/depot/28-TFT-Touch-Shield-V20-p-1286.html?cPath=34_36
Price: $54.90

Part 2: Arduino Pro 328 - 5V/16MHz
Web URL: https://www.sparkfun.com/products/10915
Price: $14.95

Part 3: USB LiPoly Charger - Single Cell
Web URL: https://www.sparkfun.com/products/10161
Price: $14.95

Part 4: LiPower - Boost Converter
Web URL: https://www.sparkfun.com/products/10255
Price: $14.95

Part 5: Polymer Lithium Ion Battery - 2000mAh
Web URL: https://www.sparkfun.com/products/8483
Price: $16.95

Part 6: RFID Card Reader - Serial
Web URL: http://www.parallax.com/product/28140
Price: $44.99

Part 7: FTDI Basic Breakout - 3.3V
Web URL: https://www.sparkfun.com/products/9873
Price: $14.95

Part 7: Plastic Enclosure box
Web URL:  http://www.frys.com/search?search_type=regular&sqxts=1&cat=&query_string=1669338
Price: $6.99

Part 8: 3/4" Double-Sided Foam Tape
Web URL: http://www.radioshack.com/product/index.jsp?productId=2103341
Price: $2.99

The other things you will need are : Black electrical tape, Dremel, Calibers or Ruler & eye protection.

Step 2: Step 1: Get Arduino Ready

To begin with, go ahead and remove the battery connector from the Arduino. Next you will want to solder one wire to "+" and another to"-".  These two connections are located to the right of the switch.  Unfortunately this picture was taken before I attached my power wires. You will also want to label your wires because when we start to install things it makes life so much easier.

I am using version 1.0.1 of the Arduino IDE and would suggest getting the same version; that way the libraries will be compatible.  You will want to go ahead and download the source code and libraries for the project from github.  You will want to copy the libraries from the zip file into your library folder for your IDE.

The program & libraries are available at the following link:
https://github.com/davidhend/Lynx

Now that this is done; it's time to program the Arduino. Connect the FTDI programming board to the Arduino, then plug it into your computer.  Set the board to, "Arduino Pro 5v,16MHZ" and select the following programmer, "AVR ISP V2".  Next select the correct com port then click upload.  If the upload completes this step is done; otherwise make sure you have the correct selections.

Step 3: Step 2: Attach LCD and RFID Wires

Now we can connect the Arduino to the LCD; at the same time we will also attach 4 wires for the RFID. Attaching the LCD couldn't be more straight forward; the pins are essentially keyed and cannot be installed wrong.

The four wires connect to the following pins on the Arduino, D9, RX, 5V, GND. You will want to use stranded wire that is flexible and easy to work with. Once again, you will want to label these wires for easy installation later. Also the RFID reader connects to the RX pin on the arduino; you cannot upload sketches with this wire attached.  I used jumper wires that allow me to unplug the connection in case I need to make software changes.

Pin Diagram:

Arduino      RFID Reader

D9 ---------- /ENABLE
RX ---------- SOUT
GND -------- GND
5V ----------- VCC

After you have finished soldering all the connections go ahead and connect the RFID reader.  I would suggest using another arduino or 5v power source to power the unit; it is good to make sure everything works before you start your build.

Step 4: Step 3: Prepare the Case

You will want to start by measuring the screen, then using your dremel cut an opening in the top of the case.  You will also have to shave off any obstructions inside the case that block the screen from becoming flush with the top. 

Go slow and take off little bits at a time; you can always take off more but you cannot add any.  You will also want to wear eye protection & gloves while dremeling.  



Step 5: Step 4: Attach the LCD & Microprocessor

Now that you can fit the screen correctly, you will want to glue it in place with a hot glue gun.  A little will do and you don't want to over do it; use the pictures as a reference. 

The tape you see is one of two pieces that hold that battery in place. You can install them now or in the next step; it is totally up to you.

I also have the wires ran to the RFID reader and is ready for install after the battery.  I curl up the wires and place them between the LCD & Arduino to make side panel fit right.

Step 6: Step 5: Install Battery & Attach RFID

Go ahead and and tape the battery in place, so it doesn't rattle around.  Afterward, you will screw the RFID card reader into the screw holes for the back portion of the case.  This will mean that the back plate wont be able to be attached as is; you will have to sand down the back plate for it to fit correctly.

You will also have to press the sides in slightly as you attach the RFID reader. The back plate is held on by black electrical tape; this might not be ideal for you.  If that is the case, you can change the type of enclosure you use.

Step 7: Step 6: Setup Power System

The battery connects to the charging board, two wires then run from the output of the charging board to the input of the power booster.  A switch goes between the positive wire running between the charger & power booster. The ground connection goes straight in between the charging board and power booster.

A picture is provided as reference; sometimes it is easier with a picture to visualize the connections.

Step 8: Step 7: Install Power System

I used four small pieces of double sided foam tape to attach the charger & booster inside the case.  I also put some electrical tape on top of the LCD protecting it from the charger & booster.  You will want to make sure that everything is pushed far enough back to fit the side plates. 

Step 9: Step 8: Drill Holes for Charging Port & Switch

You will want to have an opening for the charging port and switch to power the unit on & off.  I used a combination of a drill & dremel to make my openings.  I glued the sides of the switch to the plastic side plate to hold it in place.  I didn't glue the charging port so the unit can still be disassembled; it's nice to build things that come apart if you need them to.

Step 10: Final Step: Install Side & Back Plates

I had to grind down the sides on the back plate and all of the screw receptacles.  In the beginning I wanted something that screwed apart; but because I ran out of space I had to improvise.   I used electrical tape to hold the rear plate in place and seems to hold up quite well.