check
This commit is contained in:
90
basic_setup/check_logins.py
Normal file
90
basic_setup/check_logins.py
Normal file
@@ -0,0 +1,90 @@
|
||||
#!/usr/bin/env python3
|
||||
import csv
|
||||
import imaplib
|
||||
import sys
|
||||
import time
|
||||
|
||||
# Konfiguration
|
||||
IMAP_SERVER = "secure.emailsrvr.com"
|
||||
IMAP_PORT = 993
|
||||
DELAY_SECONDS = 1 # Kurze Pause, um Rate-Limiting oder Fail2Ban zu vermeiden
|
||||
|
||||
def check_imap_login(email, password):
|
||||
try:
|
||||
# Verbindung zum IMAP-Server via SSL herstellen
|
||||
mail = imaplib.IMAP4_SSL(IMAP_SERVER, IMAP_PORT)
|
||||
mail.login(email, password)
|
||||
mail.logout()
|
||||
return True
|
||||
except imaplib.IMAP4.error:
|
||||
# Login fehlgeschlagen (falsches Passwort/User)
|
||||
return False
|
||||
except Exception as e:
|
||||
print(f" [!] Netzwerk- oder Serverfehler bei {email}: {e}")
|
||||
return False
|
||||
|
||||
def main(csv_filepath):
|
||||
erfolgreich = []
|
||||
fehlgeschlagen = []
|
||||
uebersprungen = []
|
||||
|
||||
try:
|
||||
with open(csv_filepath, mode='r', encoding='utf-8') as f:
|
||||
# Nutze csv.reader für sauberes Parsing der Kommas
|
||||
reader = csv.reader(f)
|
||||
for row_num, row in enumerate(reader, start=1):
|
||||
if not row:
|
||||
continue
|
||||
|
||||
email = row[0].strip()
|
||||
# Prüfen, ob ein zweites Feld (Passwort) existiert und nicht leer ist
|
||||
password = row[1].strip() if len(row) > 1 else ""
|
||||
|
||||
if not password:
|
||||
print(f"[{row_num}] Überspringe {email} (Kein Passwort)")
|
||||
uebersprungen.append(email)
|
||||
continue
|
||||
|
||||
print(f"[{row_num}] Prüfe {email}... ", end="", flush=True)
|
||||
|
||||
if check_imap_login(email, password):
|
||||
print("OK")
|
||||
erfolgreich.append(email)
|
||||
else:
|
||||
print("FEHLGESCHLAGEN")
|
||||
fehlgeschlagen.append(email)
|
||||
|
||||
# Kurze Pause einlegen, um den Mailserver nicht zu fluten
|
||||
time.sleep(DELAY_SECONDS)
|
||||
|
||||
except FileNotFoundError:
|
||||
print(f"\nFehler: Die Datei '{csv_filepath}' wurde nicht gefunden.")
|
||||
sys.exit(1)
|
||||
except Exception as e:
|
||||
print(f"\nEin unerwarteter Fehler ist aufgetreten: {e}")
|
||||
sys.exit(1)
|
||||
|
||||
# Ausgabe der Zusammenfassung
|
||||
print("\n" + "="*40)
|
||||
print("ZUSAMMENFASSUNG DER PRÜFUNG")
|
||||
print("="*40)
|
||||
|
||||
print(f"\nErfolgreich ({len(erfolgreich)}):")
|
||||
for e in erfolgreich:
|
||||
print(f" - {e}")
|
||||
|
||||
print(f"\nFehlgeschlagen ({len(fehlgeschlagen)}):")
|
||||
for e in fehlgeschlagen:
|
||||
print(f" - {e}")
|
||||
|
||||
print(f"\nÜbersprungen (kein Passwort) ({len(uebersprungen)}):")
|
||||
for e in uebersprungen:
|
||||
print(f" - {e}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(sys.argv) != 2:
|
||||
print("Verwendung: ./check_logins.py <pfad_zur_datei.csv>")
|
||||
sys.exit(1)
|
||||
|
||||
csv_file = sys.argv[1]
|
||||
main(csv_file)
|
||||
Reference in New Issue
Block a user