Project

shodan

0.04
Repository is archived
No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
A Ruby library to interact with the Shodan API.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Runtime

>= 1.4.6
 Project Readme

Visit the official Shodan API documentation at:

https://developer.shodan.io

Installation

To install the library use rubygems:

gem install shodan

Usage

Before you can use the API, you need to have an API key.

Get your API key here

Setup the Shodan wrapper object:

require 'shodan'

api = Shodan::Shodan.new(MY_API_KEY)

Print a list of cisco-ios devices:

result = api.search("cisco-ios")
result['matches'].each{ |host|
	puts host['ip_str']
}

Print the 2nd page of results for the cisco-ios query:

result = api.search("cisco-ios", :page => 2)
result['matches'].each{ |host|
	puts host['ip_str']
}

Find out how many results there are for "apache" and also return the top 5 organizations for the results:

result = api.count("apache", :facets => 'org:5')
puts "Total number of results: #{result['total']}"
puts result['facets']

Get all the information SHODAN has on the IP 217.140.75.46:

host = api.host('217.140.75.46')
puts host.to_s

To properly handle potential errors, you should wrap all requests in a try/except block:

begin
	api.search("cisco-ios")
rescue Exception => e
	puts "Error: #{e.to_s}"
else
	puts "Unknown error"
end