
WhoIs inversé pivotable / Fusion PDNS avec suivi et alertes des titulaires, plus API pour requêtes automatisées (JSON/CSV/TXT)
NOTE : Pendant le développement de PyDat 5, les opérations internes ont changé de direction, ce qui a conduit à l'abandon du projet PyDat. Bien qu'une grande partie du travail ait été réalisée pour finaliser les capacités de PyDat 5, certaines capacités n'ont pas encore été entièrement testées.
Le projet WhoDat est une interface pour les données whoisxmlapi, ou toute donnée whois stockée dans ElasticSearch. Il intègre les données whois, les résolutions IP actuelles et le DNS passif. En plus de fournir une application interactive et pivotable permettant aux analystes d'effectuer des recherches, il dispose également d'une API qui permet une sortie au format JSON.
WhoDat a été initialement écrit par Chris Clark. L'implémentation originale est en PHP et est disponible dans ce dépôt sous le répertoire legacy_whodat. Le code a été réécrit à partir de zéro par Wesley Shields et Murad Khan en Python, et est disponible sous le répertoire pydat.
La version PHP est laissée pour ceux qui souhaitent l'exécuter, mais elle n'est pas aussi complète en fonctionnalités ou extensible que l'implémentation Python, et n'est pas supportée.
Pour plus d'informations sur l'implémentation PHP, veuillez consulter le readme. Pour plus d'informations sur l'implémentation Python, continuez à lire...
pyDat est une implémentation Python du code WhoDat de Chris Clark. Elle est conçue pour être plus extensible et possède plus de fonctionnalités que l'implémentation PHP.
pyDat est une application Python 3.6+ qui nécessite les éléments suivants pour fonctionner :
Pour aider à peupler correctement la base de données, un programme appelé pydat-populator est fourni pour auto-peupler les données.
Notez que les données provenant de whoisxmlapi ne semblent pas toujours cohérentes, donc des précautions doivent être prises lors de l'ingestion des données.
D'autres tests doivent être effectués pour s'assurer que toutes les données sont correctement ingérées.
Quiconque met en place sa base de données doit lire les options disponibles du script avant de l'exécuter pour s'assurer de l'avoir adapté à sa configuration.
Voici la sortie de pydat-populator -h :
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