Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
WhoDat — Pivotable Reverse WhoIs / PDNS Fusion mit Registrant Tracking & Alarmierung plus API für automatisierte Abfragen (JSON/CSV/TXT) | Kitploit
Tools/GitHubGitHub/mitrecnd/whodat
OSINT (Open-Source-Intelligence)AufklärungDatenexfiltrationInformationsbeschaffungBedrohungsanalyseAPI-SicherheitDNS-AnalyseLog-AnalyseArchived
GitHubmitrecnd/whodat

WhoDat

Pivotable Reverse WhoIs / PDNS Fusion mit Registrant Tracking & Alarmierung plus API für automatisierte Abfragen (JSON/CSV/TXT)

Repository anzeigen
15938vor 4 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

WhoDat-Projekt

HINWEIS: Während der Entwicklung von PyDat 5 hat sich die interne Ausrichtung geändert, was zur Einstellung des PyDat-Projekts führte. Obwohl ein Großteil der Arbeit zur Fertigstellung der Funktionen von PyDat 5 erledigt wurde, sind einige Fähigkeiten noch nicht vollständig getestet.

Das WhoDat-Projekt ist eine Schnittstelle für whoisxmlapi-Daten oder beliebige Whois-Daten, die in ElasticSearch gespeichert sind. Es integriert Whois-Daten, aktuelle IP-Auflösungen und passives DNS. Neben einer interaktiven, pivotierbaren Anwendung für Analysten zur Recherche bietet es auch eine API, die eine Ausgabe im JSON-Format ermöglicht.

WhoDat wurde ursprünglich von Chris Clark geschrieben. Die ursprüngliche Implementierung ist in PHP und in diesem Repository unter dem Verzeichnis legacy_whodat verfügbar. Der Code wurde von Wesley Shields und Murad Khan in Python neu geschrieben und ist unter dem Verzeichnis pydat verfügbar.

Die PHP-Version bleibt für diejenigen, die sie ausführen möchten, erhalten, ist aber nicht so funktionsreich oder erweiterbar wie die Python-Implementierung und wird nicht unterstützt.

Weitere Informationen zur PHP-Implementierung finden Sie in der readme. Für weitere Informationen zur Python-Implementierung lesen Sie bitte weiter...

PyDat

pyDat ist eine Python-Implementierung von Chris Clark's WhoDat-Code. Es ist darauf ausgelegt, erweiterbarer zu sein und mehr Funktionen als die PHP-Implementierung zu bieten.

Voraussetzungen

pyDat ist eine Python 3.6+ Anwendung, die Folgendes benötigt:

  • ElasticSearch, das irgendwo installiert ist (Version 7.x wird unterstützt)
  • Python-Pakete (installiert über Setup-Skript)

Datenbefüllung

Um die ordnungsgemäße Befüllung der Datenbank zu unterstützen, wird ein Programm namens pydat-populator bereitgestellt, um die Daten automatisch zu befüllen. Beachten Sie, dass die Daten von whoisxmlapi nicht immer konsistent zu sein scheinen, daher sollte beim Importieren der Daten Vorsicht walten. Es müssen weitere Tests durchgeführt werden, um sicherzustellen, dass alle Daten korrekt importiert werden. Jeder, der seine Datenbank einrichtet, sollte die verfügbaren Flags des Skripts lesen, bevor er es ausführt, um sicherzustellen, dass es für sein Setup angepasst ist. Im Folgenden die Ausgabe von pydat-populator -h:

root@kitploit:~
usage: pydat-populator [-h] [-c CONFIG] [--debug] [--debug-level DEBUG_LEVEL]
                    [-x EXCLUDE [EXCLUDE ...]] [-n INCLUDE [INCLUDE ...]]
                    [--ignore-field-prefixes [IGNORE_FIELD_PREFIXES [IGNORE_FIELD_PREFIXES ...]]]
                    [-e EXTENSION] [-v] [-s] [--pipelines PIPELINES]
                    [--shipper-threads SHIPPER_THREADS]
                    [--fetcher-threads FETCHER_THREADS]
                    [--bulk-ship-size BULK_SHIP_SIZE]
                    [--bulk-fetch-size BULK_FETCH_SIZE]
                    [-u [ES_URI [ES_URI ...]]] [--es-user ES_USER]
                    [--es-pass ES_PASSWORD] [--cacert ES_CA_CERT]
                    [--es-disable-sniffing] [-p ES_INDEX_PREFIX]
                    [--rollover-size ES_ROLLOVER_DOCS] [--ask-pass]
                    [-r | --config-template-only | --clear-interrupted-flag]
                    [-f INGEST_FILE | -d INGEST_DIRECTORY] [-D INGEST_DAY]
                    [-o COMMENT]

optional arguments:
-h, --help            show this help message and exit
-c CONFIG, --config CONFIG
                        location of configuration file for
                        environmentparameter configuration (example yaml file
                        in /backend)
--debug               Enables debug logging
--debug-level DEBUG_LEVEL
                        Debug logging level [0-3] (default: 1)
-x EXCLUDE [EXCLUDE ...], --exclude EXCLUDE [EXCLUDE ...]
                        list of keys to exclude if updating entry
-n INCLUDE [INCLUDE ...], --include INCLUDE [INCLUDE ...]
                        list of keys to include if updating entry (mutually
                        exclusive to -x)
--ignore-field-prefixes [IGNORE_FIELD_PREFIXES [IGNORE_FIELD_PREFIXES ...]]
                        list of fields (in whois data) to ignore when
                        extracting and inserting into ElasticSearch
-e EXTENSION, --extension EXTENSION
                        When scanning for CSV files only parse files with
                        given extension (default: csv)
-v, --verbose         Be verbose
-s, --stats           Print out Stats after running
-r, --redo            Attempt to re-import a failed import or import more
                        data, uses stored metadata from previous run
--config-template-only
                        Configure the ElasticSearch template and then exit
--clear-interrupted-flag
                        Clear the interrupted flag, forcefully (NOT
                        RECOMMENDED)
-f INGEST_FILE, --file INGEST_FILE
                        Input CSV file
-d INGEST_DIRECTORY, --directory INGEST_DIRECTORY
                        Directory to recursively search for CSV files --
                        mutually exclusive to '-f' option
-D INGEST_DAY, --ingest-day INGEST_DAY
                        Day to use for metadata, in the format 'YYYY-MM-dd',
                        e.g., '2021-01-01'. Defaults to todays date, use
                        'YYYY-MM-00' to indicate a quarterly ingest, e.g.,
                        2021-04-00
-o COMMENT, --comment COMMENT
                        Comment to store with metadata

Performance Options:
--pipelines PIPELINES
                        Number of pipelines (default: 2)
--shipper-threads SHIPPER_THREADS
                        How many threads per pipeline to spawn to send bulk ES
                        messages. The larger your cluster, the more you can
                        increase this, defaults to 1
--fetcher-threads FETCHER_THREADS
                        How many threads to spawn to search ES. The larger
                        your cluster, the more you can increase this, defaults
                        to 2
--bulk-ship-size BULK_SHIP_SIZE
                        Size of Bulk Elasticsearch Requests (default: 10)
--bulk-fetch-size BULK_FETCH_SIZE
                        Number of documents to search for at a time (default:
                        50), note that this will be multiplied by the number
                        of indices you have, e.g., if you have 10
                        pydat-<number> indices it results in a request for 500
                        documents

Elasticsearch Options:
-u [ES_URI [ES_URI ...]], --es-uri [ES_URI [ES_URI ...]]
                        Location(s) of ElasticSearch Server (e.g.,
                        foo.server.com:9200) Can take multiple endpoints
--es-user ES_USER     Username for ElasticSearch when Basic Auth is enabled
--es-pass ES_PASSWORD
                        Password for ElasticSearch when Basic Auth is enabled
--cacert ES_CA_CERT   Path to a CA Certicate bundle to enable https support
--es-disable-sniffing
                        Disable ES sniffing, useful when ssl
                        hostnameverification is not working properly
-p ES_INDEX_PREFIX, --index-prefix ES_INDEX_PREFIX
                        Index prefix to use in ElasticSearch (default: pydat)
--rollover-size ES_ROLLOVER_DOCS
                        Set the number of documents after which point a new
                        index should be created, defaults to 50 million, note
                        that this is fuzzy since the index count isn't
                        continuously updated, so should be reasonably below 2
                        billion per ES shard and should take your ES
                        configuration into consideration
--ask-pass            Prompt for ElasticSearch password

Beachten Sie, dass beim Hinzufügen einer neuen Version von Daten zur Datenbank entweder das -x-Flag zum Ausschließen bestimmter Felder, die für die Änderungsverfolgung nicht wichtig sind, oder das -n-Flag zum Einschließen bestimmter Felder, die einer Prüfung unterliegen, verwendet werden sollte. Dadurch wird die Datenmenge, die zwischen den Versionen gespeichert wird, erheblich reduziert. Sie können entweder -x oder -n verwenden, nicht beide gleichzeitig, können aber dasjenige auswählen, das für Ihre Umgebung am besten geeignet ist. Wenn Sie beispielsweise tägliche Aktualisierungen erhalten, könnten Sie entscheiden, dass Sie für tägliche Aktualisierungen nur daran interessiert sind, ob sich die contactEmail ändert, aber vierteljährlich möchten Sie vielleicht nur bestimmte Felder ausschließen, die Sie nicht für wichtig halten.

Konfigurationsdatei

Um Zeit durch wiederholte Flag-Nutzung zu sparen, akzeptiert pydat-populator eine Konfigurationsdatei. Bitte sehen Sie sich die Beispielkonfiguration an, um ein Beispiel für die Erstellung einer Konfigurationsdatei zu erhalten.

pyDat ausführen

pyDat liefert selbst keine Daten. Sie müssen Ihre eigenen Whois-Daten in einem ElasticSearch-Datenspeicher bereitstellen.

ElasticSearch mit whoisxmlapi-Daten befüllen (Ubuntu 20.04 LTS)

  • Installieren Sie ElasticSearch. Die Verwendung von Docker ist der einfachste Mechanismus
  • Laden Sie den neuesten getrimmten (kleinstmöglichen) vierteljährlichen DB-Dump von whoisxmlapi herunter.
  • Extrahieren Sie die CSV-Dateien.
  • Verwenden Sie das enthaltene Programm, wenn das Paket installiert ist:
root@kitploit:~
pydat-populator -u localhost:9200 -f ~/whois/data/1.csv -v -s -x Audit_auditUpdatedDate,updatedDate,standardRegUpdatedDate,expiresDate,standardRegExpiresDate

Installation

PyDat 5 ist eine geteilte Backend/Frontend-Anwendung, die Python Flask zur Bereitstellung einer REST-API und ReactJS für eine interaktive Weboberfläche verwendet. Der einfachste Weg, die App zu verwenden, ist, ein Docker-Image zu erstellen.

root@kitploit:~
cd pydat/
docker build -t mitrecnd/pydat:5

Das erstellte Image kompiliert und installiert die Frontend-Komponenten in das Backend, sodass die gesamte App bereitgestellt werden kann.

Die App kann dann durch Erstellen einer Deployment-Konfigurationsdatei und Verwendung von docker-compose bereitgestellt werden:

root@kitploit:~
version: '3'
root@kitploit:~
services:
    pydat:
        image: mitrecnd/pydat:5
        volumes:
            - "./config.py:/opt/pydat/config.py:ro"
        ports:
            - 127.0.0.1:8888:8888

Erstellen Sie eine Konfigurationsdatei, indem Sie die Datei config_example.py als config.py in dasselbe Verzeichnis wie die Datei docker-compose.yml kopieren.

Das Python-Backend kann auch mit pip installiert werden. Dies ist nützlich, wenn Sie die Datenbefüllungsfunktion nativ ausführen möchten. Beachten Sie, dass dies keine Frontend-Komponenten enthält, da diese nicht vorkompiliert geliefert werden. Lesen Sie das dockerfile, wenn Sie das Frontend manuell kompilieren und installieren möchten.

root@kitploit:~
cd pydat/backend/
pip install ./

Durch die Installation des Pakets erhalten Sie Zugriff auf das oben referenzierte Programm pydat-populator.

pyDat API

PyDat 5 führt eine aktualisierte REST-API ein, behält aber einen Satz von v1-API-Endpunkten bei, um die Ausgabe anzunähern, die von Pydat 4 zurückgegeben würde. Aufgrund einiger struktureller Änderungen zwischen pyDat 4 und 5 wird die Ausgabe nicht exakt gleich sein.

Pydat v1 Endpunkte

Die folgenden Endpunkte werden bereitgestellt:

root@kitploit:~
api/v1/metadata/
root@kitploit:~
api/v1/metadata/<version>/

Der Metadaten-Endpunkt gibt Metadaten zu den in der Datenbank enthaltenen Daten zurück. Durch Angabe einer Version werden Metadaten für diese spezifische Version zurückgegeben.

root@kitploit:~
api/v1/domain/<domainName>/
root@kitploit:~
api/v1/domain/<domainName>/latest/
api/v1/domain/<domainName>/<version>/
api/v1/domain/<domainName>/<version1>/<version2>/
api/v1/domain/<domainName>/diff/<version1>/<version2>/

Der Domain-Endpunkt ermöglicht es Ihnen, Informationen zu einem bestimmten Domainnamen abzurufen. Standardmäßig werden Informationen für jede Version einer Domain zurückgegeben, die in der Datenbank gefunden wird. Sie können weitere Informationen angeben, um spezifische Versionen von Domain-Informationen zu erhalten oder den neuesten Eintrag abzurufen. Sie können auch einen Diff zwischen zwei Versionen einer Domain abrufen, um zu sehen, was sich geändert hat.

root@kitploit:~
api/v1/domains/<searchKey>/<searchValue>/
root@kitploit:~
api/v1/domains/<searchKey>/<searchValue>/latest/
api/v1/domains/<searchKey>/<searchValue>/<version>/
api/v1/domains/<searchKey>/<searchValue>/<version1>/<version2>/

Der Domains-Endpunkt ermöglicht es Ihnen, nach Domains basierend auf einem bestimmten Schlüssel zu suchen. Derzeit werden die folgenden Schlüssel unterstützt:

root@kitploit:~
domainName
root@kitploit:~
registrant_name
contactEmail
registrant_telephone

Ähnlich wie beim Domain-Endpunkt können Sie angeben, nach welchen Versionen der Daten Sie suchen.

Beispielabfragen:

root@kitploit:~
curl http://pydat.myorg.domain/ajax/domain/google.com/latest/
root@kitploit:~
curl http://pydat.myorg.domain/ajax/domains/domainName/google.com/

Erweiterter Syntax-Endpunkt

root@kitploit:~
api/v1/query

Dieser Endpunkt akzeptiert 4 Parameter über eine GET-Anfrage:

root@kitploit:~
query - Die Abfrage zur Suche in ES
size - Die Anzahl der zurückzugebenden Elemente (auch Seitengröße)
page - Die zurückzugebende Seite; durch Kombination mit size können Sie die Ergebnisse in Blöcken abrufen
unique - Versucht, den neuesten Eintrag pro domainName zurückzugeben

Hinweis zum unique-Parameter: Wenn Sie den unique-Parameter verwenden, beachten Sie, dass das Paging der Ergebnisse deaktiviert ist, der size-Parameter jedoch weiterhin zur Steuerung der Anzahl der zurückgegebenen Ergebnisse verwendet wird.

PyDat v2 Endpunkte

Die folgenden Endpunkte werden bereitgestellt:

root@kitploit:~
api/v2/metadata
root@kitploit:~
api/v2/metadata/<version>

Diese Endpunkte sind ähnlich wie ihre v1-Pendants, ihr Antwortformat unterscheidet sich jedoch.

root@kitploit:~
api/v2/resolve/<domain>

Dies ist ein neuer Endpunkt, der es ermöglicht, einen Domainnamen in IP-Adressen aufzulösen. Beachten Sie, dass diese Funktion vom Backend deaktiviert werden kann. Bitte rufen Sie den /settings-Endpunkt auf, um sicherzustellen, dass diese Funktion aktiviert ist, bevor Sie sie aufrufen.

root@kitploit:~
api/v2/domains/diff [POST]

Dieser Endpunkt ermöglicht es Ihnen, einen Diff zwischen zwei Versionen einer Domain abzurufen, um zu sehen, was sich geändert hat. Er erwartet eine JSON-Anfrage mit folgender Form:

root@kitploit:~
{
root@kitploit:~
    domain: "mydomain.example",
    version1: 1,
    version2: 2
}
root@kitploit:~
api/v2/domain [POST]

Dieser Endpunkt gibt Informationen für einen bestimmten Domainnamen zurück und erwartet eine JSON-Anfrage mit folgender Form:

root@kitploit:~
{
root@kitploit:~
    value: "mydomain.example",
    version: 1, # Optional
    chunk_size: 50, # Optional
    offset: 0 # Optional
}
root@kitploit:~
api/v2/query [POST]

Dieser Endpunkt unterstützt die erweiterte Abfragesyntax. Er erwartet eine JSON-Anfrage mit folgender Form:

root@kitploit:~
{
root@kitploit:~
    query: "myquery",
    chunk_size: 50, # Optional
    offset: 0, #Optional
    unique: false, # Optional
    sort_keys: [ # Optional
        "domainName",
        "registrant_name",
        "contactEmail",
        "standardRegCreatedDate",
        "registrant_telephone",
        "dataVersion",
        "_score",
    ]
}
root@kitploit:~
api/v2/info

Dieser Endpunkt liefert Gesundheitsinformationen über den Elastic-Cluster.

root@kitploit:~
api/v2/settings

Dieser Endpunkt wird hauptsächlich vom Frontend verwendet, um dynamisch zu bestimmen, welche Fähigkeiten von der Backend-Anwendung aktiviert sind.

Migration von PyDat 4 zu 5

Aufgrund struktureller Änderungen in der Art und Weise, wie Daten in Elastic gespeichert werden, ist pyDat 5 leider nicht abwärtskompatibel mit pydat 4. Das bedeutet, dass Daten neu in einen ElasticSearch-Cluster eingespeist werden müssen, um mit pyDat 5 verwendet zu werden.

Rechtliche Hinweise

pyDat ist urheberrechtlich geschützt durch The MITRE Corporation 2021.

Die PHP-Implementierung ist urheberrechtlich geschützt durch Chris Clark, 2013. Kontaktieren Sie ihn unter [email protected].

Die PHP- und Python-Versionen sind unter derselben Lizenz lizenziert.

pyDat ist freie Software: Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, weiterverbreiten und/oder modifizieren, entweder in der Version 3 der Lizenz oder (nach Ihrer Wahl) jeder späteren Version.

pyDat wird in der Hoffnung verteilt, dass es nützlich sein wird, aber OHNE JEGLICHE GEWÄHRLEISTUNG; ohne die stillschweigende Gewährleistung der MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Weitere Details finden Sie in der GNU General Public License.

Sie sollten eine Kopie der GNU General Public License zusammen mit pyDat erhalten haben. Falls nicht, siehe http://www.gnu.org/licenses/.

Freigegeben für die öffentliche Verbreitung; uneingeschränkte Verteilung 14-1633

Tool herunterladen