Project

ryo

0.0
No commit activity in last 3 years
No release in over 3 years
Ryo is a yet another website recon tool.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.16
~> 0.8
~> 2.5
~> 0.1
~> 12.3
~> 3.8
~> 4.0
~> 3.4

Runtime

~> 3.3
~> 2.15
~> 1.0
~> 0.19
~> 0.2.2
 Project Readme

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.