The Need
I have so many passwords and login credentials I need to type in multiple times a day. There has got to be a secure and easy way to have them at my command when I need them.
What about password keepers?
I know a lot of people like programs that keep track of your login information, but I don’t trust them.
The Trigger
I was looking in my parts box for something and saw a remote control I had picked up for another project but didn’t end up using it…hmmmm….
The genie going into the bottle
Project:
Password Prescription
What it does.
The tiny little circuit board has some amazing logic on it, and when you plug it into a USB cable, then plug the USB cable into your computer it tells the computer that it is a keyboard.
The other little circuit is an infrared receiver. Which sends any IR signals to the main board for processing. If you look at the picture above you see the finished product including the IR transmitter remote.
“Pressing a key on the remote triggers the program to send either a login or a password as if I typed it on the actual keyboard.”
- The main circuit is a SparkFun Pro Micro board
https://www.sparkfun.com/products/12587
- The IR circuit is not available any longer but this kit would work.
https://www.sparkfun.com/products/14677
- For a case I used an old prescription bottle from CVS.
- Lastly I used the following Arduino code.
//www.elegoo.com //2016.12.9 //--------------- //Modified 2020.03.17 #include "IRremote.h" #include "Keyboard.h" int receiver = 16; // Signal Pin of IR receiver to Arduino Digital Pin 16 /*-----( Declare objects )-----*/ IRrecv irrecv(receiver); // create instance of 'irrecv' decode_results results; // create instance of 'decode_results' /*-----( Function )-----*/ void translateIR() // takes action based on IR code received // describing Remote IR codes { switch(results.value) { case 0xFFA25D: Serial.println("POWER"); break; case 0xFFE21D: Keyboard.println("XX"); break; //FUNC/STOP") case 0xFF629D: Serial.println("VOL+"); break; case 0xFF22DD: Serial.println("FAST BACK"); break; case 0xFF02FD: Serial.println("PAUSE"); break; case 0xFFC23D: Serial.println("FAST FORWARD"); break; case 0xFFE01F: Serial.println("DOWN"); break; case 0xFFA857: Serial.println("VOL-"); break; case 0xFF906F: Serial.println("UP"); break; case 0xFF9867: Keyboard.print("Your Password"); break; // EQ case 0xFFB04F: Keyboard.println("?"); break; //rept case 0xFF6897: Keyboard.println("Root"); break; //0 case 0xFF30CF: Serial.println("1"); break; case 0xFF18E7: Serial.println("2"); break; case 0xFF7A85: Serial.println("3"); break; case 0xFF10EF: Serial.println("4"); break; case 0xFF38C7: Keyboard.print("www.google.com"); break; //5 case 0xFF5AA5: Serial.println("6"); break; case 0xFF42BD: Keyboard.print("toor"); break; //7 case 0xFF4AB5: Serial.println("8"); break; case 0xFF52AD: Serial.println("9"); break; case 0xFFFFFFFF: Serial.println(" REPEAT");break; default: Serial.println(" other button : "); Serial.println(results.value); }// End Case delay(500); // Do not get immediate repeat } //END translateIR void setup() /*----( SETUP: RUNS ONCE )----*/ { Serial.begin(9600); Serial.println("IR Receiver Button Decode"); irrecv.enableIRIn(); // Start the receiver }/*--(end setup )---*/ void loop() /*----( LOOP: RUNS CONSTANTLY )----*/ { if (irrecv.decode(&results)) // have we received an IR signal? { translateIR(); irrecv.resume(); // receive the next value } }/* --(end main loop )-- */
- The text in Blue is translated and sent as keystrokes.
- I keep the file on my home computer and update passwords as needed. I then keep a little cheat sheet in my wallet of what the buttons mean.