Crypto mit Python2-Hausmitteln?.
Hi, gibt es hier Cryptoexperten? Ich habe da einen Rechner, auf dem ich einen Passwortmanager für (vorgegebene!) Passwörter brauchen könnte, aber keine fremde Software ausführen darf, außer Python2.7-Scripte. Und ich frage mich gerade: Ist das wirklich schon alles was ich brauche, oder habe ich einen Denkfehler?: ---8<--- #!/usr/bin/python2 import hashlib, getpass #dictionary pl mit { "Dienstname" : "crypted Text" }: pl = { 'test': 'M\xa2X\xdeU-y(\\\xad\xc8YV\x1d\x18\x9d', 'Geheimnis': '>\xcdvA\t\x9c\x82\xb3\xd9\xd8eI\x1amh\xde', } def xor(data, service, masterpassword ): salt = ( "g\x9b#\xaeG\xffM\x1a\xa3\t&;\xdb\xbe\xcd6\x04X" + "\xa9z\x03\x86\xb7K\xff\xa1\xd7uR`\xa1\x16\xc5" + "\x91\x02\xa7y;f\x9b\x19%\x86\xea" ) initstr = service + salt + masterpassword # zum verlangsamen: * 1000000 h = hashlib.sha512( initstr * 1000000 ) key = h.digest() # Passwortlaenge verschleiern, mind. 16 data = data + " " * ( 16 - len( data ) ) while len( data ) > len( key ): h.update( initstr ) key += h.digest() return "".join( [ chr( ord( chardata ) ^ ord( charkey ) ) for ( chardata, charkey ) in zip( data, key ) ] ) if __name__ == '__main__': masterpassword = "" while len( masterpassword ) < 8: masterpassword = getpass.getpass( """Geben Sie das Master-Passwort ein: """ ) print( "\nGespeicherte Dienste:\n" ) for service in sorted( pl ): print( service ) checked = False while True: service = raw_input("\nDienst:") cryptedpassword = pl.get( service, None ) if cryptedpassword: print( xor( cryptedpassword, service, masterpassword ) ) else: print( """\nDienst noch unbekannt. Bitte 2 x das zu chiffrierende Passwort eingeben.""" ) newpassword = "********" passw_check = "--------" while passw_check != newpassword: newpassword = passw_check passw_check = getpass.getpass( "Neues Passwort:" ) if checked or masterpassword == getpass.getpass( """Geben Sie noch mal das Master-Passwort ein: """ ): checked = True print( """\nDictionary pl im Quelltext erweitern mit:\n %s: %s,\n""" % ( repr( service ), repr( xor( newpassword, service, masterpassword ) ) ) ) --->8--- Habe hier ein schwaches Masterpasswort verwendet, ...falls jemand mein Geheimnis knacken möchte ;-) Freue mich auf Rückmeldungen! Gruß Christian
participants (1)
-
Christian Baier