Skip to content
This repository was archived by the owner on Sep 18, 2022. It is now read-only.
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 35 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,41 +16,53 @@ Before you can use the API, you need to have an API key.

Setup the Shodan wrapper object:

require 'shodan'

api = Shodan::Shodan.new(MY_API_KEY)
~~~ruby
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']
}
~~~ruby
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']
}
~~~ruby
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']
~~~ruby
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
~~~ruby
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
~~~ruby
begin
api.search("cisco-ios")
rescue Exception => e
puts "Error: #{e.to_s}"
else
puts "Unknown error"
end
~~~