Skip to content
/ ryo Public

Yet another website recon tool powered by Ruby

License

Notifications You must be signed in to change notification settings

ninoseki/ryo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ryo

Build Status Maintainability Coverage Status

Ryo is a yet another website recon tool powered by Ruby.

Note: I'm working on this just because for fun and study purposes.

Concept

  • JSON all the way.
    • No pretty output / report, just a JSON.

Features & ToDo list

Installation

$ gem install ryo

Usage

$ ryo
Commands:
  ryo all URL         # Run all discovery plugins against a given URL
  ryo cert URL        # Discover an SSL certificate belongs to a given URL
  ryo dir URL         # Discover directories and files belong to a given URL
  ryo discover URL    # Run discovery plugin(s) against a given URL
  ryo dns URL         # Discover DNS records of a given URL
  ryo help [COMMAND]  # Describe available commands or one specific command
  ryo shodan URL      # Discover Shodan information of a given URL
  ryo subdomain URL   # Discover subdomains of a given URL
  ryo tech URL        # Discover used technolgies of a given URL
  ryo urlscan URL     # Discover urlscan.io scan results of a given URL
  ryo whois URL       # Discover whois information of a given URL

In order to use Shodan search, please set your Shodan API key as SHODAN_API_KEY environment variable.

Example:

# start Webrick HTTP server
# $ ruby -rwebrick -e 'WEBrick::HTTPServer.new(:DocumentRoot => "./", :Port => 8000).start'
$ ryo all http://localhost:8000 | jq .

Output:

{
  "cert": {
    "error": "N/A"
  },
  "dir": [],
  "dns": {
    "A": {
      "Status": 3,
      "TC": false,
      "RD": true,
      "RA": true,
      "AD": true,
      "CD": false,
      "Question": [
        {
          "name": "127.0.0.1.",
          "type": 1
        }
      ],
      "Authority": [
        {
          "name": ".",
          "type": 6,
          "TTL": 48909,
          "data": "a.root-servers.net. nstld.verisign-grs.com. 2018101001 1800 900 604800 86400"
        }
      ]
    },
    "AAAA": {
      "Status": 3,
      "TC": false,
      "RD": true,
      "RA": true,
      "AD": true,
      "CD": false,
      "Question": [
        {
          "name": "127.0.0.1.",
          "type": 28
        }
      ],
      "Authority": [
        {
          "name": ".",
          "type": 6,
          "TTL": 53205,
          "data": "a.root-servers.net. nstld.verisign-grs.com. 2018101001 1800 900 604800 86400"
        }
      ]
    },
    "CNAME": {
      "Status": 3,
      "TC": false,
      "RD": true,
      "RA": true,
      "AD": true,
      "CD": false,
      "Question": [
        {
          "name": "127.0.0.1.",
          "type": 5
        }
      ],
      "Authority": [
        {
          "name": ".",
          "type": 6,
          "TTL": 86391,
          "data": "a.root-servers.net. nstld.verisign-grs.com. 2018101101 1800 900 604800 86400"
        }
      ]
    },
    "MX": {
      "Status": 3,
      "TC": false,
      "RD": true,
      "RA": true,
      "AD": true,
      "CD": false,
      "Question": [
        {
          "name": "127.0.0.1.",
          "type": 15
        }
      ],
      "Authority": [
        {
          "name": ".",
          "type": 6,
          "TTL": 86398,
          "data": "a.root-servers.net. nstld.verisign-grs.com. 2018101101 1800 900 604800 86400"
        }
      ]
    },
    "NS": {
      "Status": 3,
      "TC": false,
      "RD": true,
      "RA": true,
      "AD": true,
      "CD": false,
      "Question": [
        {
          "name": "127.0.0.1.",
          "type": 2
        }
      ],
      "Authority": [
        {
          "name": ".",
          "type": 6,
          "TTL": 47564,
          "data": "a.root-servers.net. nstld.verisign-grs.com. 2018101001 1800 900 604800 86400"
        }
      ]
    },
    "SOA": {
      "Status": 3,
      "TC": false,
      "RD": true,
      "RA": true,
      "AD": true,
      "CD": false,
      "Question": [
        {
          "name": "127.0.0.1.",
          "type": 6
        }
      ],
      "Authority": [
        {
          "name": ".",
          "type": 6,
          "TTL": 63738,
          "data": "a.root-servers.net. nstld.verisign-grs.com. 2018101100 1800 900 604800 86400"
        }
      ]
    },
    "TXT": {
      "Status": 3,
      "TC": false,
      "RD": true,
      "RA": true,
      "AD": true,
      "CD": false,
      "Question": [
        {
          "name": "127.0.0.1.",
          "type": 16
        }
      ],
      "Authority": [
        {
          "name": ".",
          "type": 6,
          "TTL": 86398,
          "data": "a.root-servers.net. nstld.verisign-grs.com. 2018101101 1800 900 604800 86400"
        }
      ]
    }
  },
  "shodan": {
    "error": "Invalid IP"
  },
  "subdomain": [
    {
      "domain": "127.0.0.1",
      "ip": "N/A"
    },
    {
      "domain": "develop.127.0.0.1",
      "ip": "N/A"
    },
    {
      "domain": "loja01.127.0.0.1",
      "ip": "N/A"
    },
    {
      "domain": "www.127.0.0.1",
      "ip": "N/A"
    }
  ],
  "tech": {
    "HTTPServer": [
      {
        "name": "server string",
        "string": "WEBrick/1.4.2 (Ruby/2.5.1/2018-03-29)",
        "certainty": 100
      }
    ],
    "Ruby": [
      {
        "regexp": [
          "Ruby"
        ],
        "search": "headers[server]",
        "certainty": 100
      },
      {
        "regexp": [
          "WEBrick"
        ],
        "search": "headers[server]",
        "certainty": 100
      }
    ],
    "Title": [
      {
        "name": "page title",
        "string": "Index of /",
        "certainty": 100
      }
    ]
  },
  "urlscan": {
    "results": [
      {
        "task": {
          "visibility": "public",
          "method": "api",
          "time": "2018-09-12T19:15:09.391Z",
          "source": "api",
          "url": "http://price-wise.net"
        },
        "stats": {
          "uniqIPs": 6,
          "consoleMsgs": 0,
          "dataLength": 401944,
          "encodedDataLength": 155968,
          "requests": 8
        },
        "page": {
          "country": "US",
          "server": "nginx/1.10.2",
          "city": "Dallas",
          "domain": "price-wise.net",
          "ip": "159.65.190.189",
          "asnname": "DIGITALOCEAN-ASN - DigitalOcean, LLC, US",
          "asn": "AS14061",
          "url": "http://price-wise.net/",
          "ptr": ""
        },
        "uniq_countries": 1,
        "_id": "120e5b5d-4d3e-4c63-ba0f-cf3e5ceb4219",
        "result": "https://urlscan.io/api/v1/result/120e5b5d-4d3e-4c63-ba0f-cf3e5ceb4219"
      }
    ],
    "total": 1
  },
  "whois": {
    "globa_stats": {},
    "registrant": {}
  }
}

License

The gem is available as open source under the terms of the MIT License.

About

Yet another website recon tool powered by Ruby

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published