Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
WhoDat — Pivotable Reverse WhoIs / PDNS Fusion مع تتبع المسجلين والتنبيهات بالإضافة إلى API للاستعلامات الآلية (JSON/CSV/TXT) | Kitploit
أدوات/GitHubGitHub/mitrecnd/whodat
الاستخبارات مفتوحة المصدر (OSINT)الاستطلاعتسريب البياناتجمع المعلوماتاستخبارات التهديداتأمن واجهات برمجة التطبيقاتتحليل DNSتحليل السجلاتArchived
GitHubmitrecnd/whodat

WhoDat

Pivotable Reverse WhoIs / PDNS Fusion مع تتبع المسجلين والتنبيهات بالإضافة إلى API للاستعلامات الآلية (JSON/CSV/TXT)

عرض المستودع
159386منذ 4 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

مشروع WhoDat

ملاحظة: خلال تطوير PyDat 5، تحولت الاتجاهات الداخلية مما أدى إلى تقاعد مشروع PyDat. على الرغم من إنجاز الكثير من العمل لإنهاء قدرات PyDat 5، إلا أن بعض القدرات لا تزال غير مختبرة بالكامل.

مشروع WhoDat هو واجهة لبيانات whoisxmlapi، أو أي بيانات whois موجودة في ElasticSearch. يدمج بيانات whois، وتحليلات IP الحالية، و DNS السلبي. بالإضافة إلى توفير تطبيق تفاعلي قابل للتحليل للمحللين لإجراء الأبحاث، فإنه يحتوي أيضًا على API يتيح الإخراج بتنسيق JSON.

WhoDat كتبه في الأصل Chris Clark. التنفيذ الأصلي بلغة PHP وهو متاح في هذا المستودع تحت مجلد legacy_whodat. أعيدت كتابة الكود من الصفر بواسطة Wesley Shields و Murad Khan بلغة Python، وهو متاح تحت مجلد pydat.

إصدار PHP متروك لمن يرغب في تشغيله، لكنه ليس كامل الميزات أو قابل للتوسع مثل تنفيذ Python، ولا يتم دعمه.

لمزيد من المعلومات حول تنفيذ PHP، يرجى الاطلاع على readme. لمزيد من المعلومات حول تنفيذ Python، تابع القراءة...

PyDat

pyDat هو تنفيذ Python لكود WhoDat الخاص بـ Chris Clark. تم تصميمه ليكون أكثر قابلية للتوسع ويمتلك ميزات أكثر من تنفيذ PHP.

المتطلبات الأساسية

pyDat هو تطبيق Python 3.6+ يتطلب ما يلي للتشغيل:

  • تثبيت ElasticSearch في مكان ما (الإصدار 7.x مدعوم)
  • حزم Python (مثبتة عبر سكريبت الإعداد)

تعبئة البيانات

للمساعدة في تعبئة قاعدة البيانات بشكل صحيح، يتم توفير برنامج يسمى pydat-populator لتعبئة البيانات تلقائيًا. لاحظ أن البيانات القادمة من whoisxmlapi لا تبدو دائمًا متسقة لذا يجب توخي الحذر عند استيراد البيانات. هناك حاجة إلى مزيد من الاختبار لضمان استيراد جميع البيانات بشكل صحيح. يجب على أي شخص يقوم بإعداد قاعدة البيانات قراءة العلامات المتاحة للبرنامج النصي قبل تشغيله للتأكد من ضبطه ليناسب إعداده. فيما يلي مخرجات 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

لاحظ أنه عند إضافة إصدار جديد من البيانات إلى قاعدة البيانات، يجب استخدام إما العلم -x لاستبعاد بعض الحقول غير المهمة لتتبع التغييرات، أو العلم -n لتضمين حقول محددة تخضع للتدقيق. سيؤدي ذلك إلى تقليل كمية البيانات المخزنة بين الإصدارات بشكل كبير. يمكنك استخدام إما -x أو -n فقط وليس كليهما في نفس الوقت، ولكن يمكنك اختيار ما يناسب بيئتك. على سبيل المثال، إذا كنت تحصل على تحديثات يومية، فقد تقرر أنه بالنسبة للتحديثات اليومية تهتم فقط بتغيير contactEmail، ولكن كل ربع سنة قد ترغب بدلاً من ذلك في استبعاد بعض الحقول التي لا تراها مهمة.

ملف التكوين

لتوفير الوقت في استخدام العلامات المتكررة، يقبل pydat-populator ملف تكوين. يرجى الاطلاع على example config للحصول على مثال حول كيفية إنشاء ملف تكوين.

تشغيل pyDat

لا يوفر pyDat أي بيانات بمفرده. يجب عليك توفير بيانات whois الخاصة بك في مخزن بيانات ElasticSearch.

تعبئة ElasticSearch ببيانات whoisxmlapi (Ubuntu 20.04 LTS)

  • قم بتثبيت ElasticSearch. استخدام Docker هي أسهل آلية
  • قم بتحميل أحدث تفريغ ربع سنوي لقاعدة بيانات whoisxmlapi (الأصغر قدر الإمكان).
  • استخرج ملفات csv.
  • استخدم البرنامج المضمن عند تثبيت الحزمة:
root@kitploit:~
pydat-populator -u localhost:9200 -f ~/whois/data/1.csv -v -s -x Audit_auditUpdatedDate,updatedDate,standardRegUpdatedDate,expiresDate,standardRegExpiresDate

التثبيت

PyDat 5 هو تطبيق مقسم إلى واجهة خلفية وأمامية يستخدم Python Flask لتوفير REST API و ReactJS لتوفير واجهة ويب تفاعلية. أسهل طريقة لاستخدام التطبيق هي بناء صورة Docker.

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

ستقوم الصورة التي تم إنشاؤها بتجميع وتثبيت مكونات الواجهة الأمامية في الواجهة الخلفية مما يسمح بنشر التطبيق بالكامل.

يمكن بعد ذلك نشر التطبيق عن طريق إنشاء ملف تكوين النشر واستخدام docker-compose:

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

قم بإنشاء ملف تكوين عن طريق نسخ ملف config_example.py كـ config.py إلى نفس دليل ملف docker-compose.yml.

يمكن أيضًا تثبيت الواجهة الخلفية Python باستخدام pip. هذا مفيد إذا كنت ترغب في تشغيل قدرة تعبئة البيانات محليًا. لاحظ أن هذا لا يحتوي على أي مكونات أمامية لأنها لا تأتي مجمعة مسبقًا. راجع dockerfile إذا كنت ترغب في تجميع وتثبيت الواجهة الأمامية يدويًا.

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

سيؤدي تثبيت الحزمة إلى منحك الوصول إلى برنامج pydat-populator المذكور أعلاه.

واجهة برمجة تطبيقات pyDat API

يقدم PyDat 5 واجهة REST API محدثة لكنه يحافظ على مجموعة من نقاط النهاية v1 لتقريب المخرجات التي سيتم إرجاعها من PyDat 4. بسبب بعض التغييرات الهيكلية بين pyDat 4 و 5، لن تكون المخرجات متطابقة تمامًا.

نقاط نهاية Pydat v1

يتم عرض نقاط النهاية التالية:

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

تقوم نقطة نهاية metadata بإرجاع البيانات الوصفية المتاحة للبيانات في قاعدة البيانات. تحديد إصدار سيعيد البيانات الوصفية لذلك الإصدار المحدد.

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>/

تسمح لك نقطة نهاية domain بالحصول على معلومات حول اسم نطاق معين. افتراضيًا، سيعيد ذلك معلومات لأي إصدار من النطاق موجود في قاعدة البيانات. يمكنك تحديد المزيد من المعلومات للحصول على إصدارات محددة من معلومات النطاق أو الحصول على أحدث إدخال. يمكنك أيضًا الحصول على فرق بين إصدارين من النطاق لمعرفة ما تغير.

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>/

تسمح لك نقطة نهاية domains بالبحث عن النطاقات بناءً على مفتاح محدد. المفاتيح التالية مدعومة حاليًا:

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

على غرار نقطة نهاية domain، يمكنك تحديد إصدارات البيانات التي تبحث عنها.

أمثلة على الاستعلامات:

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

نقطة نهاية الصيغة المتقدمة

root@kitploit:~
api/v1/query

تأخذ نقطة النهاية هذه 4 معاملات عبر طلب GET:

root@kitploit:~
query - The query to search ES with
size - The number of elements to return (aka page size)
page - The page to return, combining this with size you can get the results in chunks
unique - Attempts to return the latest entry per domainName

ملاحظة حول المعامل unique: إذا كنت تستخدم المعامل unique، فاعلم أن ترقيم الصفحات معطل، لكن معامل size سيظل مستخدمًا للتحكم في عدد النتائج المرجعة.

نقاط نهاية PyDat v2

يتم عرض نقاط النهاية التالية:

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

نقاط النهاية هذه مشابهة لنظيراتها في v1 لكن تنسيق استجابتها يختلف.

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

هذه نقطة نهاية جديدة تسمح لك بحل اسم نطاق إلى عناوين IP. لاحظ أنه يمكن تعطيل هذه الإمكانية من خلال الواجهة الخلفية. يرجى الاتصال بنقطة نهاية /settings للتأكد من تمكين هذه الإمكانية قبل استدعائها.

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

تسمح لك نقطة النهاية هذه بالحصول على فرق بين إصدارين من نطاق لمعرفة ما تغير. تتوقع طلب JSON بالشكل التالي:

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

تعيد نقطة النهاية هذه معلومات لاسم نطاق معين وتتوقع طلب JSON بالشكل التالي:

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

تدعم نقطة النهاية هذه قدرة صيغة الاستعلام "المتقدمة". تتوقع طلب JSON بالشكل التالي:

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

توفر نقطة النهاية هذه معلومات صحية حول مجموعة Elastic.

root@kitploit:~
api/v2/settings

تستخدم نقطة النهاية هذه بشكل أساسي من قبل الواجهة الأمامية لتحديد الإمكانيات المفعلة ديناميكيًا من قبل تطبيق الواجهة الخلفية.

الترحيل من PyDat 4 إلى 5

لسوء الحظ، بسبب التغييرات الهيكلية في طريقة تخزين البيانات في Elastic، فإن pyDat 5 غير متوافق مع الإصدارات السابقة مع pyDat 4. هذا يعني أن البيانات ستحتاج إلى استيراد جديد في مجموعة ElasticSearch لاستخدامها مع pyDat 5.

أمور قانونية

pyDat حقوق الطبع والنشر لمؤسسة MITRE 2021.

تنفيذ PHP حقوق الطبع والنشر لـ Chris Clark، 2013. اتصل به على [email protected].

إصدارات PHP و Python مرخصة بموجب نفس الترخيص.

pyDat هو برنامج مجاني: يمكنك إعادة توزيعه و/أو تعديله بموجب شروط رخصة جنو العامة كما نشرتها مؤسسة البرمجيات الحرة، إما الإصدار 3 من الرخصة، أو (حسب اختيارك) أي إصدار لاحق.

يتم توزيع pyDat على أمل أن يكون مفيدًا، ولكن دون أي ضمان؛ حتى بدون الضمان الضمني للتسويق أو الملاءمة لغرض معين. راجع رخصة جنو العامة لمزيد من التفاصيل.

يجب أن تكون قد تلقيت نسخة من رخصة جنو العامة مع pyDat. إذا لم تكن كذلك، فانظر http://www.gnu.org/licenses/.

تمت الموافقة للإصدار العام؛ التوزيع غير المحدود 14-1633

تنزيل الأداة