Suche nach regulären Ausdrücken in Netzwerk-Dumps

Wer sich schon immer mal gefragt hat, wie man in Netzwerk-Dumps (*.pcap) nach Vorkommen von gewissen Zeichen suchen kann, dem sei hier ngrep (Link) empfohlen. ngrep ist in den Standard-Linux-Quellen enthalten und kann mit

sudo apt install ngrep

installiert werden.

Zur Suche nach einem Ausdruck verwendet man dann den Parameter -w, soll die Suche case-insensitiv sein zustätzlich -i. Soll das Ganze auf einem live-dump passieren, dann gibt man mit  -d das Netwzerk-Interface an (oder any für alle). Soll ein existentes pcap eingelesen werden, nutzt man den Schalter -I mit dem Pfad zur Datei. ngrep gibt dann alle Pakete aus, in denen der gesuchte Begriff vorkommt.

Beispiel für die Suche nach „html“ in einem existenten *.pcap-File:

ngrep -wi "html" -I /tmp/mydump.pcap

Nach Hex-Werten suchen

Eine sehr hilfreiche Funktion ist die Suche nach Hex-Werten. So ist es mit ngrep ein leichtes, beispielsweise nach Magic Numbers zu suchen. Für die Suche nach Hex-Werten verwendet man den Schalter -X, soll die Ausgabe der Pakete zusätzlich zu ASCII auch in Hex erfolgen, hilft der Schalter -x. Die Suche nach den Magic Number 0x0045 (Beginn eines IP-Pakets) sieht dann folgendermaßen aus.

ngrep -xX 0045 -I /tmp/mydump.dmp

Für mehr hilfreiche Funktionen hilft dann wie immer

man ngrep

Nutzung von pip hinter einem (SSL)-Proxy

Manchmal kann es nicht umgangen werden, dass man seine Verbindung ins Internet über einen Proxy herstellen muss, hier seien als Beispiel Firmennetzwerke genannt. Transparente Proxies stellen kein Problem dar, Proxys mit manueller Konfiguration dagegen doch eher. Da pip nicht die Standard-Proxyeinstellungen des Systems übernimmt, muss man der Paketverwaltung diese manuell mitteilen oder – noch besser – in den Systemeinstellungen hinterlegen.

Manuelle Angabe des Proxy

Hier kommt es jetzt drauf an, ob es sich um einen anonymen Proxy oder einen mit Authentifizierung handelt. Der pip-Aufruf lautet in jedem Fall

pip install <paketname> --proxy <proxyip:port>

Bei Proxy ohne Authentifizierung gibt man einfach die Adresse – wird kein Standardport genutzt zusätzlich den Port – an.

pip install whoosh --proxy http://mein.proxy.com:8080

Bei proxy mit Authentifizierung muss der Nutzername und das Passwort getrennt mit Doppelpunkt und angezeigt durch ein @ der Adresse nach dem Protokoll vorangestellt werden.

pip install whoosh --proxy http://benutzer:passwort@mein.proxy.com:8080

Proxy in den Systemeinstellungen hinterlegen

Wenn der Proxy nicht nur im Ausnahmefall genutzt wird sondern dauerhaft, dann macht es Sinn diesen in den Systemeinstellungen zu hinterlegen.

Linux

Unter Linux nutzt man den „export“-Befehl.

Je nachdem ob es sich um einen http- oder https-proxy handelt:

export http_proxy=http://benutzer:passwort@mein.proxy.com:8080

bzw.

export https_proxy=http://benutzer:passwort@mein.proxy.com:8080

Windows

Unter Windows trägt man die jeweilige Variable in den Systemvariablen ein (System -> Erweiterte Systemeinstellungen -> Umgebungsvariablen).

Nun sollte der Aufruf bei Verbindung über einen Proxy auch ohne die explizite Angabe via –proxy funktionieren.

Vorgehen bei SSL-Fehler

Gibt die Kommandozeile bei Verwendung eines https-Proxy mit MITM-Interception bei der Nutzung von pip eine SSL-Exception zurück, dann muss das Zertifikat von Hand angegeben werden. Dies geschieht durch das Anfügen von –cert an den pip-Befehl.

pip install whoosh --cert <Pfad-zum-Zertifikat>

Es muss der Pfad zu einer .pem-Datei angegeben werden, die das Zertifikat enthält. Zum Erstellen einer solchen gibt’s hier demnächst noch einen Quicktipp.

Der fertige Befehl sieht dann so aus:

pip install --cert ~/certs/thecert.pem

Alternativ kann man den Pfad auch in die pip-Configdatei schreiben, diese liegt unter Linux in ~/.pip/pip.conf und unter Windows in %APPDATA%\pip\pip.ini. Sollte die Datei nicht vorhanden sein, muss sie zuerst erstellt werden (Berechtigungen in Linux nicht vergessen!).

In dieser Datei legt man dann eine section [global] an und trägt dort mit cert = den Wert zur pem-Datei ein.


[global]

cert = /etc/cert/mycert.pem

Jetzt kann pip wie weiter oben beschrieben genutzt werden.

Kompression von PDFs

Manchmal sind PDFs einfach zu groß. Sei es weil die E-Mail nicht akzeptiert wird oder das Bewerbungsportal nur eine gewisse Größe akzeptiert.

Mit Ghostscript (bei den meisten Linux-Distributionen bereits installiert) ist es möglich ein PDF zu komprimieren. Bei mir hat sich folgende Kompression bewährt:

 gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH -sOutputFile=foo-compressed.pdf foo.pdf