GithubHelp home page GithubHelp logo

offline-password-manager's Introduction

PassMan – Password Manager

Prepared by:-

1) Anish Agarwal

2) Raktim Saha

Indian Institute of Information Technology (IIIT), Kalyani

October 24, 2021

Introduction

Project Scope

The software can generate and keep track of several user credentials for different websites and/ or services. It will be designed to maximize user safety and convenience in their online activities, by generating strong passwords as well as keeping track of them, so that the user need not remember complex credentials for different online services.

The user is initially required to register with an email address and verify with the OTP, thereby setting a master password to the product. Thereafter, the user only needs to remember and input the master password to the software in order to retrieve the saved passwords for various websites.

The software makes use of a database to store the usernames and passwords in encrypted forms, which is retrieved every time the user requests them.

References

The software uses the following software specifications and dependencies to work properly:

Fernet encryption key references (Cryptography) https://cryptography.io/en/latest/fernet/

Overall Description

Product Perspective

This product is standalone in the field of password manager services and it doesn’t require an internet connection, unlike many similar products. It works offline and stores the credentials in a local database on the user system.

Product Features

On initial use, the user is required to register an email address which will be used thereafter to authenticate the user and send password reset OTPs in case the user forgets the password. The software creates a “pwmdatabase.db” file and a “secret.key” file in the current directory of the binary (or where the PassMan.py file is located in the script is executed). NOTE:- Both these files contain sensitive information and MUST NOT BE shared.

Once the user has registered with an email address, the login process only requires the master password, which the user had to enter during registration. This password is then checked against the registered email ID and the user is allowed/ denied entry based on its correctness.

In case the user is unable to provide the correct master password, s/he can opt for a password change by sending and verifying an OTP sent to the registered email address, post which, the user can change their password.

Once the user gains entry post logging in successfully, s/he is presented with a screen listing all the websites/ services for which credentials are saved in the database. The user can choose to add new sets of credentials for a service or fetch credentials for a saved website/ service.

After fetching the credentials (username and password) for a particular service, the user can choose to either copy the password into their clipboard or even delete the saved credentials. After adding a credential, the list can be updated by clicking on the small green button on the top right-hand side (REFRESH). The user can log out of the software by clicking the small red button on the top right-hand side (LOGOUT)

User Classes and Characteristics

Users of the product should be able to:-

  • Add and save credentials for a specific website/ service o Save their own username and password pair. o Generate a password by the software and save it.
  • View a list of all services for which credentials are saved.
  • Retrieve the credentials for a given website/ service searching by its name.
  • Copying the password for service after retrieving from the database.
  • Deleting the saved credentials for the retrieved service.

Add Credentials

Description and Priority Post successful login, the user is presented with a screen listing all the sites/ services for which the database has saved the credentials. Initially, this list will be empty, and the User will be able to add credentials for a particular website/ service

The add credentials section will ask the User for the name of the service, their username and password. The User also has the option to generate a new password and save it for the specified service, which will then be generated by the software and saved into the database.

The software makes use of the Fernet key from the Cryptography module of Python 3.9, which is used to create a URL safe, base64 encoded encryption token, which encrypts the original password and guarantees strong privacy and authenticity. The key used is a 128-bit key that uses AES in CBC mode and initialization vectors generated from os.urandom() method.

Search Credentials

Description The user should be able to search for the saved credentials to a given website/ service, providing the name (in full or partial) of the service. The software queries the database for the name as entered by the User, and returns the following: - i) Site Name ii) Username iii) Password The user should also have options to either copy the password into their clipboard or delete the selected (fetched) credential set from the database.

Delete Credentials

Description The User has the ability to delete selected credentials from the database. The user first needs to fetch the credentials using the Search method, and once the credentials along with the site name have been fetched, the User can delete the selected record by clicking on the delete button.

Home Add/Del Get
pic1 pic2 pic3

offline-password-manager's People

Contributors

deus-oc avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.