Skip to content

MAkexander/BewerbungSecLabHM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bewerbung SecLab HM


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 typing bessere 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 logging schreiben
  • 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:


Meilenstein 1: Der Asynchrone Scanner (Netzwerk & Performance)

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-except Block für ConnectTimeout oder HTTPStatusError, 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“.

Meilenstein 2: Identity-Logik & Mock-Verzeichnis (Integration)

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 Dataclass namens User, die Felder wie username, email und assigned_mfa_method hat.
  • 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".

Meilenstein 3: Security-Validation & JWT (Security-Mindset)

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 nur print() zu nutzen.
  • Ziel-Output: Eine Konsolenausgabe wie: WARNING: Token for User 'admin' is expired! Access denied.

About

Einarbeitung in moderne Python-Konzepte: Asynchrone Programmierung (asyncio), Context Manager und effizientes Ressourcenmanagement mit HTTPX

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages