Ip Project Report
Ip Project Report
For
CBSE 2023-24 Examination
[Informatics Practices (065)]
SUBMITTED BY:
Arjun Ghadge
1
Certificate
This is to certify that Arjun Ghadge of Class XII has successfully completed
his/her project in Informatics Practices (065) as prescribed by CBSE for the
year 2023-24.
Roll No.:
Class: XII
External Examiner:
2
Acknowledgment
I undertook this Project work, as a part of our XII-Informatics Practices course. I tried to apply
the best of my knowledge and experience, gained during the study and class work
Moreover, the developer always feels the need, the help, and good wishes of the people near
I would like to extend my sincere thanks and gratitude to my teacher Ms. Anagha Ware for
I’m also very thankful to my Principal Ms. Damini Joshi for being a source of inspiration.
3
List Of Content
Topic Page Number
Introduction 5
Implementation 6
Coding 11
Output 20
Future Enhancements 23
References 24
4
Introduction
● The "Password Assistant" is a Python program designed to assist users in
generating, storing, and managing secure passwords. In an era where
online security is of paramount importance, this tool aims to simplify the
process of maintaining strong and unique passwords for various accounts
and services.
● Purpose
The main objectives of this project are as follows:
o Generate high-security passwords.
o Store passwords in a structured manner.
o Provide options for editing and managing stored passwords.
o Enhance password security through randomness and complexity.
● Features
The key features of the "Password Assistant" program include:
o Randomized password generation using a combination of uppercase
letters, lowercase letters, digits, and special characters.
o Storage of passwords with associated labels in a structured
password vault.
o The ability to edit, remove, or search for stored passwords.
o An intuitive menu-based user interface.
5
Implementation
Program Flow
Password Generation
● The program generates high-security passwords by combining characters from
Password Storage
● Passwords are stored in a structured format using a Pandas DataFrame and
Password Management
● Users can edit the password vault by adding, removing, or searching for
User Interface
● The program offers a menu-based interface to choose from various operations.
Data Storage
● Password information is stored in a CSV file, "Passwordvault.csv," allowing for
6
System And Software
Hardware used:
● Ryzen 7 7700X- processor
● RTX 2070 Super- Graphics Card
● 32GB- RAM
Software used:
● Microsoft Windows® 11 as the Operating System.
● Visual Studio Code is the Main Development Software
● Python IDLE-3.11.4
● CSV File for Record Keeping.
● Google Docs for documentation.
Hardware Requirement-
● Latest Intel processor-based PC.
● 2 GB RAM and 4GB HDD space (for PDF and CSV files) are
desirable.
● Standard I/O devices like Keyboard and Mouse etc.
Software Requirement-
● Windows 2000/XP OS is desirable.
● Python IDLE 3.7 or higher should be installed.
● Python’s Pandas and Numpy should be installed.
7
System Design and Development
System Architecture
● The "Password Assistant" program is designed as a standalone command-line
○ Manages the storage and retrieval of password data. It uses the Pandas
○ Manages the loading and saving of the password vault to and from a CSV
8
Password Generation
● The password generation module follows best practices for password security
random module to ensure that passwords are not predictable and provides
robust security.
format, making it easy for users to access and manage their stored passwords.
○ Users can add passwords to the vault by providing a label (for which the
● Remove Entry:
○ Users can remove passwords from the vault by specifying the label
○ Users can search for a password by providing the label, and the program
○ Users can view the entire password vault or just the most recent
9
Data Storage and Persistence
The program stores password data in a CSV file named "Passwordvault.csv." This
● Portability: Users can easily transfer their password data to different devices or
interact with the program. The menu system guides users through password
10
Coding
In the following section, we provide the source code for the 'Password Assistant' program.
management. The code encapsulates the core features of the program, offering insights into
CODE:
import random as rnd
import pandas as pd
import numpy as np
import os
import time
# Predefined variables
a=0
a1 = 0
SpcChr = ['!', '@', '#', '$', '%', '^', '&', '*']
PasswordVault = pd.DataFrame([], columns=['For', 'Password'])
11
# Checking index
if PasswordVault.empty == True:
n=0
elif PasswordVault.empty == False:
n = len(PasswordVault)
n=1
b = (n - 1)
# Menu 1
os.system('cls')
print('*' * 100)
print('PASSWORD ASSISTANT')
print()
print('An assistant for managing all your passwords,')
print('Made to help generate secure passwords and organize them.')
# Access menu
while a < 1:
PasswordVault = pd.read_csv('PasswordVault.csv', header=0)
input('Press enter to continue.')
os.system('cls')
print('*' * 100)
print('PASSWORD ASSISTANT')
print("_" * 25)
print()
print('1) Generate a high-security Password.')
print('2) Edit Password Vault.')
print('3) View the Password vault.')
print('4) Exit.')
print()
print('Choose your operation: Type-(1/2/3/4)')
ch1 = int(input('Choice:'))
print("_" * 25)
12
print('*' * 50)
print()
# Checking index
if PasswordVault.empty == True:
n=0
elif PasswordVault.empty == False:
n = len(PasswordVault)
b = (n - 1)
# Generate password
if ch1 == 1:
# Password randomizer
os.system('cls')
print("*" * 50)
print('Your new randomly generated password is:')
L1 = chr(rnd.randint(65, 90))
L2 = chr(rnd.randint(65, 90))
L3 = chr(rnd.randint(65, 90))
L4 = chr(rnd.randint(65, 90))
l1 = chr(rnd.randint(97, 122))
l2 = chr(rnd.randint(97, 122))
l3 = chr(rnd.randint(97, 122))
l4 = chr(rnd.randint(97, 122))
N1 = chr(rnd.randint(48, 57))
N2 = chr(rnd.randint(48, 57))
N3 = chr(rnd.randint(48, 57))
N4 = chr(rnd.randint(48, 57))
S1 = str(rnd.choice(SpcChr))
S2 = str(rnd.choice(SpcChr))
wrd = l1 + l2 + l3 + l4 + L1 + L2 + L3 + L4 + N1 + N2 + N3 + N4 +
S1 + S2
13
pswrd = ''.join(rnd.sample(wrd, len(wrd)))
print(pswrd)
print("*" * 50)
# Password saver
print('_' * 25)
print('Would you like to save the password to the Password Vault?:
(y/n)')
sptv = input('Choice: ')
print('_' * 25)
print()
# If yes
if sptv == 'y':
print('-' * 25)
wbst = input('Where will this password be used?: ')
PasswordVault.loc[(n)] = [wbst, pswrd]
PasswordVault.to_csv('Passwordvault.csv', index=False)
print('Your password has been saved for', wbst)
print('-' * 25)
elif sptv == 'Y':
print('-' * 25)
wbst = input('Where will this password be used?: ')
PasswordVault.loc[(n)] = [wbst, pswrd]
PasswordVault.to_csv('Passwordvault.csv', index=False)
print('Your password has been saved for', wbst)
print('-' * 25)
# If no
elif sptv == 'n':
print('-' * 25)
print('Your password has NOT been saved.')
print('-' * 25)
14
elif sptv == 'N':
print('-' * 25)
print('Your password has NOT been saved.')
print('-' * 25)
# If else
else:
print('-' * 25)
print('Invalid Input')
print('Your password has NOT been saved.')
print('-' * 25)
print('*' * 50)
# If no
if vwvlt == 'n':
print('-' * 50)
print('The vault will NOT be displayed.')
print('-' * 50)
print()
print('*' * 50)
15
elif vwvlt == 'N':
print('-' * 50)
print('The vault will NOT be displayed.')
print('-' * 50)
print()
print('*' * 50)
# If yes
elif vwvlt == 'y':
print('-' * 50)
print('The vault:')
print(PasswordVault)
print('-' * 50)
print()
print('*' * 50)
elif vwvlt == 'Y':
print('-' * 50)
print('The vault:')
print(PasswordVault)
print('-' * 50)
print()
print('*' * 50)
# Other
else:
print('-' * 50)
print('Invalid input.')
print('The vault will NOT be displayed.')
print('-' * 50)
print()
print('*' * 50)
# Edit Vault
elif ch1 == 2:
os.system('cls')
16
while a1 < 1:
print('-' * 50)
PasswordVault = pd.read_csv('PasswordVault.csv', header=0)
input('Press enter to continue.')
print('*' * 50)
os.system('cls')
print('*' * 50)
print('_' * 25)
print('EDIT MENU:')
print()
print('1) Add a new Entry.')
print('2) Remove an Entry.')
print('3) Search for password.')
print('4) Main menu')
print('-' * 25)
print('Choose an option(1/2/3/4):')
entmod = int(input('choice:'))
os.system('cls')
# Checking index
if PasswordVault.empty == True:
n=0
elif PasswordVault.empty == False:
n = len(PasswordVault)
b = (n - 1)
# Add
if entmod == 1:
print('-' * 25)
nwfor = input('Where is the password being used?:')
nwpswrd = input('What is the password:')
PasswordVault.loc[(n)] = [nwfor, nwpswrd]
17
print(nwpswrd, 'was successfully added as the password for',
nwfor)
PasswordVault.to_csv('Passwordvault.csv', index=False)
print('_' * 25)
print()
print('*' * 50)
# Remove
elif entmod == 2:
print('-' * 25)
print('What website do you wish to remove a password for:')
rmvrow = input('Name:')
print(rmvrow)
PasswordVault.drop(PasswordVault.index[(PasswordVault["For"] ==
rmvrow)], axis=0, inplace=True)
PasswordVault.to_csv('Passwordvault.csv', index=False)
print(rmvrow, 'was dropped.')
print()
print('*' * 50)
print(PasswordVault.loc[PasswordVault.index[(PasswordVault["For"]
== srcpswrd)])
print('-' * 25)
18
print()
print('*' * 50)
# Exit loop
elif entmod == 4:
a1 += 1
# Else
else:
print('Invalid Input')
# Exit Vault
elif ch1 == 4:
a += 1
for i in range(2):
print('Exiting Program.')
time.sleep(.2)
os.system('cls')
print('Exiting Program..')
time.sleep(.2)
os.system('cls')
print('Exiting Program...')
time.sleep(.2)
os.system('cls')
print('Exiting Program....')
time.sleep(.2)
os.system('cls')
# Else
else:
print('Invalid Input')
19
OUTPUT SCREENS:
1. INTRODUCTION SCREEN
2. MAIN MENU
20
4. RANDOM GENERATED PASSWORD
5. DISPLAY PASSWORDS
21
6. EDITING VAULT MENU
8. REMOVING VALUES
22
9. SEARCHING FOR PASSWORD
23
Future Enhancements
In the future, the "Password Assistant" could be improved and extended in
several ways, including:
● User Authentication: Add a secure login system to protect the password vault from
unauthorized access.
● Cloud Integration: Allow users to synchronize their password vault with cloud services
24
REFERENCES
To work on this project, I have referred to the following books and websites during the
various phases of development of the project.
2. Pandas Website
4. Wikipedia
5. Stack Overflow
6. Github
7. GeeksForGeeks
Other than the above mentioned book, the suggestions and supervision of my teacher and my
class experience also helped me to develop this software project.
25