
أداة Python متعددة الخيوط للاستعلام عن FOFA API، واستخراج الحقول المخصصة (IP، المنفذ، الشهادة، TLS، إلخ)، وإزالة تكرار النتائج، واستئناف عمليات البحث المتقطعة.
أداة Python متعددة الخيوط وقوية للاستعلام عن واجهة FOFA (Fofa.so) API، واستخراج الحقول المحددة، وحفظ النتائج الفريدة بتنسيق ذكي.
ip, port, title, cert.*, tls.*, …)domains_*.txt, ips_*.txt)list يعرض جميع الحقول الصالحة)raw_input – قابل للنقل بسهولة إلى Python 3)requestsثبّت التبعية:
pip install requests
🔧 الإعداد
API_KEY = "PUT UR TOKEN HERE"
import os
API_KEY = os.getenv("FOFA_API_KEY", "your_default_key")
🚀 الاستخدام
شغّل السكربت:
python fofa_searcher.py
ستظهر لك مطالبات تفاعلية:
[?] Enter FOFA query: domain="example.com"
[?] Enter max page to scrape [Default: 1]: 5
تعرض كل صفحة ما يصل إلى SIZE_DEFAULT نتيجة.
[?] Enter fields [Default: host,ip,port]: host,ip,port,title,cert.sn
اكتب list لرؤية جميع الحقول الصالحة (الأساسية، الشهادة، TLS).
يتم حفظ جميع النتائج في OUTPUT_DIR باسم ملف وصفي، مثل: results/domains_example_com_20250315_143022.txt
📂 أمثلة على المخرجات
حقل واحد – بتسمية واضحة:
IP: 93.184.216.34
Port: 443
Title: Example Domain
حقول متعددة – تنسيق مضغوط:
93.184.216.34 | Port:443 | [Example Domain] | {US}
حقول الشهادة / TLS – تسميات واضحة:
Cert Serial Number: 01:23:45:...
TLS version: TLSv1.2
🧩 الحقول الصالحة
تدعم الأداة جميع حقول FOFA الشائعة بالإضافة إلى حقول الشهادة (cert.) وTLS (tls.).
الحقول الأساسية (قائمة جزئية)
ip, port, protocol, base_protocol, host, domain, title, server, country, region, city, os, asn, org, banner, header, body, cname, icp, jarm, icon, fid, status_code, product
حقول الشهادة
cert, cert.sn, cert.not_after, cert.not_before, cert.domain, cert.subject.org, cert.subject.cn, cert.issuer.org, cert.issuer.cn, cert.is_valid, cert.is_match, cert.is_equal
حقول TLS
tls.version, tls.ja3s
اكتب list أثناء مطالبة الحقول لرؤيتها جميعًا.
⚙️ متغيرات الإعداد (داخل السكربت)
المتغير الافتراضي الوصف CONCURRENT_THREADS 10 عدد طلبات الصفحات المتوازية SIZE_DEFAULT 100 النتائج في كل صفحة (الحد الأقصى المسموح به في FOFA) OUTPUT_DIR results المجلد الذي تُحفظ فيه ملفات المخرجات
📝 ملاحظات مهمة
· يستخدم السكربت en.fofa.info كنقطة نهاية API. · تعتمد إزالة التكرار على قيمة الحقل الأول (مثل IP أو domain) وهي غير حساسة لحالة الأحرف. · يتم اقتطاع السلاسل الطويلة (العناوين واللافتات والترويسات) في المخرجات لسهولة القراءة. · إذا أوقفت السكربت (Ctrl+C)، فإنه يخرج بسلاسة. · يستخدم السكربت حاليًا raw_input الخاص بـ Python 2. للتشغيل مع Python 3، استبدل raw_input بـ input واضبط عبارات الطباعة (print).
❗ استكشاف الأخطاء وإصلاحها
| المشكلة | الحل |
|---|---|
| API_KEY غير مضبوط | عدّل السكربت وأضف مفتاحك. |
📄 الترخيص
رخصة MIT – مجانية الاستخدام والتعديل لاحتياجات الاستطلاع الخاصة بك. ملاحظة: استخدام FOFA API يخضع لشروط خدمة FOFA.
🙌 شكر وتقدير
أُعدت لمحرك بحث FOFA – منصة قوية للبحث في إنترنت الأشياء والأصول.
صيدًا سعيدًا! 🔍
| حقول غير صالحة | شغّل السكربت واكتب list لرؤية الحقول المسموح بها. |
| لا توجد نتائج | تحقق من صيغة استعلام FOFA ورصيد API. |
| ImportError: No module named requests | ثبّت requests باستخدام pip install requests. |
| UnicodeEncodeError | يعالج السكربت ترميز UTF‑8 بالفعل؛ تأكد أن طرفيتك تدعمه. |