Create vault.py
This commit is contained in:
parent
263cad8240
commit
dac99ddc7f
82
packages/vault.py
Normal file
82
packages/vault.py
Normal file
@ -0,0 +1,82 @@
|
||||
# ["vault", "packages.vault", ["vault"]]
|
||||
# Made By OusmBlueNinja
|
||||
import getpass
|
||||
from cryptography.fernet import Fernet
|
||||
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
|
||||
from cryptography.hazmat.primitives import hashes
|
||||
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
|
||||
from cryptography.hazmat.primitives import hashes
|
||||
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
|
||||
from cryptography.hazmat.primitives import hashes
|
||||
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
|
||||
from cryptography.hazmat.primitives import hashes
|
||||
|
||||
# Initialize the Fernet symmetric key
|
||||
key = None
|
||||
cipher_suite = None
|
||||
|
||||
def initialize_vault():
|
||||
global key, cipher_suite
|
||||
|
||||
print("Welcome to the Vault!")
|
||||
|
||||
while True:
|
||||
master_password = getpass.getpass("Enter your master password: ")
|
||||
|
||||
salt = b'some_salt_here' # Replace with a secure salt value
|
||||
kdf = PBKDF2HMAC(
|
||||
algorithm=hashes.SHA256(),
|
||||
iterations=100000, # Adjust the number of iterations as needed for security
|
||||
salt=salt,
|
||||
)
|
||||
|
||||
key = Fernet(base64.urlsafe_b64encode(kdf.derive(master_password.encode())))
|
||||
cipher_suite = Fernet(key)
|
||||
|
||||
print("Vault initialized successfully.")
|
||||
break
|
||||
|
||||
# Dictionary to store encrypted passwords (service as key, encrypted password as value)
|
||||
passwords = {}
|
||||
|
||||
def vault(command: list):
|
||||
if len(command) != 1:
|
||||
print("Usage: vault login")
|
||||
return
|
||||
|
||||
action = command[0].lower()
|
||||
|
||||
if action == "login":
|
||||
initialize_vault()
|
||||
|
||||
elif action == "add":
|
||||
if key is None:
|
||||
print("You must log in first to access the vault.")
|
||||
return
|
||||
|
||||
service = input("Enter the service or website name: ")
|
||||
password = getpass.getpass("Enter the password: ")
|
||||
|
||||
# Encrypt the password before storing it
|
||||
encrypted_password = cipher_suite.encrypt(password.encode())
|
||||
|
||||
passwords[service] = encrypted_password
|
||||
print(f"Password for {service} added and encrypted.")
|
||||
|
||||
elif action == "retrieve":
|
||||
if key is None:
|
||||
print("You must log in first to access the vault.")
|
||||
return
|
||||
|
||||
service = input("Enter the service or website name: ")
|
||||
|
||||
if service in passwords:
|
||||
# Decrypt and display the password
|
||||
decrypted_password = cipher_suite.decrypt(passwords[service]).decode()
|
||||
print(f"Password for {service}: {decrypted_password}")
|
||||
else:
|
||||
print(f"No password found for {service}.")
|
||||
|
||||
else:
|
||||
print("Invalid action. Use 'login', 'add', or 'retrieve'.")
|
||||
|
Loading…
Reference in New Issue
Block a user