Skip to content

Commit 74db505

Browse files
authored
Add files via upload
0 parents  commit 74db505

File tree

7 files changed

+358
-0
lines changed

7 files changed

+358
-0
lines changed

GUI tests/create.py

+80
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import pymysql
2+
import requests
3+
import hashlib
4+
import tkinter
5+
import customtkinter
6+
from win10toast import ToastNotifier
7+
8+
customtkinter.set_appearance_mode("System") # Modes: system (default), light, dark
9+
customtkinter.set_default_color_theme("blue") # Themes: blue (default), dark-blue, green
10+
11+
createwin = customtkinter.CTk() # create CTk window like you do with the Tk window
12+
createwin.geometry("200x250")
13+
createwin.title("Benutzer erstellen")
14+
15+
username_inp = customtkinter.CTkEntry(master=createwin, placeholder_text="Benutzername")
16+
username_inp.pack(pady=10, padx=10)
17+
username_inp.place(relx=0.5, rely=0.3, anchor=tkinter.CENTER)
18+
19+
password_inp = customtkinter.CTkEntry(master=createwin, placeholder_text="Passwort")
20+
password_inp.pack(pady=10, padx=10)
21+
password_inp.place(relx=0.5, rely=0.5, anchor=tkinter.CENTER)
22+
23+
toast = ToastNotifier()
24+
25+
def create():
26+
#IP Adresse abrufen
27+
IPAddr = requests.get('https://api.ipify.org').text
28+
29+
#MySQL Login
30+
server = 'localhost'
31+
database = 'useraccounts'
32+
username = 'admin'
33+
password = 'password'
34+
35+
conn = pymysql.connect(host=server, user=username, password=password, database=database)
36+
cursor = conn.cursor()
37+
38+
#IP-Adresse auf Sperre überprüfen
39+
query = "SELECT ip FROM blacklist WHERE ip = %s"
40+
cursor.execute(query, (IPAddr,))
41+
result = cursor.fetchone()
42+
if result:
43+
lock=1
44+
else:
45+
lock=0
46+
47+
if lock==0:
48+
print("Benutzeraccount erstellen:")
49+
#SHA512 Wert generieren
50+
password_inp2 = hashlib.sha512(password_inp.get().encode()).hexdigest()
51+
52+
create_user = "insert into useraccounts (username, password) value ('{}', '{}')".format(username_inp.get(), password_inp2)
53+
cursor.execute(create_user)
54+
conn.commit()
55+
56+
query = "SELECT * FROM useraccounts WHERE username=%s AND password=%s"
57+
cursor.execute(query, (username_inp.get(), password_inp2))
58+
result = cursor.fetchone()
59+
60+
if result:
61+
print("Benutzer ",username_inp.get()," wurde erfolgreich erstellt")
62+
63+
toast.show_toast(
64+
"Erfolgreich",
65+
"Das Benutzerkonto wurde erfolgreich angelegt.",
66+
duration = 20,
67+
threaded = True,
68+
)
69+
70+
else:
71+
print("Irgendwas ist schief gegangen :(")
72+
73+
if lock==1:
74+
print("Du bist derzeit gesperrt")
75+
76+
77+
button = customtkinter.CTkButton(master=createwin, fg_color="green", text="Registrieren", command=create)
78+
button.place(relx=0.5, rely=0.7, anchor=tkinter.CENTER)
79+
80+
createwin.mainloop()

GUI tests/main_GUI.py

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import tkinter
2+
import customtkinter
3+
4+
customtkinter.set_appearance_mode("System") # Modes: system (default), light, dark
5+
customtkinter.set_default_color_theme("blue") # Themes: blue (default), dark-blue, green
6+
7+
app = customtkinter.CTk() # create CTk window like you do with the Tk window
8+
app.geometry("330x300")
9+
app.title("MySQL User Management")
10+
11+
def create():
12+
import create
13+
app.destroy()
14+
15+
def login():
16+
import login
17+
app.destroy()
18+
19+
def delete():
20+
import delete
21+
app.destroy()
22+
23+
def unlock():
24+
import unlock_ip
25+
app.destroy()
26+
27+
# Use CTkButton instead of tkinter Button
28+
button = customtkinter.CTkButton(master=app, text="Benutzer erstellen", command=create)
29+
button.place(relx=0.5, rely=0.1, anchor=tkinter.CENTER)
30+
button = customtkinter.CTkButton(master=app, text="Anmelden", command=login)
31+
button.place(relx=0.5, rely=0.25, anchor=tkinter.CENTER)
32+
button = customtkinter.CTkButton(master=app, fg_color="red", text="Benutzer löschen", command=delete)
33+
button.place(relx=0.5, rely=0.4, anchor=tkinter.CENTER)
34+
button = customtkinter.CTkButton(master=app, fg_color="green", text="IP-Entsperren", command=unlock)
35+
button.place(relx=0.5, rely=0.55, anchor=tkinter.CENTER)
36+
37+
label = customtkinter.CTkLabel(master=app, text="https://github.com/M4RC-X/")
38+
label.place(relx=0.5, rely=0.75, anchor=tkinter.CENTER)
39+
40+
41+
app.mainloop()

create.py

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import pymysql
2+
import requests
3+
import hashlib
4+
5+
#IP Adresse abrufen
6+
IPAddr = requests.get('https://api.ipify.org').text
7+
8+
#MySQL Login
9+
server = 'localhost'
10+
database = 'useraccounts'
11+
username = 'username'
12+
password = 'password'
13+
14+
conn = pymysql.connect(host=server, user=username, password=password, database=database)
15+
cursor = conn.cursor()
16+
17+
#IP-Adresse auf Sperre überprüfen
18+
query = "SELECT ip FROM blacklist WHERE ip = %s"
19+
cursor.execute(query, (IPAddr,))
20+
result = cursor.fetchone()
21+
if result:
22+
lock=1
23+
else:
24+
lock=0
25+
26+
if lock==0:
27+
print("Benutzeraccount erstellen:")
28+
username_inp = input("Benutzername: ")
29+
password_inp = input("Passwort: ")
30+
#SHA512 Wert generieren
31+
password_inp2 = hashlib.sha512(password_inp.encode()).hexdigest()
32+
33+
create_user = "insert into useraccounts (username, password) value ('{}', '{}')".format(username_inp, password_inp2)
34+
cursor.execute(create_user)
35+
conn.commit()
36+
37+
query = "SELECT * FROM useraccounts WHERE username=%s AND password=%s"
38+
cursor.execute(query, (username_inp, password_inp2))
39+
result = cursor.fetchone()
40+
41+
if result:
42+
print("Benutzer ",username_inp," wurde erfolgreich erstellt")
43+
else:
44+
print("Irgendwas ist schief gegangen :(")
45+
46+
if lock==1:
47+
print("Du bist derzeit gesperrt")

delete.py

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import pymysql
2+
import requests
3+
import hashlib
4+
5+
#IP Adresse abrufen
6+
IPAddr = requests.get('https://api.ipify.org').text
7+
8+
#MySQL Login
9+
server = 'localhost'
10+
database = 'useraccounts'
11+
username = 'username'
12+
password = 'password'
13+
14+
conn = pymysql.connect(host=server, user=username, password=password, database=database)
15+
cursor = conn.cursor()
16+
17+
#IP-Adresse auf Sperre überprüfen
18+
query = "SELECT ip FROM blacklist WHERE ip = %s"
19+
cursor.execute(query, (IPAddr,))
20+
result = cursor.fetchone()
21+
if result:
22+
lock=1
23+
else:
24+
lock=0
25+
26+
if lock==0:
27+
print("Benutzeraccount löschen:")
28+
username_inp = input("Benutzername: ")
29+
30+
query = "SELECT * FROM useraccounts WHERE username=%s"
31+
cursor.execute(query, (username_inp))
32+
result = cursor.fetchone()
33+
34+
if result:
35+
print("Sicher, dass du den Benutzer ",username_inp," wirklich löschen willst?")
36+
print("Wenn ja gib bitte dein Passwort ein")
37+
password_inp = input("Passwort: ")
38+
else:
39+
print("Dieser Benutzer existiert nicht!")
40+
41+
#SHA512 Wert generieren
42+
password_inp2 = hashlib.sha512(password_inp.encode()).hexdigest()
43+
44+
delete_user = 'DELETE FROM `useraccounts` WHERE username="{}" and password="{}"'.format(username_inp, password_inp2)
45+
cursor.execute(delete_user)
46+
conn.commit()
47+
48+
query = "SELECT * FROM useraccounts WHERE username=%s AND password=%s"
49+
cursor.execute(query, (username_inp, password_inp2))
50+
result = cursor.fetchone()
51+
52+
if result:
53+
print("Irgendwas ist schief gegangen :(")
54+
else:
55+
print("Benutzer ",username_inp," wurde erfolgreich gelöscht")
56+
57+
if lock==1:
58+
print("Du bist derzeit gesperrt")

login.py

+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import pymysql
2+
import requests
3+
import hashlib
4+
5+
#IP Adresse abrufen
6+
IPAddr = requests.get('https://api.ipify.org').text
7+
8+
#Variablen anlegen
9+
x = 0
10+
success = 0
11+
lock=0
12+
13+
#MySQL Login
14+
server = 'localhost'
15+
database = 'useraccounts'
16+
username = 'username'
17+
password = 'password'
18+
19+
conn = pymysql.connect(host=server, user=username, password=password, database=database)
20+
cursor = conn.cursor()
21+
22+
#IP-Adresse auf Sperre überprüfen
23+
query = "SELECT ip FROM blacklist WHERE ip = %s"
24+
cursor.execute(query, (IPAddr,))
25+
result = cursor.fetchone()
26+
if result:
27+
lock=1
28+
else:
29+
lock=0
30+
31+
#Loginversuche
32+
while x<3 and success == 0 and lock==0:
33+
username_inp = input("Benutzername: ")
34+
password_inp = input("Passwort: ")
35+
#SHA512 Wert generieren
36+
password_inp2 = hashlib.sha512(password_inp.encode()).hexdigest()
37+
38+
query = "SELECT * FROM useraccounts WHERE username=%s AND password=%s"
39+
cursor.execute(query, (username_inp, password_inp2))
40+
result = cursor.fetchone()
41+
42+
if result:
43+
success = 1
44+
else:
45+
#Hochzählung der Versuche bei falscher Eingabe
46+
x = x + 1
47+
print("Login-Daten falsch!")
48+
print("Noch",3-x,"Anmeldeversuche übrig!")
49+
50+
#Login erfolgreich
51+
if x<3 and lock==0:
52+
print("Anmeldung war erfolgreich!")
53+
54+
#Benutzer wird gesperrt (IP-Adresse wird auf die Blacklist geschrieben)
55+
elif x==3 and lock==0:
56+
sperren = "insert into blacklist (ip) value ('{}')".format(IPAddr)
57+
cursor.execute(sperren)
58+
conn.commit()
59+
60+
print("------------------------------------------")
61+
print("Du wurdest für 24 Stunden gesperrt!")
62+
print("Der Admin wird in kürze informiert.")
63+
#time.sleep(1)
64+
telegram_chat_id=YOUR_CHAT_ID
65+
telegram_bot_id='YOUR_BOT_ID'
66+
67+
r = requests.get('https://api.telegram.org/bot{}/sendMessage?chat_id={}&text=Ein Benutzer mit der IP-Adresse {} hat sich versucht unauthorisiert einzuloggen -- Bitte überprüfen'.format(telegram_bot_id, telegram_chat_id, IPAddr))
68+
69+
#Benutzer hat bereits eine Sperre und somit direkt keine berechtigung sich anzumelden
70+
else:
71+
print("Dein Zugang ist noch blockiert!")
72+
print("Versuche es morgen noch einmal!")
73+
74+
#Verbindung zur Datenbank wird wieder geschlossen
75+
conn.close()

main.py

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
print("Was willst du machen?")
2+
print("[1] Benutzer erstellen")
3+
print("[2] Anmelden")
4+
print("[3] Benutzer löschen")
5+
print("[4] IP-Adresse enstsperren")
6+
choice=int(input("Auswahl: "))
7+
8+
if choice==1: #Benutzer erstellen
9+
import create
10+
elif choice==2: #Anmelden
11+
import login
12+
elif choice==3: #Benutzer löschen
13+
import delete
14+
elif choice==4: #IP-Adresse entsperren
15+
import unlock_ip
16+
else:
17+
print("Ungültige Auswahl")

unlock_ip.py

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import pymysql
2+
import requests
3+
4+
#IP Adresse abrufen
5+
IPAddr = requests.get('https://api.ipify.org').text
6+
7+
#MySQL Login
8+
server = 'localhost'
9+
database = 'useraccounts'
10+
username = 'username'
11+
password = 'password'
12+
13+
telegram_chat_id=#YOUR_CHAT_ID#
14+
telegram_bot_id='YOUR_BOT_ID'
15+
16+
master="YOUT_MASTER_PASWWORD"
17+
18+
conn = pymysql.connect(host=server, user=username, password=password, database=database)
19+
cursor = conn.cursor()
20+
21+
#IP-Adresse auf Sperre überprüfen
22+
query = "SELECT ip FROM blacklist WHERE ip = %s"
23+
cursor.execute(query, (IPAddr,))
24+
result = cursor.fetchone()
25+
if result:
26+
print("Deine IP-Adresse ({}) ist derzeit gesperrt".format(IPAddr))
27+
print("Zum entsperren bitte das Masterpasswort eingeben")
28+
master_pw=input("Master-Passwort: ")
29+
if master_pw==master:
30+
unlock = 'DELETE FROM `blacklist` WHERE ip="{}"'.format(IPAddr)
31+
cursor.execute(unlock)
32+
conn.commit()
33+
print("Du wurdest entsperrt! :)")
34+
r = requests.get('https://api.telegram.org/bot{}/sendMessage?chat_id={}&text=Jemand hat mithilfe des Master-Passworts seine IP-Adresse ({}) entsperrt!'.format(telegram_bot_id, telegram_chat_id, IPAddr))
35+
else:
36+
print("Das Master-Passwort ist falsch!")
37+
r = requests.get('https://api.telegram.org/bot{}/sendMessage?chat_id={}&text=Ein Benutzer mit der IP-Adresse {} hat sich versucht als Admin anzumelden'.format(telegram_bot_id, telegram_chat_id, IPAddr))
38+
39+
else:
40+
print("Deine IP-Adresse ({}) ist nicht gesperrt".format(IPAddr))

0 commit comments

Comments
 (0)