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

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

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

Picture of 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)
  • 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...

Picture of 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!

Picture of ... 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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!

Picture of 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!!

Comments

SantiNavarro made it! (author)2017-05-13

Hello, Congratulations, the device is very interesting and I use it continuously. I have done it, it is working, I had to make some changes in its programming to correct a malfunction. He was blocked from a dozen entrances. I am in the process of correcting another problem that I have found, it repeats some password keys claves

davidex720 (author)SantiNavarro2017-05-13

thank you a lot for your suppport! i see you have done a version using a perfoboard with copper lines, very intresting!

check the input system on the device: the first one I built had a problem with a malfunctioning joystick switch. It was quite frustrating

thank you again and my best comliments for your project!

SuperSonik made it! (author)2017-03-28

I ended up going with a trackball for my design :)

Still need to figure out a case haha, who knew it would be so hard!

https://hackaday.io/project/3555-zamek-the-offline-pocket-password-manager

Woah you had a PCB made for this? Does it have the DIYduino/ATmega actually on the PCB or is there a Pro Micro soldered to it?

I prototyped the original design using a Pro Micro, but trying to put it all in one case was a headache for me.

I downloaded the schematic for the Pro Micro and created a new schematic with only the parts I actually needed. Then I made my own circuit board to keep the size down to a minimum.

You can get the plans and code here :D https://hackaday.io/project/3555-zamek-the-offline-pocket-password-manager

I signed up for a reminder when you actually start producing these, but I would also like to make my own. However the files section doesn't have anything in it. How do I go about getting the PCB design, BoM, and code? Outstanding work.

I'm testing the final hardware revision and am working on the case right now, the design isn't final yet. I'll be releasing all the pcb files and source code on the same day that I open the crowdsupply :) this will let people make suggestions on how to improve the device and audit it before it actually leaves the factory

davidex720 (author)SuperSonik2017-04-26

when I started this project I didn't know about it, and actually it is fantastic! Passtype is much more a homemade product because it is easier to build, but the battery is a nice feature!

Sylkhr (author)SuperSonik2017-03-30

Unless that's not your real password in the screenshot, you may want to edit that picture.

davidex720 (author)SuperSonik2017-03-28

wow amazing!

didn't know anything about it ahahaha there is some sort of convegence even if I went for the most simple and DIY friendly way and you wnt for the more commercial one, even if both are open hardware and software. I'd love to hear something more from you and to learn more on this topic!

thank you a lot for your support!

(sorry if i spammed your forst comment but I'm quite enthusiast about our prototypes parallel yet unknown development ahaha)

SuperSonik (author)davidex7202017-03-29

sure! feel free to instructable message or email me anytime :) www.soniktech.com is me!

davidex720 (author)SuperSonik2017-03-28

I'd love to hear from you something about the buiilding process, feel free to send me a private message and emails too!

SuperSonik (author)davidex7202017-03-28

The build proces is unfortunately unimpressive: I started using MacroFab for producing prototypes, which frees me from relying on my own terrible soldering habits, and lets me squeeze in all those tiny little jellybeans without worrying about shorting out :)

davidex720 (author)SuperSonik2017-03-28

MacroFab has an incredible offer and it is quite a big problem solving deal for this type of project. surely i'll dig more further on this route.

thank you a lot!

davidex720 (author)SuperSonik2017-03-28

wow

you are amazing!

SuperSonik (author)davidex7202017-03-28

haha, thank you :) many hands and many minds working together will eventually crack this password problem everyone is having!

davidex720 (author)SuperSonik2017-03-28

ahahahaha actually same is the same idea I had

I'd be glad to hear something from you, please send me a private message or a mail.

thank you again for your time and feel free to add everything you think could be helpful

thank you again!

SoLongSidekick (author)2017-04-24

Just out of curiousity why didn't you use an Adafruit 5v trinket for this?

actually there are some reasons:

-oled needs 3.3V (works at 5v too but it is risky), so the real question is "why not using a 3.3 trinket?"

-"ATtiny85 on-board, 8K of flash, 512 byte of SRAM, 512 bytes of EEPROM" not even close to the specs I need for all the libraries needed (eeprom, oled, ecnrypt, keyboard,...)

-don't have one of them, but I had a lot of pro micro in my house

-number of pins is too low

Thank you for your question, hope my answer is as positive and costructive as possible.

If you like this project vote for it in the contest, thank you again!

Yeah I'm definitely voting for this. Awesome idea man. So why didn't you take the extra steps of just adding a DIYduino to the PCB instead of soldering a Pro Micro to the top of it? Are there not designs available for Pro Micro DIY boards?

actually we had a very similar idea! if you read the last step you will see I'm working right now to a prototype wit an atmega32u4 on the pcb. The idea behind this small isntructable is to share a simple yet usefull prototype everybody can make at home! I already helped a couple of very nice guys with the pcb etching and I can't be more happy about it.

But you are right, a pcb with a diy arduino or similar is something better than a soldered pro micro. Right now I'm working to version 2 of this prototype and it is quite hard to find tools and resources. But it is an incredibly instructive process!

thank you for your support and your comment, feel free to send me a private message if you desire to build you own device modifing the project you find here. I'd love to see the ending result!

thank you again!

Yeah I saw that but I think the 32u4 is a bit overkill, why not just use the ATmega328?

I invite you to donwload and compile for both arduino uno and pro micro the sketch I provided in this instructable. You wil see how the 32u4 is not overkill at all. Imagine adding encripting and maybe a more complex usb library and you can easilly undersstand how programm memory in both atmegas (actually the same:32k) is not enaugh for customization. For this prototype all the libraries perfectly fit in 32u4 program memory leaving enaugh space for customization. Using a 328, without the integrated usb, would have been much more restrictive in user possibilities.

Between the two the 32u4 is better because it has an integrated USB, so it can be easier to use and give more options as a USB device. Right now I'm developing version 2 and I decided to leave behind the idea of using the 32u4, 328 or similar. Finding the needed resources is not so easy, but I'm keeping it up for now.

I'll soon update this intructable with the steps I made developing version 2

thank you for you support

HMS Teddy (author)2017-04-07

You could use a 433 megahertz rf module to do remote password storage, since the epprom passwords could be compramised.

davidex720 (author)HMS Teddy2017-04-07

not sure about how does the remote password storage work. feel free to send me a private message ;)

HMS Teddy (author)davidex7202017-04-07

https://www.google.com/imgres?imgurl=http%3A%2F%2Fimg.dxcdn.com%2Fproductimages%2Fsku_220194_1.jpg&imgrefurl=http%3A%2F%2Fwww.dx.com%2Fp%2F433mhz-rf-transmitter-module-receiver-module-link-kit-for-arduino-arm-mcu-wl-green-220194&docid=RjCpC3gIUObG1M&tbnid=kaJ7T09VbhjKoM%3A&vet=10ahUKEwiEk5736pLTAhUN02MKHQnXBssQMwiAASgCMAI..i&w=600&h=600&bih=974&biw=1920&q=433mhz%20transmitter%5D&ved=0ahUKEwiEk5736pLTAhUN02MKHQnXBssQMwiAASgCMAI&iact=mrc&uact=8

Use these to send the data. Use the library to turn the letters into numbers and transmit them. You could also use a variable, It's possible,I've done it before.

davidex720 (author)HMS Teddy2017-04-10

Nice! very nice idea!

Arduineer (author)2017-04-10

So this device can only safe numbers and later and not characteristics like "!" ?

davidex720 (author)Arduineer2017-04-10

Hi! It can save bytes, and use the asccii table... so it can save numbers, letters, symbols and even things like spacebar or similar. If you have some doubt feel free to send me a private message, or go to this link

https://en.wikipedia.org/wiki/ASCII

for more information about ASCII.

thank you for your support! consider voting for this project too

HMS Teddy (author)2017-04-07

very cool!

davidex720 (author)HMS Teddy2017-04-07

thank you a lot for your support!

consider voting for this project

and thank you again

Overlord7987 (author)2017-04-06

Hey,

I have this module lying around and I am fairly sure it would allow me to ignore the smd soldering section of this project at the cost of being slightly larger and having to revise the PCB design myself, but I wanted to get your input as to whether or not this is actually true.

Thanks for the great instructable btw!

http://www.ebay.ie/itm/222048915659?_trksid=p20578...

davidex720 (author)Overlord79872017-04-06

hi!

i had thir breadboard too! but i desoldered the 5 way switch from the board.

the circuit on the board is meant to be used for digital input, in this project we are using anallig input. you need to link every pin out fron that bradboard to some pins of the arduino pro micro! it can be quite difficulto to trace a board by hand with more than 5-6 track on a side

WilliamJ5 (author)2017-03-29

In my country, PCB Etching chemical is controlled product, as normal person, can't buy. what is the alternative?

lrd (author)WilliamJ52017-03-31

You can try this: https://lowpowerlab.com/2012/12/15/cheap-pcb-etching-with-vinegar/

davidex720 (author)WilliamJ52017-03-29

mhhh ok I understand the problem you have.

it is quite diifficult but you can reproduce my project using wires and a cardboard base. You could use some sort of cardboard, place the components and wire them using thin wire and a soldering iron. Be carefull to no burn the cardboard.

You can use the breadboard prototype I provided you in this instructable, but it will result in a bullky and quite big prototype.

You could use some sort of homemade etching solvant, try this link:

https://www.instructables.com/id/Is-the-best-PCB-e...

thank you for your support and commenst, consider voting and sharing this project ;)

Biff_T (author)2017-03-30

Nice project. Been using online password managers for a long time, but dont always trust the security, even if they may use two-factor.
You got my vote :-)

davidex720 (author)Biff_T2017-03-30

thank you a lot for your feedback!

surely we needd to improve this prototype and all the good vibes in this comment section are moving us forward!

kartsims (author)2017-03-30

Voted.

Start a Kickstarter, really.

davidex720 (author)kartsims2017-03-30

thank you a lot for your very kind words!

I'm working right now with a fantastic guy I met here on this comment section! hope our work will cover all the problem of this first prototype!

thank you again!

pacheco.lourenco (author)2017-03-29

Very nice project - just voted!

I recommend data encryption and if possible (some sort of) U2F functionality.

Also, a password, pin OR - maybe simpler, since your using a joystick - some swipe pattern (like: UP, UP, DOWN, LEFT, RIGHT, DOWN) to unlock it. This should be easy. Maybe also a FULL ERASE feature after some wrong swipes entered.

totally agree with you with the need of ecnryption for further security, even if your pocket should be the safest place on earth it is a wise idea to add it.

I'm working on it right now ;)

thank you a lot for your support!

Ain't much about where you place it (your pocket) - it is more when you misplace it (lose it)!

That's why the password (swipe code) for accessing it should be the first line of defense and then the encryption (for savvy users that bypass the password)

yeah working on encryption right now!

thank you again for you support and for your useful advices ;)

deluges (author)2017-03-29

Wow. Well thought, you got my vote.

davidex720 (author)deluges2017-03-29

Thank you a lot for your support!

BramS3 (author)2017-03-28

Very cool - I don't normally comment but this seems exceptional - I will build one as soon as the parts come!

davidex720 (author)BramS32017-03-29

Thank you a lot!

if you need some help in the building process feel free to write me a private message, and please uploadd here your final result, it should be awesome to see some more verssion of PassType!
thank you again andd consider voting and sharing this project ;)

ia42 (author)2017-03-28

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.

redrooster (author)ia422017-03-28

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

About This Instructable

79,613views

701favorites

License:

More by davidex720:Dudecopter 2 the RevengePassword Manager, Typer, Macro, Payload ... All in ONE!Dudecopter Or... BATCOPTER!
Add instructable to: