Introduction: Password Manager, Typer, Macro, Payload ... All in ONE!
If you are having problem with the making of this device (pcb, soldering or others) feel free to send me a private message here or an email to firstname.lastname@example.org . I'll be happy to send one of the pcbs or devices I already produced! Soon I'll open a gitHub repo for this project! Thank you for your attention, have fun!
Often I need to log in to my mail accounts or to log in to my University profile from a pc that is not mine. I tipically use 10 characters or more password using numbers, symbols, upper and lower case letters. A nightmare to remember and even worse to type in right at first try. And sometimes one of my relatives have problems remembering a password, such as wifi or similar stuff. So I came up with this new idea. PassType (yeah... I like to give names to the stuff I build, this name comes from the contraction of "password type in device") is a very cheap and simple to use password manager, capable of storing more than 250 passwords and to type them in every device! It works with every computer and it can even be plugged and used on smartphones. Every system supporting some sort of keyboard is compatible with PassType.
This device has a small joystick-like 5-way tactile switch as input method. The small OLED display shows a functional and intuitive UI (user interface). All the datas are stored in a 32kb EEPROM. PassType is powered by an arduino Pro Micro.
Pentesters or computer enthusiasts will be happy too because this small device can be used to perform tasks that are boring, repetitive or to type in hundreds of characters in few seconds. Actually it can do everything that a human in 15 minutes can do with mouse and keyboard in only few seconds. In this project I'll use a 32K EEPROM memory, but you can use even a bigger one. See the last step for further development.
Thank you for your attention, let's start this project!
PLEASE NOTE THIS IS A PROTOTYPE, NOT A FINISHED, COMMERCIAL OR FULLY TESTED PRODUCT.
Step 1: Materials and Tools
- Double sided copper clad laminate circuit board (USA | EU)
- Arduino pro micro (USA | EU)
- Display (GLOBAL)
- 5-way tactile switch joystick (USA | EU)
- 24LC256-I/SM (GLOBAL) (try asking for free sample here: http://www.microchip.com/wwwproducts/en/24lc256 )
- SMD (surface-mount device) recicled resistors (free, see later how to get them)
- (optional) micro USB male plug
- soldering iron and solder
- dremmel or a saw
- etching system for pcb ( I used ferric chloride and a permanent marker)
Step 2: From Breadboard Prototype...
First of all you need to test your components.
The easiest way to do that is to plug all the components on a breadboard and to wire them up. The attached file is the Fritzing file describing all the wiring and the schemes of both the bradboard and the pcb version.
In this step there's a bradboard connection diagram to help you douring the first wiring.
Step 3: ... to PCB!
The "PassTypeScheme.fzz" attached file contains all you need to make your own PCB.
Exporting from Fritzing to PCB will generate a lot of pdf files. You will need the "copper top" and "copper bottom mirror" files. Download and print "copper_top" and "copper_bottom_mirror" in real dimension on paper. If you want to use the photoresist method you can skip this phase because you know what you are doing with pcb etching, see you later!
If you want to make a true DIY cheap and (not so) dirty PCB keep reading!
After you have the printed circuit schemes (top and bottom) check out if they match. Cut the extra paper and allign one of them to a corner of the double sided circuit board. Using the dremmel (saw, other tools..) cut a piece of the double sided copper clad laminate board to the right dimension to fit all the circuit. Clean it using dishsoap and a pot scourer.
Place the paper printed copper trace over the clean circuit board and using a hammer mark where you need to drill holes. Do it for both sides of the board and be careful to the allignment of the two faces.
Clean the board using some isopropyl alcohol. Using a permanent marker copy the path you can see in the printed schemes. You need to be very accurate doing so. For the USB connector you can use a real USB stick to guide you in the drawing. Ensure to complete the path at least two times, and be sure the lines are very sharp.
Once the permanent marker line is dry, place your board in a ferric chloride bath. Leave it there for around 20-30 mins. Once the pcb is completely etched remove it from the ferric chloride bath, but be careful not to touch the acid. Use plastic gloves and plastic tools. Wash the PCB with plenty of cold water. Remove the marker lines using isopropyl alcohol.
You have your new pcb almost ready to host all the parts of your PassType!
Step 4: Pre-soldering Parts Preparation
Before starting to solder all the parts you need to remove the plastic spacer of the oled display and both the plastic pins on the bottom of the 5-way tactile switch.
This procedure will allow you to have a more compact and sturdy product!
Step 5: PCB Final Shaping
First of all you need to drill the holes for the wires and the pins. Be careful to drill straigth holes in the pcb.
Using a dremmel or a saw remove all the material from the unused sides of the drawn usb male connector. Test if it fits the usb hub after every small change. Then you will have a tight and snuggly fit, perfect for any device you'll plug your PassType (yeah, I really like this name).
If your board is too thin you can stick some paper under the drawn USB connector to have a tighter fit.
Step 6: PCB Vias
Let's start using the soldering iron!
Vias are the connections between the top and the bottom layer. To enstablish this connection you have to solder a thin wire on a side to the nearest copper path, make it go trough the hole and solder it on the other side. The whole process (4 vias) should only take few minutes.
Step 7: SMD Soldering
SMD soldering is quite difficult, but you can make it really easy with few precautions.
Let's start with the 24LC256. This component has 8 legs and has to be placed as shown in figure. Melt some solder on the small area where the IC (integrated circuit, the 24LC256 in our case) will be soldered. Than place the IC over the cold tin and heat tin puddle that you've just made. The IC is now solded on one side and it won't move. Solder the remaining legs without heating too much the IC.
SMD resistor can be found on old motherboards. You need to scavenge for at least:
- 2 x 10 kΩ smd code: 01C
- other 4 different values ( eg. : 20 kΩ, 47 kΩ, 65 kΩ, 100 kΩ)
You don't have to find exactly the values I used because you can change in the software the analog value corresponding to each direction pressed in the 5-way tactile switch. I'll show you in few step how to do it. SMD values can be hard to read, here is a site where you can easily found the resistor value from its code.
Once you have the resistor needed let's start soldering them to the PCB!
Melt some solder on the pad where the resistor will be placed. Place the resistor near the tin puddle and heat the solder. The solder will melt and connect one side of the resistor. Let it chill and solder the other contact of the resistor. Do the same for all the resistor and your SMD soldering part is finished!
Step 8: Soldering Big Components
Arduino Pro Micro
Place some bradboard-like pins in the holes of the PCB. Solder them straigth to the PCB and let them chill. Place your arduino pro micro right on them and be careful to place it using the right pins. Lower the pro micro as much as you can but be sure not to touch any copper track. You can use some elettrical tape as an insulating layer between your PCB and the arduino pro micro.
Now let's solder the oled display in place! You can use some electrical tape to be sure the oled board won't touch the beneath copper tracks. Place the oled display as shown in figure. Push it all the way down and solder on the bottom side the pins.
Now you can remove the excess lenght of the pins with a pair of pliers.
Once you have done this your PassType is ready! you can start using it from the USB micro port on the pro micro. However I wanted a compact and more accessible system so I wired the micro USB contacts to the drawn USB male contacts. Follow the image to know how to solder the two connectors. If you don't feel comfortable with small components soldering you can use a male micro USB connector and solder the drawn male USB to the wires coming out from the male micro USB.
Step 9: Sketch Uploading
Now that your PassType hardware is ready, you have to upload the software. This project is very flexible and can be used in a moltitude of different scenarios, e.g. :
- macro of any sort
- password memory and typer
- pentesting device
- hardware multiple buttons in one (using the joystick)
- payload device
- keylogger (I have to test it)
- and much more using your creativity!
In this instructable I'll provide you the code for a simple password manager, generator and typer all in one.
First of all you need to find the analog value corresponding to the action performed on the joystick. Upload the analogSwitchValue sketch to your PassType and open the serial port at 9600 baud rate. Start using the joystick and note down the values for each possible action. (you can even consider the center pressed + one direction as a new action and obtain up to 9 different input methods!)
Once you have obtained the analog read value download and open the passTypeSW sketch. Go to the 5-way switch define section. Let's suppose you obtained pressing up on joystick the value of 163. Then you have to edit the uhigh (up action biggest possible value) to 173 and the ulow ( up action smallest possible value) to 153. Do it for all the input you need, in my case up, rigth, down, left and center. Upload the sketch to the arduino pro micro.
//5 way switch ----- MODIFY HERE THE VALUES! #define llow 158 #define lhigh 178 #define ulow 220 #define uhigh 240 #define rlow 500 #define rhigh 520 #define dlow 672 #define dhigh 692 #define clow 293 #define chigh 313
Now you have a fully working PassType: a password manager, creator and typer, small as a key and capable of memorizing more than 250 up to 16 characters long passwords, each using letters in upper and lower case, numbers and symbols!
The logo on the first page of the UI (user interface) was quite a mess to create, however if you want you can customize it and this tool helped me a lot. Developing sketches for this project is very simple, however try to reduce as much as you can the writing operation on the EEPROM to increase its lifespan ( usefull reference here). Feel free to change and customize the software I provided you as you want. Feel free to collaborate!
Step 10: Aesthetic Improvements
Your PassType is now ready for use but the exposed circuit is not the safest and most beautiful thing. I wrapped my prototype in electrical tape and I rounded the edgy corner of the PCB. The finished product is size comparable to a normal key and to a combination lock. However PassType can store a lot of "digital" keys and combinations.
Thanks to the nearest Fablab, I managed to print an enclosure for this project. I attached the file for 3d printing. The file contains both the enclosure parts and two button to place on the mini joystick to keep it more confortable to use.
Step 11: Future Improvements And... Thank You All!
I'd like to open a github repo to store all the possible software tools for this project and to improve the quality of the sketch running on this hardware. I'd like to build a microSD version of my PassType, too. I've already drawn a circuit and PCB layout for the micro SD version using the ATmega32U4 directly on the PCB. Using a micro SD the new PassType will never have memory problem (up to 32 GB) and it will be capable of a lot of new features.
Thank you for reading,
if you liked it please consider voting for this project in the Microcontroller contest,
it would be a great feedback and a big help!
I hope this small instructable can be as entertaing and inspiring as possible,
THANK YOU ALL!!
Second Prize in the
Microcontroller Contest 2017