-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGenerator.py
More file actions
181 lines (154 loc) · 6.34 KB
/
Generator.py
File metadata and controls
181 lines (154 loc) · 6.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
from time import time
import random as zufall
import tkinter as tk
from tkinter import ttk
import threading
import os
# Initialisierung
fragen_anzeigen = True
# Zufallszahlen Generation
zufall.seed()
# Listendefinition
werteliste = []
# Großbuchstaben Indizes 26-51
buchstaben = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
# Max.Index 10
sonderzeichen = ['!', '#', '$', '%', '&', '*', '+', ',', '-', '.', '/']
eingabefeld_1 = None
eingabefeld_2 = None
start = None
def ergaenze_passwörter(sicherheitsstufe, limit, ziffernlimit=0, sonderzeichenlimit=0, anzahl=1):
if not os.path.isfile("Passwörter.txt"):
with open("Passwörter.txt", "w") as datei:
pass
with open("Passwörter.txt", "r") as datei:
vorhandene_passwoerter = datei.readlines()
bereits_erstellt = len(vorhandene_passwoerter)
differenz = anzahl - bereits_erstellt
if differenz > 0:
passwort_count = 0
while passwort_count < differenz:
if sicherheitsstufe == '1':
passwort = passwort_niedrig(limit)
elif sicherheitsstufe == '2':
passwort = passwort_mittel(limit, ziffernlimit)
elif sicherheitsstufe == '3':
passwort = passwort_hoch(limit, ziffernlimit, sonderzeichenlimit)
print(passwort)
passwort_speicherung(passwort)
passwort_count += 1
else:
print("Es wurden bereits genügend Passwörter erstellt.")
def passwort_niedrig(limit):
werteliste.clear()
for _ in range(limit):
zufallsindex = zufall.randint(0, 51)
zufallswert = buchstaben[zufallsindex]
werteliste.append(zufallswert)
zufall.shuffle(werteliste)
passwort = ''.join(werteliste)
return passwort
def passwort_mittel(limit, ziffernlimit):
werteliste.clear()
for _ in range(limit):
zufallsindex = zufall.randint(0, 51)
zufallswert = buchstaben[zufallsindex]
werteliste.append(zufallswert)
for _ in range(ziffernlimit):
werteliste.append(str(zufall.randint(0, 9)))
zufall.shuffle(werteliste)
passwort = ''.join(werteliste)
return passwort
def passwort_hoch(limit, ziffernlimit, sonderzeichenlimit):
werteliste.clear()
for _ in range(limit):
zufallsindex = zufall.randint(0, 51)
zufallswert = buchstaben[zufallsindex]
werteliste.append(zufallswert)
for _ in range(ziffernlimit):
werteliste.append(str(zufall.randint(0, 9)))
for _ in range(sonderzeichenlimit):
zufallsindex = zufall.randint(0, 7)
zufallswert = sonderzeichen[zufallsindex]
werteliste.append(zufallswert)
zufall.shuffle(werteliste)
passwort = ''.join(werteliste)
return passwort
def passwort_speicherung(passwort):
with open("Passwörter.txt", "a") as datei:
datei.write(passwort + "\n")
def passwort_generieren(sicherheitsstufe, limit, ziffernlimit=0, sonderzeichenlimit=0, anzahl=1):
passwort_count = 0
while passwort_count < anzahl:
if sicherheitsstufe == '1':
passwort = passwort_niedrig(limit)
elif sicherheitsstufe == '2':
passwort = passwort_mittel(limit, ziffernlimit)
elif sicherheitsstufe == '3':
passwort = passwort_hoch(limit, ziffernlimit, sonderzeichenlimit)
print(passwort)
passwort_speicherung(passwort)
passwort_count += 1
def sicherheitslevel():
sicherheitsstufe = eingabefeld_1.get()
if sicherheitsstufe in ['1', '2', '3']:
if sicherheitsstufe == '1':
limit = 6
ziffernlimit = 0
sonderzeichenlimit = 0
print("Sie haben die niedrige Sicherheitsstufe gewählt.")
elif sicherheitsstufe == '2':
limit = 10
ziffernlimit = zufall.randint(2, 6)
sonderzeichenlimit = 0
print("Sie haben die mittlere Sicherheitsstufe gewählt.")
elif sicherheitsstufe == '3':
limit = 25
ziffernlimit = zufall.randint(2, 4)
sonderzeichenlimit = zufall.randint(2, 6)
print("Sie haben die hohe Sicherheitsstufe gewählt.")
eingabefeld_1.config(state='disabled') # Deaktiviere das Eingabefeld nach der Eingabe
eingabefeld_2.config(state='disabled') # Deaktiviere das Eingabefeld nach der Eingabe
start.config(state='disabled') # Deaktiviere den Start-Button nach der Eingabe
anzahl = int(eingabefeld_2.get())
ergaenze_passwörter(sicherheitsstufe, limit, ziffernlimit, sonderzeichenlimit, anzahl)
else:
print("Ungültige Eingabe. Bitte wählen Sie 1, 2 oder 3.")
def fenster():
global eingabefeld_1, eingabefeld_2, start
# Fenster erstellen
fenster = tk.Tk()
fenster.title("Password Manager")
# Fenstergröße festlegen
bildschirm_breite = fenster.winfo_screenwidth()
bildschirm_höhe = fenster.winfo_screenheight()
fensterbreite = int(bildschirm_breite * 0.6)
fensterhöhe = int(bildschirm_höhe * 0.6)
fenster.geometry(f"{fensterbreite}x{fensterhöhe}")
# Label-Stil definieren
label_style = ttk.Style()
label_style.configure("Label.TLabel", foreground="black", font=("Arial", 12), padding=10)
# Eingabefeld-Stil definieren
entry_style = ttk.Style()
entry_style.configure("Entry.TEntry", foreground="black", font=("Arial", 12), padding=10)
# Button-Stil definieren
button_style = ttk.Style()
button_style.configure("Button.TButton", foreground="black", font=("Arial", 12), padding=10)
# Komponenten hinzufügen
label1 = ttk.Label(fenster, text="Sicherheitsstufe (1, 2 oder 3):", style="Label.TLabel")
label1.pack(pady=10)
eingabefeld_1 = ttk.Entry(fenster, style="Entry.TEntry")
eingabefeld_1.pack()
label2 = ttk.Label(fenster, text="Anzahl der Passwörter:", style="Label.TLabel")
label2.pack(pady=10)
eingabefeld_2 = ttk.Entry(fenster, style="Entry.TEntry")
eingabefeld_2.pack()
# Button erstellen
start = ttk.Button(fenster, text="Passwortgenerator Starten", command=sicherheitslevel, style="Button.TButton")
start.pack()
# Fensterloop
fenster.mainloop()
# Hauptfunktion aufrufen
fenster()