shodan-ruby
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:A Ruby interface to SHODAN, a computer search engine.
# shodan-ruby

* [shodan-ruby.rubyforge.org](http://shodan-ruby.rubyforge.org/)
* [github.com/postmodern/shodan-ruby](http://github.com/postmodern/shodan-ruby)
* [github.com/postmodern/shodan-ruby/issues](http://github.com/postmodern/shodan-ruby/issues)
* [shodan.surtri.com](http://shodan.surtri.com/)

## Description

A Ruby interface to SHODAN, a computer search engine.

## Features / Problems

* Supports basic queries.
* Supports `country` search operator.
* Supports `hostname` search operator.
* Supports `net` search operator.
* Supports `port` search operator.
* SHODAN does not support queries with non-alphanumeric characters within
  them.

## Examples

Basic query:

    require 'shodan'

    q = Shodan.query(:query => 'ssh')

Advanced query:

    q = Shodan.query(:query => 'login') do |q|
      q.ports += [21, 23, 80, 25]
      q.networks << '112.0.0.0/8'
    end

Queries from URLs:

    q = Shodan::Query.from_url('http://shodan.surtri.com/?q=login+port%3A21+port%3A23')

    q.query
    # => "login port:21 port:23"

Getting the search results:

    q.first_page.select do |host|
      host.response =~ /HTTP\1.[01] 200/
    end

    q.page(2).map do |host|
      host.headers['Server']
    end

    q.host_at(21)

    q.first_host

Iterating over the hosts on a page:

    q.each_on_page(2) do |host|
      puts host.ip
    end

    page.each do |host|
      puts "#{host.date} #{host.ip}"
    end

A Host object contains the IP address, Date added, Hostname, Response
recorded and parsed HTTP version, HTTP code, HTTP status
and HTTP headers.

    page = q.page(2)

    page.ips
    page.each_ip { |ip| puts ip }

    page.hostnames
    page.each_hostname { |hostname| puts hostname }

    page.dates
    page.each_date { |date| puts date }

    page.responses
    page.each_response { |resp| puts resp }

    page.http_headers
    page.each_http_headers do |headers| 
      headers.each do |name,value|
        puts "#{name}: #{value}"
      end
    end

Select specific hosts from a page:

    page.hosts_with_ip(/\.1$/)
    # => [...]

    page.hosts_with_name("mail")
    # => [...]

    page.responses_with("Server")
    # => [...]

## Requirements

* [mechanize](http://mechanize.rubyforge.org) >= 0.9.3

## Install

    $ sudo gem install shodan-ruby

## License

shodan-ruby - A Ruby interface to SHODAN, a computer search engine.

Copyright (c) 2009 Hal Brodigan (postmodern.mod3 at gmail.com)

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。