class PasswordVault: storage_file = "/home/pi/password-vault-server/vault.json" if not debug.isDebug( ) else "vault.json" storage = None encryption = None main_menu = None def __init__(self): self.storage = Storage(self.storage_file) def startDisplay(self): self.main_menu = MainMenu() self.main_menu.init() self.main_menu.secretsCallback = self.listSecrets self.main_menu.secretCallback = self.retrieveSecret self.main_menu.saltCallback = self.initEncryption self.main_menu.display() def initEncryption(self, salt): self.encryption = Encryption(salt) # Validation secrets = self.storage.read() keys = list(secrets) if len(keys) > 0: return self.encryption.validate(secrets[keys[0]]) return False def addSecret(self, key, secret): encoded_secret = self.encryption.encode(secret) secrets = self.storage.read() secrets[key] = encoded_secret self.storage.save(secrets) def listSecrets(self): secrets = self.storage.read() return list(secrets.keys()) def retrieveSecret(self, key): secrets = self.storage.read() hashed_secret = secrets[key] decoded_secret = self.encryption.decode(hashed_secret) return decoded_secret
def decode_file(): bb = Encryption.decode('images/key.png', 'images/enc.png') with open("decoded.txt", 'w') as fout: for byte in bb.bytes: fout.write(str(chr(byte)))