Современный, асинхровый рубиновый жемчужина для Shodan, первая в мире поисковая система для устройств, подключенных к Интернету.
$ gem install shodanz
require "shodanz"
client = Shodanz . client . new ( key : "YOUR_API_KEY" )Примечание. Вы также можете установить переменную среды
SHODAN_API_KEYвместо передачи клавиши API в качестве аргумента при создании клиента.
Shodanz использует Async для обеспечения асинкнозного io. Это не ломает никаких существующих сценариев, используя Shodanz, но теперь предлагает еще большую гибкость, чтобы написать больше удивительных вещей, таких как этот асинкновый детектор Honeypot:
Примечание , чтобы запустить любой метод Shodanz, просто асинхронно, просто оберните его в блок
Async { ... }. Чтобы дождаться какой -либо другой асинхронной операции в финском языке в блоке,.waitна ней.
API REST предоставляет методы для поиска Shodan, поиска хостов, получения сводной информации по вопросам и различным методам утилиты для облегчения развития. Обратитесь к документации API REST для получения дополнительной информации о том, как ее использовать.
Поиск для вещей, да?
Возвращает все услуги, которые были найдены на данном хосте 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 или сетевого блока.
client . scan ( "8.8.8.8" ) Используйте этот метод, чтобы запросить Shodan для ползания в Интернете для конкретного порта.
Этот метод ограничен исследователями и компаниями безопасности с лицензией на данные Shodan. Чтобы подать заявку на доступ к этому методу в качестве исследователя, пожалуйста, напишите [email protected] с информацией о вашем проекте. Доступ ограничен для предотвращения злоупотребления.
client . crawl_for ( port : 80 , protocol : "http" ) Используйте этот метод, чтобы получить список поисковых запросов, которые пользователи сохранили в Shodan.
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" ) Используйте этот метод для поиска в каталоге поисковых запросов, которые пользователи сохранили в Shodan.
client . search_for_community_query ( "the best" )
client . search_for_community_query ( "the best" , page : 2 ) Используйте этот метод, чтобы получить список популярных тегов для сохраненных поисковых запросов в Shodan.
client . popular_query_tags
client . popular_query_tags ( 20 ) Этот метод возвращает объект, содержащий все протоколы, которые можно использовать при запуске интернет -сканирования.
client . protocols Этот метод возвращает список номеров портов, которые ищут Shodan Crawlers.
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 (не медовая) до 1,0 (это медовая).
client . honeypot_score ( '8.8.8.8' ) client . infoПотоковое API-это услуга на основе HTTP, которая возвращает поток данных в реальном времени, собранных Shodan. Обратитесь к документации API потоковой передачи для получения дополнительной информации о том, как ее использовать.
Этот поток предоставляет все данные, которые собирает Shodan. Используйте этот поток, если вам нужен доступ ко всему и/ или вы хотите хранить собственную базу данных Shodan локально. Если вы заботитесь только о конкретных портах, используйте поток портов.
client . banners do | data |
# do something with banner data
puts data
end Этот поток содержит отфильтрованный, экономный вид пропускания по потоку баннеров на случай, если вас заинтересованы только в устройствах, расположенных в определенных ASN.
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
endAPI Exploits предоставляет доступ к нескольким источникам данных об эксплойтах/ уязвимости. Обратитесь к документации API Expliets для получения дополнительной информации о том, как ее использовать.
Поиск по различным источникам данных для эксплойтов и используйте аспекты, чтобы получить сводную информацию.
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. Драгоценный камень доступен в качестве открытого исходного кода в соответствии с условиями лицензии MIT.