- Saved searches
- Use saved searches to filter your results more quickly
- password-manager
- Here are 542 public repositories matching this topic.
- roddhjav / pass-import
- louisabraham / ffpass
- libkeepass / pykeepass
- Logan1x / Python-Scripts
- Keeper-Security / Commander
- Evidlo / passhole
- gabfl / vault
- snopf / snopf
- 0x27 / GitPass
- dionysio / haveibeenpwned_lastpass
- roddhjav / pass-audit
- reinefjord / pass2csv
- jle64 / gnome-pass-search-provider
- Keeper-Security / secrets-manager
- mikelolasagasti / revelation
- pwman3 / pwman3
- Akshay-Vs / PassLock
- 1Password / solutions
- ImAyrix / Password-Manager
- birlorg / bitwarden-cli
- Improve this page
- Add this topic to your repo
- Менеджер паролей без хранения
- Saved searches
- Use saved searches to filter your results more quickly
- clxmente/Python-Password-Manager
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
- Make a password manager with python: Making the basic mechanisms
- 1| Create a text file in python
- 2| Write to file
- 3| Output the password
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
password-manager
Here are 542 public repositories matching this topic.
roddhjav / pass-import
A pass extension for importing data from most existing password managers
louisabraham / ffpass
Import and Export passwords for Firefox Quantum 🔑
libkeepass / pykeepass
Python library to interact with keepass databases (supports KDBX3 and KDBX4)
Logan1x / Python-Scripts
Collection of Various Python Script’s. 💻
Keeper-Security / Commander
Keeper Commander is a python-based CLI and SDK interface to the Keeper Security platform. Provides administrative controls, reporting, import/export and vault management.
Evidlo / passhole
A secure hole for your passwords (KeePass CLI)
gabfl / vault
snopf / snopf
0x27 / GitPass
Open Source Your Password (Mismanagement)!
dionysio / haveibeenpwned_lastpass
Check if your lastpass passwords have been pwned by someone
roddhjav / pass-audit
A pass extension for auditing your password repository.
reinefjord / pass2csv
Export pass(1), «the standard unix password manager», to CSV.
jle64 / gnome-pass-search-provider
Pass password manager search provider for gnome-shell
Keeper-Security / secrets-manager
Keeper Secrets Manager is a cloud-based, zero-knowledge platform for securing infrastructure secrets. Provides automatic password rotation and integration into popular DevOps CI/CD tools.
mikelolasagasti / revelation
Revelation is a password manager for the GNOME desktop, released under the GNU GPL license. It stores all your accounts and passwords in a single, secure place, and gives you access to it through a user-friendly graphical interface.
pwman3 / pwman3
Console based password management application
Akshay-Vs / PassLock
PassLock is a medium-security password manager that encrypts passwords using Advanced Encryption Standards (AES)
1Password / solutions
Examples and templates from the 1Password Solutions team
ImAyrix / Password-Manager
🔑 Password manager and password generator
birlorg / bitwarden-cli
Cross Platform Bitwarden library and CLI with sudolikeaboss functionality.
Improve this page
Add a description, image, and links to the password-manager topic page so that developers can more easily learn about it.
Add this topic to your repo
To associate your repository with the password-manager topic, visit your repo’s landing page and select «manage topics.»
Менеджер паролей без хранения
Хочу поделиться с народом своей идеей по поводу безопасного хранения паролей. Сторонние менеджеры паролей мне всегда не нравились. Хранение сокровенного у чужого дяди – идея ну очень так себе. Можно сколько угодно клясться, что все надежно, что утечки маловероятны и т.д. Но одна утечка – и все что нажито непосильным трудом погибнет.
Поэтому, я, руководствуясь принципом «хочешь, чтобы было сделано хорошо – сделай сам», решил создать свое решение этой проблемы.
- Я программист не настоящий, так что алгоритм должен быть простым в реализации.
- Он должен быть кроссплатформенным: Android/Linux/Windows.
- Пароли в принципе не должны храниться нигде и ни в каком виде – это и есть изюминка моей идеи.
- Если кто-то получит доступ к исходным кодам – это ничего ему дать не должно. Собственно, поэтому я и решил поделиться с народом своей идеей.
Идея заключалась в следующем. Хэш чего угодно представляет собой последовательность шестнадцатеричных цифр. Эту последовательность можно разбить на блоки по две, переводим в десятичный вид, получаем остаток по модулю длины алфавита и получаем номера символов в алфавите. Для сайта нужно помнить лишь мнемонический идентификатор из хэшируемой фразы и числа для формирования алфавита.
Алгоритм заворачивается в скрипт на питоне. Интерпретаторов под Android/Linux/Windows – вагон и маленькая тележка. Далее привожу код с пояснениями.
Импортируем нужные библиотеки:
import hashlib from textwrap import wrap import random
Подключаем список алгоритмов хэширования. Длина хэша у них разная, сделано это для сайтов с ограничением сверху по длине пароля.
algs = ['md5', 'sha1', 'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512']
Алфавит разбиваем на три куска. Отдельно цифробуквенный, отдельно знаки препинания, и отдельно пробел, решетка звездочка и обратный слэш. Третий блок почему-то кое-где запрещен в паролях, например на госуслугах.
abc_blocks = ['0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', '!"$%&\'()+,-./:;?@[]^_<|>~`', ' #*\\'] abc = ''
Принимаем на входе количество блоков. По умолчанию берем все три блока.
И задаем зерно для рандома. Это вышеупомянутое число из мнемонического идентификатора.
abc_colvo = int(input("Количество блоков (3): ") or 3) s = int(input("Зерно для рандома: "))
Склеиваем блоки алфавита и перемешиваем его.
for i in range(abc_colvo): abc += abc_blocks[i] abc = list(abc) random.seed(s) random.shuffle(abc) abc = ''.join(abc)
memory_phrase = input('Ключевая фраза: ') memory_phrase = bytes(memory_phrase, encoding = 'utf-8')
Запускается вычисление паролей.
print() print('-----------------------------') for alg in algs: hash_key = getattr(hashlib, alg)(memory_phrase).hexdigest() password = [hash_key[x:x+2] for x in range(0, len(hash_key), 2)] password = list(map(lambda x: int(x, 16) % len(abc), password)) password = list(abc[x] for x in password) password = ''.join(password) print(alg + ':', len(password), 'chars') print() print(password) print() for block in wrap(''.join(password), 4): print(block + ' ', end = '') print() print('-----------------------------')
И вуаля – вот ваши возможные пароли для сайта.
Разбивка по 4 символа нужна на тот редкий случай, если придется вводить все это с клавиатуры. Так визуально проще его читать.
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
🔒 A simple password manager built with Python. Password generation, AES Encryption, and SHA256 Hashing.
clxmente/Python-Password-Manager
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Note: This password manager was made as a project and is NOT intended for actual use. Please use more sophisticated and well-tested/trusted password managers to store sensitive data.
The encryption method used in this program comes from the python library PyCryptoDome. This program uses AES encryption methods to store sensitive data (in this case passwords) into a json file.
To authenticate the user, they are prompted to create a master password (that is also used to decrypt data) which is then stored using a SHA256 Hash Function and is verified at login. Whenever the user is prompted to verify their master password, the password they enter is compared to the hash of the stored master password and access if granted if the two hashes match.
if os.path.isfile("db/masterpassword.json"): # loading json file with stored password. with open("db/masterpassword.json", 'r') as jsondata: jfile = json.load(jsondata) stored_master_pass = jfile["Master"] # retrieving stored hash and saving to a variable. master_password = getpass.getpass("Enter your Master password: ") # asking user to enter their master password # comparing the two hashes if sha256(master_password.encode('utf-8')).hexdigest() == stored_master_pass: #rest of program executes
Python-Password-Manager has been completely rewritten to be more object-oriented and abstract even more of the methods found in the original version.
- Object-Oriented Design:
- Creation of DataManip Class:
- Handles all backend processes regarding encryption, decryption, and DB functions.
- Uses DataManip methods to provide the CLI interface seen in the Demo.
- Better handling of errors.
- Now returns user to specific points of the program after errors where as before the entire program would restart.
- Echo mode is set to off when Master Password is being entered.
- Added two options to menu:
- Delete a single password
- Specific options to delete ONLY passwords and another option to completely wipe all data including master password.
As mentioned at the top, this was made as a project and not intended for actual use. Below I demonstrate what any expert hacker can accomplish by exploiting a vulnerability. Just kidding, anyone can do this. Since the files are stored locally, they can easily be deleted without needing to enter any credentials and consequently all stored passwords are gone along with other data.
About
🔒 A simple password manager built with Python. Password generation, AES Encryption, and SHA256 Hashing.
Make a password manager with python: Making the basic mechanisms
Every password manager must save the password a user gives and output it when the user needs it. We are gonna apply the same thing to our password manager. We will first start by creating a .txt file to store the passwords. Get the full code from here with some extra addition to get the code up and running.
1| Create a text file in python
import os.path def checkExistence(): if os.path.exists("info.txt"): pass else: file = open("info.txt", 'w') file.close()
At first we are checking if the file info.txt exists in our directory where the python file is. If not, just simply create one. ‘w’ means we are creating the file to write something. If you want to know more about files follow this.
2| Write to file
Alike you print in the terminal, you can similarly write into a file. just use the write to write inside a file. Here is how.
def appendNew(): # This function will append new password in the txt file file = open("info.txt", 'a') print() print() userName = input("Please enter the user name: ") password = input("Please enter the password here: ") website = input("Please enter the website address here: ") print() print() usrnm = "UserName: " + userName + "\n" pwd = "Password: " + password + "\n" web = "Website: " + website + "\n" file.write("---------------------------------\n") file.write(usrnm) file.write(pwd) file.write(web) file.write("---------------------------------\n") file.write("\n") file.close
At first, we are opening the file we just have created. ‘a’ argument means we will append something in that file. We could have used ‘w’ which stands for write. But every time we open a file with a ‘w’ argument, it erases everything written previously. Which we don’t want at all. So, we will continue with ‘a’. Then we take input from the user about his user name, password and the website. I’m using the empty print statement to space things out in the terminal so that it looks good. Then we are simply creating three string variables to store the username, password and website. And then we will write to our file by using the write function. Remember, unlike print , write doesn’t add a new line every time we call it. So, use \n if you want to add a new line in your file. That’s it! Now our user can save passwords in info.txt file(or whatever you call).
3| Output the password
def readPasswords(): file = open('info.txt', 'r') content = file.read() file.close() print(content)
Just like our previous function, we are opening our file at first. But this time, instead of append, we will open the file as read(use r ). Then we will create a new variable content which will be the place holder of the contents in the file. And then just simply print it out. BOOM. Yeah! I know this function will print all the passwords which we don’t want. For that, we will make need to a search operation. But in order to keep the post as simple as possible, I will end it just right here. In the next post, we will make a search option. You can get the full code here with some extra addition to get the code up and running. Until next time, stay safe, stay at home.
💗Love from humanity💗
- Creation of DataManip Class: