جوهرة روبي حديثة غير متزامنة لشدان ، أول محرك بحث في العالم للأجهزة المتصلة بالإنترنت.
$ gem install shodanz
require "shodanz"
client = Shodanz . client . new ( key : "YOUR_API_KEY" )ملاحظة ، يمكنك أيضًا تعيين متغير البيئة
SHODAN_API_KEYبدلاً من تمرير مفتاح API كوسيطة عند إنشاء عميل.
يستخدم Shodanz Async لتوفير IO غير المتزامن. هذا لا يكسر أي نصوص موجودة باستخدام Shodanz ، ولكنه يوفر الآن المزيد من المرونة لكتابة المزيد من الأشياء الرائعة ، مثل هذا الكشف عن مصيبة غير متزامن:
ملاحظة لتشغيل أي طريقة shodanz بشكل غير متزامن ، ما عليك سوى لفها في كتلة
Async { ... }. لانتظار أي عملية غير متزامنة أخرى إلى الفنلندية في الكتلة ، اتصل.waitعليها.
يوفر API REST طرقًا للبحث في Shodan ، والبحث عن المضيفين ، والحصول على معلومات موجزة عن الاستعلامات ومجموعة متنوعة من أساليب المنفعة لجعل التطوير أسهل. ارجع إلى وثائق REST API لمزيد من الأفكار حول كيفية استخدامه.
البحث عن الأشياء ، هل يا؟
إرجاع جميع الخدمات التي تم العثور عليها على IP المضيف المحدد.
client . host ( "8.8.8.8" ) # Default
client . host ( "8.8.8.8" , history : true ) # All historical banners should be returned.
client . host ( "8.8.8.8" , minify : true ) # Only return the list of ports and the general host information, no banners. ابحث في Shodan باستخدام نفس بناء جملة الاستعلام مثل موقع الويب واستخدام الجوانب للحصول على معلومات موجزة لخصائص مختلفة.
client . host_search ( "mongodb" )
client . host_search ( "nginx" )
client . host_search ( "apache" , after : "1/12/16" )
client . host_search ( "ssh" , port : 22 , page : 1 )
client . host_search ( "ssh" , port : 22 , page : 2 )
client . host_search ( "ftp" , port : 21 , facets : { link : "Ethernet or modem" } ) تتصرف هذه الطريقة متطابقة مع host_search مع الفرق الوحيد الذي لا تُرجع هذه الطريقة أي نتائج مضيف ، فهي تُرجع فقط إجمالي عدد النتائج التي تطابق الاستعلام وأي معلومات تم طلبها. نتيجة لذلك ، لا تستهلك هذه الطريقة أرصدة الاستعلام.
client . host_count ( "apache" )
client . host_count ( "apache" , country : "US" )
client . host_count ( "apache" , country : "US" , state : "MI" )
client . host_count ( "apache" , country : "US" , state : "MI" , city : "Detroit" )
client . host_count ( "nginx" , facets : { country : 5 } )
client . host_count ( "apache" , facets : { country : 5 } ) استخدم هذه الطريقة لطلب Shodan للزحف إلى IP أو NetBlock.
client . scan ( "8.8.8.8" ) استخدم هذه الطريقة لطلب Shodan لزحف الإنترنت لمنفذ معين.
تقتصر هذه الطريقة على الباحثين والشركات الأمنية مع ترخيص بيانات Shodan. للتقدم للوصول إلى هذه الطريقة كباحث ، يرجى إرسال بريد إلكتروني [email protected] بمعلومات حول مشروعك. يقتصر الوصول لمنع سوء المعاملة.
client . crawl_for ( port : 80 , protocol : "http" ) استخدم هذه الطريقة للحصول على قائمة باستعلامات البحث التي أنقذها المستخدمون في شودان.
client . community_queries
client . community_queries ( page : 2 )
client . community_queries ( sort : "votes" )
client . community_queries ( sort : "votes" , page : 2 )
client . community_queries ( order : "asc" )
client . community_queries ( order : "desc" ) استخدم هذه الطريقة للبحث في دليل استعلامات البحث التي أنقذها المستخدمون في شودان.
client . search_for_community_query ( "the best" )
client . search_for_community_query ( "the best" , page : 2 ) استخدم هذه الطريقة للحصول على قائمة العلامات الشائعة لاستفسارات البحث المحفوظة في شودان.
client . popular_query_tags
client . popular_query_tags ( 20 ) تقوم هذه الطريقة بإرجاع كائن يحتوي على جميع البروتوكولات التي يمكن استخدامها عند إطلاق فحص عبر الإنترنت.
client . protocols تقوم هذه الطريقة بإرجاع قائمة أرقام المنافذ التي يبحث عنها شودان.
client . ports إرجاع معلومات حول حساب Shodan المرتبط بمفتاح API هذا.
client . profile ابحث عن عنوان IP لقائمة أسماء المضيف المقدمة.
client . resolve ( "google.com" )
client . resolve ( "google.com" , "bing.com" ) ابحث عن أسماء المضيف التي تم تعريفها في القائمة المحددة لعناوين IP.
client . reverse_lookup ( "74.125.227.230" )
client . reverse_lookup ( "74.125.227.230" , "204.79.197.200" ) يعرض رؤوس HTTP التي يرسلها عميلك عند الاتصال بخادم الويب.
client . http_headers احصل على عنوان IP الحالي كما هو موضح من الإنترنت.
client . my_ip يحسب درجة احتمالية Honeypot تتراوح من 0 (وليس Honeypot) إلى 1.0 (هو مصيبة).
client . honeypot_score ( '8.8.8.8' ) client . infoAPI Dreaming API هي خدمة تعتمد على HTTP تقوم بإرجاع دفق في الوقت الفعلي من البيانات التي تم جمعها بواسطة Shodan. ارجع إلى وثائق API البث لمزيد من الأفكار حول كيفية استخدامه.
يوفر هذا الدفق جميع البيانات التي يجمعها Shodan. استخدم هذا الدفق إذا كنت بحاجة إلى الوصول إلى كل شيء و/ أو تريد تخزين قاعدة بيانات Shodan الخاصة بك محليًا. إذا كنت تهتم فقط بمنافذ محددة ، فيرجى استخدام دفق المنافذ.
client . banners do | data |
# do something with banner data
puts data
end يوفر هذا الدفق عرضًا لتوفير عرض النطاق الترددي المصفاة لتيار لافتات في حال كنت مهتمًا فقط بالأجهزة الموجودة في ASNs معينة.
client . banners_within_asns ( 3303 , 32475 ) do | data |
# do something with banner data
puts data
end يوفر هذا الدفق عرضًا مرشحًا لتوفير النطاق الترددي لتيار لافتات في حال كنت مهتمًا فقط بالأجهزة الموجودة في بعض البلدان.
client . banners_within_countries ( "DE" , "US" , "JP" ) do | data |
# do something with banner data
puts data
end فقط إرجاع بيانات اللافتة لقائمة المنافذ المحددة. يوفر هذا الدفق عرضًا لتوفير عرض النطاق الترددي المصفاة لتيار لافتات في حال كنت مهتمًا فقط بقائمة محددة من المنافذ.
client . banners_on_ports ( 21 , 22 , 80 ) do | data |
# do something with banner data
puts data
end اشترك في لافتات المكتشفة على جميع نطاقات IP الموضحة في تنبيهات الشبكة.
client . alerts do | data |
# do something with banner data
puts data
end اشترك في لافتات المكتشفة على نطاق IP المحدد في تنبيه شبكة محدد.
client . alert ( "HKVGAIRWD79Z7W2T" ) do | data |
# do something with banner data
puts data
endيوفر API API إمكانية الوصول إلى العديد من مصادر بيانات الاستغلال/ الضعف. ارجع إلى وثائق API لاستغلال المزيد من الأفكار حول كيفية استخدامها.
ابحث عبر مجموعة متنوعة من مصادر البيانات للمآثر واستخدام الجوانب للحصول على معلومات موجزة.
client . exploits_api . search ( "python" ) # Search for python vulns.
client . exploits_api . search ( port : 22 ) # Port number for the affected service if the exploit is remote.
client . exploits_api . search ( type : "shellcode" ) # A category of exploit to search for.
client . exploits_api . search ( osvdb : "100007" ) # Open Source Vulnerability Database ID for the exploit. تتصرف هذه الطريقة مماثلة لطريقة search API مآثر مع الفرق الذي لا يعيد أي نتائج.
client . exploits_api . count ( "python" ) # Count python vulns.
client . exploits_api . count ( port : 22 ) # Port number for the affected service if the exploit is remote.
client . exploits_api . count ( type : "shellcode" ) # A category of exploit to search for.
client . exploits_api . count ( osvdb : "100007" ) # Open Source Vulnerability Database ID for the exploit. الجوهرة متوفرة كمصدر مفتوح بموجب شروط ترخيص معهد ماساتشوستس للتكنولوجيا.