Password Manager, Typer, Macro, Payload ... All in ONE!

92,225

806

117

ATTENTION PLEASE:


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 davidex720@gmail.com . 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

PARTS:

  • 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)
  • wires
  • pins
  • (optional) micro USB male plug

TOOLS:

  • soldering iron and solder
  • dremmel or a saw
  • etching system for pcb ( I used ferric chloride and a permanent marker)
  • tape

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.

24LC256

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 resistors

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.

OLED Display

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.

USB

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!

Future development

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,

and again...

THANK YOU ALL!!

Microcontroller Contest 2017

Second Prize in the
Microcontroller Contest 2017

3 People Made This Project!

Recommendations

  • Make it Glow Contest 2018

    Make it Glow Contest 2018
  • First Time Author

    First Time Author
  • Toys Contest

    Toys Contest

117 Discussions

0
None
D6equj5

10 months ago

I am making this gadgit with the circuit board you sent however I am having trouble finding the correct "Keyboard.h" library to use - could you please point me in the right direction.

Also your instructions show wires linking the usb on the circuit board and on the arduino micro - is this still necessary with the pre-made circuit board - your instructions do not say.
Thank you
D6

1 reply
0
None
D6equj5D6equj5

Reply 9 months ago

If you're not going to support your latest circuit board could you at the very least provide a circuit diagram of the "PassType Shield 0.1"? So I can create my own code for it's use. Thankyou.

0
None
D6equj5

Question 10 months ago

Hi, I have your passtype shield 0.1 is there different sketch for this? Do all the contacts on the 5 way switch still get read by the A3 pin? How does it differentiate between the positions without the resistors? I have it assembles several times now and taken apart and then reassembled but I am still having problems. If you can not help please let me know.
D6

passtype5.jpg
0
None
D6equj5

10 months ago

Board received, thank you.
I will assemble it tomorrow and post an image.
Thanks
D6

0
None
CalasaurusR

11 months ago

I don't know if I would be able to make one would I just be able to buy one that you have already made? that would be really helpful!

1 reply
0
None
davidex720CalasaurusR

Reply 11 months ago

yeah you totally can!
just send me an email at davidex720@gmail.com
i'm working at big things for this project!

0
None
ThomasK19

11 months ago

Wow, cool. I loose that device and the finder (/thief) has access to all my passwords. Wouldn't it be easier to publish the passwords somewhere so you can access them? Preferably not encrypted :-/

1 reply
0
None
charlessenf-gmThomasK19

Reply 11 months ago

Why not store the Pordtypin password in the cloud? Then design the Pordtypin SW to wait for that input before unlocking itself?

0
None
Raphango

11 months ago

Awesome! Gotta try it someday =)

0
None
ia42

1 year ago

Sorry to say, this is not secure enough for me and I can't recommend it. as people suggested, if the stick is lost you have to quickly change 250 passwords...

also, if you are at a computer you don't know, a keylogger trojan will see the cleartext password anyway. the only REAL solution is some sort of OTP (Like TOTP such as Google Authenticator) or the new U2F standard (look up "u2f key" on your favorite search engine, Yubico seems to be a pack leader in features and design but there are a few others).

However it's a cute gadget and I'd love to study the code behind it, I just can't recommend it as a real security measure. It's the equivalent of keeping a little notebook of cleartext passwords on your keychain, with all the physical OpSec risks involved.

8 replies
0
None
MakersBoxia42

Reply 11 months ago

https://pbs.twimg.com/media/DSWxTWEVwAEZG7q.jpg:large

0
None
redroosteria42

Reply 1 year ago

This wasnt meant to be a fully fledged commercial product. Its the idea thats important here so its got my vote,no worries.

0
None
davidex720redrooster

Reply 1 year ago

You fully understand the purpouse of this project!

thank you for your support here, it means a lot for me!

0
None
davidex720ia42

Reply 1 year ago

it is meant to be a cute little gadget at this point, nothing more

I'd love to hear something more about this project from you. I'm a student and maybe we can work togheter to make this little idea something more intresting and secure.

hope to hear from you soon ;)

0
None
kmpresdavidex720

Reply 1 year ago

This device is just as secure as your pocket - the same pocket that holds your car keys or your house keys - so it is plenty secure as long as you don't lose it AND your computer at the same time. Just be careful what you put on it so that if someone finds it, all he has is your passwords and not your name or log in IDs. That said, you should still be able to put in a hidden switch, or some kind of pre-code in the software that only you know, and that you must enter before it will release any of your passwords. Not quite as safe as encryption, but better than nothing, and you can still keep the thing locked safely away in your pocket.

0
None
davidex720kmpres

Reply 1 year ago

you fully understand my point!

I know there are a lot of things to make this little project something of daily use, but I'm here to learn all I possibly can!

Surely encryption and PIN ( or boimetric) are the two most important features I want to add.

thank you again for you support!

0
None
ia42davidex720

Reply 1 year ago

OK, I'll focus my feedback - the hardware is a very cool idea, it's just the firmware that may need a rethinking so it's not easily spilling any beans.

I'd love to try and collect the needed hardware and try to play with that myself. it's a big sale day on Ali Express, so I'll start there :)

0
None
davidex720ia42

Reply 1 year ago

Thank you a lot!

I'm happy to hear we understood each other in the end.

Actually I'll colect some parts from aliexpress too today ahahaha

0
None
MaxK81

1 year ago

I am trying to build a similar device. How does the user add passwords to the system?

1 reply
0
None
davidex720MaxK81

Reply 1 year ago

hi!

in the sw I provided the user only generate random psw. you can change the code to make the user input a password, maybe using a scrolling selection interface