Password Typer Using Arduino

Download as pdf or txt
Download as pdf or txt
You are on page 1of 25

SRI KRISHNA COLLEGE OF ENGINEERING AND TECHNOLOGY

(An Autonomous Institution)


(Approved by AICTE and Affiliated to Anna University, Chennai)
ACCREDITED BY NAAC WITH A GRADE

BONAFIDE CERTIFICATE

Certified that this project report PASSWORD TYPER FOR SECURE LOGIN

is the bona fide work of VASANTH .M.S, RAGESH .R.V, MUHAMED

MUSTHAFA .M who carried out the project work under my supervision.

SIGNATURE SIGNATURE

Dr. S. Sophia, Ms. G. Renugadevi,


HEAD OF THE DEPARTMENT ASSISTANT PROFESSOR
Department of Electronics and Department of Electronics and
Communication Engineering. Communication Engineering.
Sri Krishna College of Engg.,&Tech. Sri Krishna college of Engg.,&Tech

This project report submitted for the Autonomous Project Viva-voce examination
held on____________

INTERNAL EXAMINER EXTERNAL EXAMINER

Page | 1
TABLE OF CONTENTS

CHAPTER NO. TITLE PAGE NO.

ABSTRACT 4

1. INTRODUCTION

1.1 About the project

1.2 Description of the block diagram 5-8

1.3 Circuit diagram

1.4 Explaination of the circuits

2. DESCRIPTION OF THE HARDWARE COMPONENTS

2.1 List of the components 9 - 16

2.2 Components description

3. DESCRIPTION OF THE SOFTWARE COMPONENTS

3.1 About the compiler 17 - 20

3.2 Source code

Page | 2
4. APPLICATION 21

5. CONCLUSION 23

6. REFERENCE 24

Page | 3
ABSTRACT :

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 typically 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 wi-fi or similar stuff. So I came up with this new idea.
Password Typer 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 Password Typer.

Page | 4
1. INTRODUCTION

1.1 ABOUT THE PROJECT


In today's world, everything is
online, and everything needs a password for security. Some people use
the same passwords over and over again, but this is unsafe. Some people
make several different passwords and constantly forget them. Some
people let their browser remember them.

The following is an Arduino based solution which also involves


computer-side software. With the press of a button, the pre-programmed
text string will be typed out wherever your cursor is.

This allows you to store a very secure password, and never have a need to
remember it.

Alternatively, you could store all of your passwords on this device and
use it as a quick reference that safely stores your critical information
offline and off your computer. Completely unavailable to hackers and
other less than reputable individuals..

Page | 5
1.2 DESCRIPTION OF THE BLOCK DIAGRAM

THE
PERSONAL
COMPUTER

ATMEGA 328
MICROCONTROLLER
UNIT

PUSH BUTTON

PASSWORD TYPER:

This is an device that runs in any windows installed personal


computer.
The microcontroller unit used here is an pre-developed Arduino
nano board with the atmega 328 microcontroller.
The device types the passwords when ever the push buttons are
actuated.
The login credintials are not needed to be typed any more in your
personal computer.

Page | 6
1.3 CIRCUIT DIAGRAM

Page | 7
1.4 EXPLAINATION OF CIRCUITS

This circuit does not have much explainations as the circuit is much
simple and complex less in understanding as you can see the schematics
present above which I have made.
This circuit actually makes sense of our basic micro controller logic that
is the push button actuation the pin d4 (ie., the digital i/o pin in the micro
controller) doesnt have any signals during normal state after it gets
programmed except the password string.
The password string is not present in the pin d4 actually but at the register
which belongs to the digital i/o pin d4.
When the connections are given as per the circuit diagram normally the
digital i/o pin d4 gets the power signal of five volts and the pin is naturally
at high state.
Whenever the push button gets actuated the digital i/o pin d4 will reach
the state low from the state high , as per the logic which has been
programmed the microcontroller now types the password when is receives
the low signal.
And as the result of the logic programmed the password is typed , the
password string is programmed in the microcontroller with the help of the
compiler.

Page | 8
2. DESCRIPTION OF THE HARDWARE COMPONENTS

2.1 LIST OF THE COMPONENTS

1.Pesonal computer (Running windows)

2.Arduino (NANO)

3.Push button

4. 330 ohm resistor

5.Usb cable

6. Dot board

7. Female headers

Page | 9
2.2 COMPONENTS DESCRIPTION

2.2.1. ARDUINO NANO

The Arduino Nano is a small, complete, and breadboard-friendly board


based on the ATmega328 (Arduino Nano 3.x). It has more or less the same
functionality of the Arduino Duemilanove, but in a different package. It
lacks only a DC power jack, and works with a Mini-B USB cable instead
of a standard one.
Power:
The Arduino Nano can be powered via the Mini-B USB connection, 6-
20V unregulated external power supply (pin 30), or 5V regulated external
power supply (pin 27). The power source is automatically selected to the
highest voltage source.

Memory:
The ATmega328 has 32 KB, (also with 2 KB used for the bootloader. The
ATmega328 has 2 KB of SRAM and 1 KB of EEPROM.

Page | 10
Input and Output:

Each of the 14 digital pins on the Nano can be used as an input or output,
using pinMode(), digitalWrite(), and digitalRead() functions. They
operate at 5 volts. Each pin can provide or receive a maximum of 40 mA
and has an internal pull-up resistor (disconnected by default) of 20-50
kOhms. In addition, some pins have specialized functions:

Serial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL
serial data. These pins are connected to the corresponding pins of the
FTDI USB-to-TTL Serial chip.
External Interrupts: 2 and 3. These pins can be configured to trigger an
interrupt on a low value, a rising or falling edge, or a change in value. See
the attachInterrupt() function for details.
PWM: 3, 5, 6, 9, 10, and 11. Provide 8-bit PWM output with the
analogWrite() function.
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). These pins support SPI
communication, which, although provided by the underlying hardware, is
not currently included in the Arduino language.
LED: 13. There is a built-in LED connected to digital pin 13. When the
pin is HIGH value, the LED is on, when the pin is LOW, it's off.

The Nano has 8 analog inputs, each of which provide 10 bits of resolution
(i.e. 1024 different values). By default they measure from ground to 5
volts, though is it possible to change the upper end of their range using
the analogReference() function. Analog pins 6 and 7 cannot be used as
digital pins. Additionally, some pins have specialized functionality:

I2C: A4 (SDA) and A5 (SCL). Support I2C (TWI) communication using


the Wire library (documentation on the Wiring website).

Page | 11
There are a couple of other pins on the board:

AREF. Reference voltage for the analog inputs. Used with


analogReference().
Reset. Bring this line LOW to reset the microcontroller. Typically used to
add a reset button to shields which block the one on the board.

Communication:

The Arduino Nano has a number of facilities for communicating with a


computer, another Arduino, or other microcontrollers. The ATmega328
provide UART TTL (5V) serial communication, which is available on
digital pins 0 (RX) and 1 (TX). An FTDI FT232RL on the board channels
this serial communication over USB and the FTDI drivers (included with
the Arduino software) provide a virtual com port to software on the
computer. The Arduino software includes a serial monitor which allows
simple textual data to be sent to and from the Arduino board. The RX and
TX LEDs on the board will flash when data is being transmitted via the
FTDI chip and USB connection to the computer (but not for serial
communication on pins 0 and 1).
A SoftwareSerial library allows for serial communication on any of the
Nano's digital pins.
The ATmega328 also support I2C (TWI) and SPI communication. The
Arduino software includes a Wire library to simplify use of the I2C bus.
To use the SPI communication, please see ATmega328 datasheet.

Programming:

The Arduino Nano can be programmed with the Arduino software


(download). Select "Arduino Duemilanove or Nano w/ ATmega328"
from the Tools > Board menu (according to the microcontroller on your
board).
The ATmega328 on the Arduino Nano comes preburned with a
bootloader that allows you to upload new code to it without the use of an
Page | 12
external hardware programmer. It communicates using the original
STK500 protocol.
You can also bypass the bootloader and program the microcontroller
through the ICSP (In-Circuit Serial Programming) header using Arduino
ISP or similar.

Automatic (Software) Reset:

Rather then requiring a physical press of the reset button before an upload,
the Arduino Nano is designed in a way that allows it to be reset by
software running on a connected computer. One of the hardware flow
control lines (DTR) of the FT232RL is connected to the reset line of the
ATmega328 via a 100 nanofarad capacitor. When this line is asserted
(taken low), the reset line drops long enough to reset the chip. The
Arduino software uses this capability to allow you to upload code by
simply pressing the upload button in the Arduino environment. This
means that the bootloader can have a shorter timeout, as the lowering of
DTR can be well-coordinated with the start of the upload.
This setup has other implications. When the Nano is connected to either a
computer running Mac OS X or Linux, it resets each time a connection is
made to it from software (via USB). For the following half-second or so,
the bootloader is running on the Nano. While it is programmed to ignore
malformed data (i.e. anything besides an upload of new code), it will
intercept the first few bytes of data sent to the board after a connection is
opened. If a sketch running on the board receives one-time configuration
or other data when it first starts, make sure that the software with which it
communicates waits a second after opening the connection and before
sending this data.

Page | 13
2.2.2 330 E RESISTOR

A resistor is a passive two-terminal electrical component that


implements electrical resistance as a circuit element. In electronic
circuits, resistors are used to reduce current flow, adjust signal levels, to
divide voltages, bias active elements, and terminate transmission lines,
among other uses. High-power resistors that can dissipate many watts of
electrical power as heat may be used as part of motor controls, in power
distribution systems, or as test loads for generators. Fixed resistors have
resistances that only change slightly with temperature, time or operating
voltage. Variable resistors can be used to adjust circuit elements (such as
a volume control or a lamp dimmer), or as sensing devices for heat,
light, humidity, force, or chemical activity.
Resistors are common elements of electrical networks and electronic
circuits and are ubiquitous in electronic equipment. Practical resistors as
discrete components can be composed of various compounds and forms.
Resistors are also implemented within integrated circuits.
The electrical function of a resistor is specified by its resistance:
common commercial resistors are manufactured over a range of more
than nine orders of magnitude. The nominal value of the resistance falls
within the manufacturing tolerance, indicated on the component.

Page | 14
2.2.3. PUSH BUTTONS

A push-button (also spelled pushbutton) or simply button is a


simple switch mechanism for controlling some aspect of a machine or
a process. Buttons are typically made out of hard material,
usually plastic or metal. The surface is usually flat or shaped to
accommodate the human finger or hand, so as to be easily depressed or
pushed. Buttons are most often biased switches, although many un-biased
buttons (due to their physical nature) still require a spring to return to their
un-pushed state. Different people use different terms for the "pushing" of
the button, such as press, depress, mash, hit, and punch.
The "push-button" has been utilized in calculators, push-button
telephones, kitchen appliances, and various other mechanical and
electronic devices, home and commercial. In industrial and commercial
applications, push buttons can be connected together by a mechanical
linkage so that the act of pushing one button causes the other button to be
released. In this way, a stop button can "force" a start button to be released.
This method of linkage is used in simple manual operations in which the
machine or process has no electrical circuits for control.

Page | 15
In popular culture, the phrase "the button" (sometimes capitalized) refers
to a (usually fictional) button that a military or government leader could
press to launch nuclear weapons.

To avoid the operator from pushing the wrong button in error, pushbuttons
are often color-coded to associate them with their function. Commonly
used colors are red for stopping the machine or process and green for
starting the machine or process.

Red pushbuttons can also have large heads (called mushroom heads) for
easy operation and to facilitate the stopping of a machine. These
pushbuttons are called emergency stop buttons and for increased safety
are mandated by the electrical code in many jurisdictions. This large
mushroom shape can also be found in buttons for use with operators who
need to wear gloves for their work and could not actuate a regular flush-
mounted push button.

As an aid for operators and users in industrial or commercial applications,


a pilot light is commonly added to draw the attention of the user and to
provide feedback if the button is pushed. Typically this light is included
into the center of the pushbutton and a lens replaces the pushbutton hard
center disk.

The source of the energy to illuminate the light is not directly tied to the
contacts on the back of the pushbutton but to the action the pushbutton
controls. In this way a start button when pushed will cause the process or
machine operation to be started and a secondary contact designed into the
operation or process will close to turn on the pilot light and signify the
action of pushing the button caused the resultant process or action to start.

Page | 16
3. DESCRIPTION OF THE SOFTWARE COMPONENTS

When coming to the software part there is nothing much rather than
the the compiler used for the programming the microcontroller and
the source code used for the application and programming the
microcontroller for its functionality.
3.1 ABOUT THE COMPILER

The compiler used here in our project is Arduino compiler its based on
free ware GCC compiler. Arduino is an open source, computer hardware
and software company, project, and user community that designs and
manufactures Single-board microcontrollers and microcontroller kits for
building digital devices and interactive objects that can sense and control
objects in the physical world. The project's products are distributed

Page | 17
as open-source hardware and software, which are licensed under the GNU
Lesser General Public License (LGPL) or the GNU General Public
License (GPL), permitting the manufacture of Arduino boards and
software distribution by anyone. Arduino boards are available
commercially in preassembled form, or as do-it-yourself kits.
Arduino board designs use a variety of microprocessors and controllers.
The boards are equipped with sets of digital and analog input/output (I/O)
pins that may be interfaced to various expansion boards (shields) and
other circuits. The boards feature serial communications interfaces,
including Universal Serial Bus (USB) on some models, which are also
used for loading programs from personal computers. The microcontrollers
are typically programmed using a dialect of features from the
programming languages C and C++. In addition to using traditional
compiler tool chains, the Arduino project provides an integrated
development environment (IDE) based on the Processing language
project.
The Arduino project started in 2003 as a program for students at
theInteraction Design Institute Ivrea in Ivrea, Italy,[2] aiming to provide a
low-cost and easy way for novices and professionals to create devices that
interact with their environment using sensors and actuators.

Common examples of such devices intended for beginner hobbyists


include simple robots, thermostats, and motion detectors.

The name Arduino comes from a bar in Ivrea, Italy, where some of the
founders of the project used to meet. The bar was named after Arduin of
Ivrea, who was the margrave of the March of Ivrea and King of Italy from
1002 to 1014.

Page | 18
3.2 SOURCE PROGRAM

/*
The code serial prints the desired string.
When used with the windows and mac program AAC Keys,
this program will type in the desired phrase or password wherever
the PC cursor is.
The circuit:
* pushbutton attached from pin 2 to +5V
* 10-kilohm resistor attached from pin 4 to ground
*/
const int buttonPin = 4; // input pin for pushbutton
int previousButtonState = HIGH; // for checking the state of a
pushButton
int counter = 0; // button push counter
void setup() {
// make the pushButton pin an input:
pinMode(buttonPin, INPUT);
// initialize control over the keyboard:
Serial.begin(9600);
}

Page | 19
void loop()
{
// read the pushbutton:
String pass_1 = "type_your_password_here!"; //make sure you leave
the quotes around the password!
int buttonState = digitalRead(buttonPin);
// if the button state has changed,
if ((buttonState != previousButtonState)
// and it's currently pressed:
&& (buttonState == HIGH)) {
// increment the button counter
counter++;
// type out a message
//Keyboard.print("You pressed the button ");
//Keyboard.print(counter);
//Keyboard.println(" times.");
Serial.print(pass_1);
}
// save the current button state for comparison next time:
previousButtonState = buttonState;
}

Page | 20
4. APPLICATIONS
The following provides a deeper dive into the specifics of the Lastpass
application. We will look at some of its additional features, the technology
it uses for security, its security vulnerabilities, and the reported data
breaches it has endured.
Overview Lastpass is currently the most widely used password manager
with over seven million users and 15000 businesses. It was founded in
2008, and was just recently acquired. A company by the name of Logmein
acquired Lastpass in October of 2015 for about 110 million dollars (Perez,
2015).
Pricing Lastpass on a single device is free. But the cost is twelve dollars
per year to use it across multiple devices. Additional features Lastpass has
many additional features that are not offered by the other password
applications.Multifactor authentication Lastpass includes many additional
options for multifactor authentication.
Web Authentication Applications It supports many web authentication
applications such as Google Authenticator, Microsoft Authenticator,
Authy, Duo Mobile, and Transat.
Physical Grid This option uses a printable GRID to provide an additional
PIN for 2 factor sign-on. 2016 The SANS Institute Author retains full
rights. Password Management Applications and Practices 9 Scott
Standridge, [email protected]
USB Lastpass supports Yubiko and Sesame USB based authentication.
Fingerprint LastPass has support for various fingerprint readers, including
Windows Biometric Framework. One time passwords (OTP) A One Time
Password (OTP), as the name implies, is a password which can only be
used once. These passwords are to be used instead of the master password

Page | 21
when there is more of a risk that the master password may be stolen.
Lastpass recommends using them for access from a public computer or a
public network.

Recovery of the account for forgotten master passwords Recovery of the


password vault is a feature that allows a user to recover his password vault
should he forget his master password.
The last password that is referred to in the slogan is the master password.
The master password is used to derive the encryption key for the password
database. The password database is referred to as the vault.
The vault is protected because it is stored using very strong encryption
and the master password is required to decrypt it. Lastpass does not store
this password anywhere. The only storage of the master password is in the
memory of the owner. The premise is that your master password cannot
be stolen from Lastpass because Lastpass does not know it (Lastpass
2015).

Page | 22
5. CONCLUSION

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 Password Typer, too.
I've already drawn a circuit and PCB layout for the micro SD version
using the ATmega328 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.
Your Password Typer 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
Password Typer can store a lot of "digital" keys and combinations.
Now you have a fully working Password Typer 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 symbol.
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. Feel free to change and customize the software I
provided you as you want. Feel free to collaborate.

Page | 23
6. REFERENCE

[1] Microsoft Passport service. http://www.passport.net.

[2] OpenSSL: The open source toolkit for SSL/TLS. http://www.openssl.org.

[3] Martn Abadi, T. Mark A. Lomas, and Roger Needham. Strengthening passwords. Technical
Report 1997 - 033, 1997.

[4] Mihir Bellare, David Pointcheval, and Phillip Rogaway. Authenticated key exchange secure
against dictionary attacks. In EUROCRYPT, pages 139155, 2000.

[5] E. Felten, D. Balfanz, D. Dean, and D. Wallach. Web spoofing: An Internet con game. Proc.
20th National Information Systems Security Conference, 1997.

[6] Eran Gabber, Phillip B. Gibbons, Yossi Matias, and Alain J. Mayer. How to make personalized
web browsing simple, secure, and anonymous. In Financial Cryptography, pages 1732, 1997.

[7] Rosario Gennaro and Yehuda Lindell. A framework for password-based authenticated key
exchange. In EUROCRYPT, pages 524543, 2003.

[8] J. Jeff, Y. Alan, B. Ross, and A. Alasdair. The memorability and security of passwords some
empirical results, 2000.

[9] Ian Jermyn, Alain Mayer, Fabian Monrose, Michael K. Reiter, and Aviel D. Rubin. The design
and analysis of graphical passwords. 1999.

[10] Jonathan Katz, Rafail Ostrovsky, and Moti Yung. Efficient password-authenticated key
exchange using human-memorable passwords. In EUROCRYPT 01: Proceedings of the
International Conference on the Theory and Application of Cryptographic Techniques, pages 475
494. Springer-Verlag, 2001. [11] J. Kelsey, B. Schneier, C. Hall, and D. Wagner. Secure
applications of low-entropy keys. Lecture Notes in Computer Science, 1396:121134, 1998.

[12] David P. Kormann and Aviel D. Rubin. Risks of the Passport single signon protocol. In Proc.
9th international World Wide Web conference on computer networks, pages 5158. North-Holland
Publishing Co., 2000.

[13] U. Manber. A simple scheme to make passwords based on one-way functions much harder
to crack, 1996.

Page | 24
Page | 25

You might also like