Python: Eine Passwortmatrix generieren
Ein Beispiel Pythonskript für eine Passwortmatrix.
import sys
import random
import kakuriyo
class PasswordMatrix:
def __init__(self):
self.alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!"§$%&/()=?+#-.,*|'
self.matrix = []
def createPasswordMatrix(self, char_length = 3):
for _ in range(7):
self.matrix.append([[] for _ in range(10)])
for n in range(7):
for m in range(10):
self.matrix[n][m] = self.getCharacters(char_length)
def accessMatrix(self, row, column):
return self.matrix[row][column]
def printPasswordMatrix(self):
print(self.matrix)
def getCharacters(self, length):
chars = ''
for n in range(length):
chars += self.alphabet[(random.randint(0,len(self.alphabet)-1))]
return chars
def calculateRowIndex(self, word):
return len(word)-4
def calculateColumnIndex(self, char):
self.charColumn = ['abc','def','ghi','jkl','mno','pqr','stu','vwx','yz-','!?']
for n in range(len(self.charColumn)):
if char in self.charColumn[n]:
return n
def savePasswordMatrix(self, path):
with open(path,'w') as file:
for n in range(len(self.matrix)):
for m in range(len(self.matrix[n])):
if m == len(self.matrix[n])-1:
file.write(self.matrix[n][m])
else:
file.write(self.matrix[n][m] + ' ')
file.write('\n')
def loadPasswordMatrix(self, path):
for _ in range(7):
self.matrix.append([[] for _ in range(10)])
lines = []
with open(path, 'r') as file:
data = file.read()
lines = data.split('\n')
for n in range(len(self.matrix)):
self.matrix[n] = lines[n].split(' ')
def getPassword(self, word):
if len(word) < 4:
print('use only a wordlength between 4 and 10.')
return
elif not word.islower():
print('use only lower written words')
return
else:
row = self.calculateRowIndex(word)
password = ''
for n in range(len(word)):
col = self.calculateColumnIndex(word[n])
password += self.accessMatrix(row, col)
return password
if __name__ == '__main__':
if len(sys.argv) == 1:
print('Usage')
print('-s <path>')
print(' saves a generated passwordmatrix to the specific path')
print('-l <path for passwordmatrix> -g <word>')
print(' load a passwordmatrix and generates a password from the <word>')
elif len(sys.argv) == 3:
if sys.argv[1] == '-s' and len(sys.argv[2]) > 0:
p = PasswordMatrix()
p.createPasswordMatrix()
p.savePasswordMatrix(sys.argv[2])
print(f'Passwordmatrix successful saved: {sys.argv[2]}')
elif len(sys.argv) == 5:
if sys.argv[1] == '-l' and len(sys.argv[2]) > 0 and sys.argv[3] == '-g' and len(sys.argv[4]) > 0:
p = PasswordMatrix()
p.loadPasswordMatrix(sys.argv[2])
pw = p.getPassword(sys.argv[4])
print(f'Password for {sys.argv[4]} is: {pw}')
0
0
0.000
0 comments