OSIPs
Dieses Skript durchsucht rekursiv jede Datei in einem angegebenen Ordner, extrahiert jede IPv4- und IPv6-Adresse, filtert die öffentlichen IP-Adressen heraus und fragt diese IPs gegen TOR-Relays, den WhoIs-Dienst und den Ortungsdienst ab. Es erzeugt 4 Dateien: eine CSV-Datei und eine JSON-Datei mit allen Details der IP-Adressen, eine CSV-Datei mit einem Index aller gefundenen IP-Adressen und eine KML-Datei mit allen gesammelten Standorten.
Funktionen
- Analysiert eine beliebige Anzahl von Dateien in einem einzigen Durchlauf
- Kann auch für eine einzelne Eingabedatei ausgeführt werden
- Extrahiert alle eindeutigen gültigen IPv4- und IPv6-Adressen (korrekter Vergleich zweier Adressen, auch wenn sie unterschiedlich geschrieben sind)
- Sammelt öffentlich verfügbare WhoIs-Informationen für alle öffentlichen IP-Adressen
- Fragt alle öffentlichen IP-Adressen gegen TOR-Relays ab
- Sammelt geografische Standortinformationen für alle öffentlichen IP-Adressen
- Kann mit Kommandozeilenparametern im nicht-interaktiven Modus ausgeführt werden für einfache Integration in andere Skripte
- Kann ohne Parameter ausgeführt werden und die Eingabewerte können interaktiv bereitgestellt werden
- Ermöglicht dem Benutzer auszuwählen, welche Schritte durchgeführt oder ausgeschlossen werden sollen
- Gibt bei jedem ausgeführten Schritt ausführliche Informationen auf der Konsole aus
- Exportiert alle Details der IP-Adressen sowohl in eine CSV-Datei als auch in eine JSON-Datei
- Exportiert eine KML-Datei, die einfach auf einer Karte geladen werden kann
- Hält einen Index aller gefundenen IP-Adressen in einer separaten CSV-Datei für einfache Rückverfolgbarkeit
Voraussetzungen:
Python 3.9.x
Installation
Um Abhängigkeiten zu installieren, führe aus:
pip install -r requirements.txt
In eine ausführbare Datei kompilieren
pip install pyinstaller
pyinstaller --onefile osips.py
Verwendung
python osips.py [-h] [-F INPUTFOLDER] [-f INPUTFILE] [-p INPUTFILESPATTERN] [-o OUTPUTFILESNAME] [-t {y,n,Y,N}] [-w {y,n,Y,N}] [-l {y,n,Y,N}] [-locationEndpoint LOCATIONENDPOINT]
Interaktiv
python osips.py
Nicht-interaktiv
python osips.py --checkTor Y --checkWhoIs Y --checkLocations Y --inputFolder testFolder/ --inputFilesPattern * --outputFilesName test
Hilfe
python osips.py -h
Optionen
-h, --help
Zeigt die Hilfemeldung an und beendet das Programm
-F INPUTFOLDER, --inputFolder INPUTFOLDER
Ein Ordner mit Dateien, die IPs enthalten (Logdateien, E-Mail-Dateien, Textdateien usw.). Die IPs können IPv4 und/oder IPv6 sein und können sich überall in den Dateien befinden. Das Skript analysiert jede Datei im Ordner und sucht nach jeder IP.
-f INPUTFILE, --inputFile INPUTFILE
Verwenden Sie diese Option, um nur eine Datei anstelle eines Ordners mit Dateien zu scannen. Die Datei kann eine beliebige Textdatei sein, die IP-Adressen enthält (Logdateien, E-Mail-Dateien, Textdateien usw.).
-p INPUTFILESPATTERN, --inputFilesPattern INPUTFILESPATTERN
Geben Sie das Muster für die Dateien im Eingabeordner ein. Beispiel: * für alle Dateien, *.txt für Textdateien.
-o OUTPUTFILESNAME, --outputFilesName OUTPUTFILESNAME
Der Name für die Ausgabedateien, OHNE ERWEITERUNG. Es werden 4 verschiedene Dateien mit diesem Namen erstellt: eine CSV-Datei mit den IP-Details, eine Indexdatei mit den IP-Indizes, eine JSON-Datei mit den Details und eine KML-Datei mit den Standorten.
-t {y,n,Y,N}, --checkTor {y,n,Y,N}
Geben Sie an, ob Sie jede öffentliche IP-Adresse gegen die TOR-Relay-IP-Adressen überprüfen möchten
-w {y,n,Y,N}, --checkWhoIs {y,n,Y,N}
Geben Sie an, ob Sie WhoIs-Informationen für jede öffentliche IP-Adresse extrahieren möchten
-l {y,n,Y,N}, --checkLocations {y,n,Y,N}
Geben Sie an, ob Sie jede öffentliche IP-Adresse geocodieren und Standortinformationen mit extrahieren möchten
Anmerkungen
- Das Tool extrahiert IPv4-Adressen nur in Punkt-Dezimal-Notation (xxx.xxx.xxx.xxx). Es extrahiert keine IPv4-Adressen in dezimaler, oktaler oder hexadezimaler Notation aufgrund der hohen Rate an Fehlalarmen.
- Abhängig von der Anzahl der gefundenen öffentlichen IP-Adressen kann das Abfragen der Online-Dienste lange dauern. Wenn Sie mit vielen IP-Adressen umgehen, empfiehlt es sich, das Tool zunächst ohne Abfrage der Dienste auszuführen und nur die IP-Adressen zu extrahieren. Nachdem Sie das Extraktionsergebnis gesehen haben, können Sie eine Schätzung der Gesamtlaufzeit des Tools berechnen, wenn die Dienste abgefragt werden, und schließlich entscheiden, nur einen oder zwei der Dienste abzufragen.
- TOR-Relays werden zum Zeitpunkt der Ausführung des Tools überprüft. Da sich diese IPs ständig ändern, sind diese Informationen möglicherweise nicht sehr genau. Wenn für eine IP auch ein Datum identifiziert werden kann, sollte diese unter der Adresse https://metrics.torproject.org/exonerator.html gegen ExoneraTor geprüft werden.
- WhoIs-Informationen sowie Standortinformationen werden live von öffentlich verfügbaren Diensten abgerufen, daher werden die IP-Adressen an diese Dienste gesendet. Es gibt herunterladbare Datenbanken, mit denen Sie diese Informationen lokal sammeln könnten, aber diese Downloads sind nicht kostenlos und benötigen ständige Aktualisierungen. Dieses Tool ist nicht für die Arbeit mit lokalen Datenbanken ausgelegt.
- Der Standarddienst für die Standortermittlung ist https://reallyfreegeoip.org. Dies ist ein kostenloser Dienst ohne Einschränkungen, aber er ist möglicherweise nicht sehr genau. Sie können diesen Dienst durch einen anderen ersetzen, indem Sie den Parameter -locationEndpoint des Skripts verwenden. Sie können einen anderen Dienst bereitstellen, der eine IP-Adresse als Parameter akzeptiert und eine JSON-Antwort zurückgibt. Verwenden Sie als Platzhalter für die IP-Adressposition. Beispiele: https://ipapi.co//json, https://api.ipstack.com/?access_key=ACCESS_KEY, https://freeapi.robtex.com/ipquery/. Bitte beachten Sie, dass einige dieser anderen REST-Endpunkte möglicherweise nicht die erforderlichen Felder zurückgeben und dadurch die Logik des Skripts beeinträchtigen. In diesem Fall sollte die Methode RequestInfoFromRestEndpoint entsprechend geändert werden.
Danksagungen