Wie Sie asynchrone I/O-Operationen in Python umsetzen

Wir zeigen an der Umsetzung eines Hacking-Werkzeugs, wie man mit Python Ein- und Ausgaben parallelisiert, damit I/O-Operationen schnell Ergebnisse liefern.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht

!!!

Lesezeit: 13 Min.
Von
  • Oliver Lau
Inhaltsverzeichnis

CPUs und I/O-Schnittstellen können noch so schnell sein: Wenn die Software nicht mitspielt, liegen teure Ressourcen brach. Abhilfe schaffen asynchrone I/O-Operationen. Damit muss ein Rechner nicht mehr tatenlos zusehen, bis er beispielsweise von einem Webdienst endlich die Antwort auf eine Anfrage erhält. Währenddessen kann er andere Dinge erledigen, etwa weitere Anfragen verschicken.

Ein Tool, das von asynchroner Verarbeitung profitieren würde, ist der bei Hackern beliebte, in C geschriebene Web-Content-Scanner Dirb (Dir Buster). Man lässt ihn auf einen Webserver los, um herauszufinden, auf welche URLs er antwortet. Dazu übergibt man Dirb Wortlisten, aus denen er URLs zusammenbaut und diese nacheinander anfragt.

Mehr zu Python und Java für Entwickler

Im Wort "nacheinander" liegt die Krux, denn Dirb schickt die nächste Anfrage erst dann los, wenn die Antwort zur vorherigen eingetroffen ist. In der Umlaufzeit von der Anfrage zur Antwort (Round-Trip Time, RTT) dreht das Programm Däumchen – und mit ihm der Hacker. In Python formuliert sähe das in etwa wie folgt aus: