Dieses Repository dient dem lernen von verschiedenen Python-Konzepten um auf ein "fortgeschrittenes" Niveau zu kommen. Dieses Repository ist als Sammlung verschiedener Versuche und Konzepte gedacht, die immer weiter wächst und dann zur Implementierung der Meilensteine auf fortgeschrittenem Niveau führt.
Eine Liste an Anforderungen und externen Modulen findet sich in requirements.txt, es ist dabei auf Python Version 3.14 ausgelegt.
Folgende Konzepte und Module habe ich dabei schon angeschaut:
- Wie kann ich mit
typingbessere Typ Annotationen schreiben - Was ist ein Generator, was ist ein Iterator und wie unterscheiden sie sich zusätlich von List compressions
- Context manager als Klasse und als Generator mit
contextlib.contextmanager - Asynchrone Programmierung mit
asyncio - Asynchrone HTTP Anfragen mit
httpx - Wie kann ich saubere Logs mit
loggingschreiben - Welche Stilvorgaben sind optimal
- Wie erstelle und verwalte ich requirements.txt
- Was ist ein nested dictionary
und habe damit am Ende einen Context manager geschrieben, der asynchrone HTTP Anfragen verwaltet und diesen für einen einfachen Scanner verwendet (async_http_session.py, in main())
Folgende Konzepte will ich noch anschauen:
- Was ist der Unterschied zwischen *args und **kwargs
- Wie erstelle ich optimale modules aus eigenen Klassen
- Generics
um damit folgende Meilensteine zu erreichen:
Ziel: Mehrere URLs gleichzeitig prüfen, ohne dass das Programm blockiert.
- Recherche-Keywords:
Python asyncio tutorial,httpx vs requests,python async context manager. - Umsetzungspunkte:
- Erstelle eine Liste mit 3–5 Test-URLs (z.B.
google.com,hm.edu,github.com). - Nutze
httpx.AsyncClient(), um die Header der Seiten abzurufen. - Fortgeschrittenen-Check: Implementiere ein
try-exceptBlock fürConnectTimeoutoderHTTPStatusError, damit dein Tool nicht abstürzt, wenn eine Seite offline ist. - Ziel-Output: Eine Liste/Dictionary, die zu jeder URL sagt: „Server: Apache“ oder „Header X-Frame-Options gesetzt: Ja/Nein“.
Ziel: Simulieren, wie man mit Benutzerdaten umgeht, die aus einem System wie LDAP oder Shibboleth kommen.
- Recherche-Keywords:
Python dictionary nested access,Python dataclasses tutorial,LDAP basic structure (DN, Attributes). - Umsetzungspunkte:
- Definiere eine
DataclassnamensUser, die Felder wieusername,emailundassigned_mfa_methodhat. - Erstelle eine Funktion
get_user_security_level(username), die in einem lokalen Dictionary (dein "Mock-LDAP") nachsieht. - Fortgeschrittenen-Check: Nutze Type Hinting (
-> str,: int), um zu definieren, welche Datentypen ein- und ausgehen. - Ziel-Output: Eine Funktion, die basierend auf dem User-Status entscheidet: "User darf sich mit Passwort einloggen" oder "User benötigt FIDO2/Passkey".
Ziel: Zeigen, dass du Daten nicht blind vertraust, sondern kryptografisch prüfst.
- Recherche-Keywords:
PyJWT tutorial,JWT claims (exp, iss, sub),Python logging module guide. - Umsetzungspunkte:
- Installiere
PyJWT(pip install pyjwt). - Schreibe eine Funktion, die einen "Dummy-Token" dekodiert.
- Wichtig: Baue eine Prüfung ein, die checkt, ob der Token abgelaufen ist (
exp-Claim). - Fortgeschrittenen-Check: Nutze das
logging-Modul (logging.info,logging.warning), um Fehler auszugeben, anstatt nurprint()zu nutzen. - Ziel-Output: Eine Konsolenausgabe wie:
WARNING: Token for User 'admin' is expired! Access denied.