{"id":13765242,"url":"https://github.com/ronin-rb/ronin","last_synced_at":"2025-05-10T20:31:44.981Z","repository":{"id":795700,"uuid":"494591","full_name":"ronin-rb/ronin","owner":"ronin-rb","description":"Ronin is a Free and Open Source Ruby Toolkit for Security Research and Development. Ronin also allows for the rapid development and distribution of code, exploits, payloads, etc, via 3rd-party git repositories.","archived":false,"fork":false,"pushed_at":"2025-04-21T16:44:10.000Z","size":9031,"stargazers_count":716,"open_issues_count":30,"forks_count":53,"subscribers_count":23,"default_branch":"main","last_synced_at":"2025-05-06T13:24:22.615Z","etag":null,"topics":["cli","console","ctf-tool","ctf-tools","database","hacking","hacking-tools","hacktoberfest","infosec","network-tools","orm","ronin","ronin-rb","ruby","security","security-tools"],"latest_commit_sha":null,"homepage":"https://ronin-rb.dev","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ronin-rb.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"funding":null,"license":"COPYING.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"open_collective":"ronin-rb","patreon":"roninrb"}},"created_at":"2010-01-30T02:20:14.000Z","updated_at":"2025-05-05T07:50:53.000Z","dependencies_parsed_at":"2024-01-15T09:07:06.445Z","dependency_job_id":"09a99e76-0de2-46cd-a02a-f4c231ac453c","html_url":"https://github.com/ronin-rb/ronin","commit_stats":{"total_commits":5307,"total_committers":11,"mean_commits":"482.45454545454544","dds":0.005841341624269858,"last_synced_commit":"120947c06e2302fd0a39a7b2c1a44aed0dcc39cf"},"previous_names":["ronin-ruby/ronin"],"tags_count":50,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ronin-rb%2Fronin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ronin-rb%2Fronin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ronin-rb%2Fronin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ronin-rb%2Fronin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ronin-rb","download_url":"https://codeload.github.com/ronin-rb/ronin/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253480540,"owners_count":21915249,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","console","ctf-tool","ctf-tools","database","hacking","hacking-tools","hacktoberfest","infosec","network-tools","orm","ronin","ronin-rb","ruby","security","security-tools"],"created_at":"2024-08-03T16:00:35.903Z","updated_at":"2025-05-10T20:31:39.953Z","avatar_url":"https://github.com/ronin-rb.png","language":"Ruby","readme":"# ronin\n\n[![CI](https://github.com/ronin-rb/ronin/actions/workflows/ruby.yml/badge.svg)](https://github.com/ronin-rb/ronin/actions/workflows/ruby.yml)\n[![Code Climate](https://codeclimate.com/github/ronin-rb/ronin.svg)](https://codeclimate.com/github/ronin-rb/ronin)\n[![Gem Version](https://badge.fury.io/rb/ronin.svg)](https://badge.fury.io/rb/ronin)\n\n* [Website](https://ronin-rb.dev)\n* [Source](https://github.com/ronin-rb/ronin)\n* [Issues](https://github.com/ronin-rb/ronin/issues)\n* [Documentation](https://ronin-rb.dev/docs/ronin/frames)\n* [Discord](https://discord.gg/6WAb3PsVX9) |\n  [Mastodon](https://infosec.exchange/@ronin_rb)\n\n## Description\n\n[Ronin][website] is a free and Open Source [Ruby] toolkit for security research\nand development. Ronin contains many different [CLI commands](#synopsis) and\n[Ruby libraries][ronin-rb] for a variety of security tasks, such as\nencoding/decoding data, filter IPs/hosts/URLs, querying ASNs, querying DNS,\nHTTP, [scanning for web vulnerabilities][ronin-vulns-synopsis],\n[spidering websites][ronin-web-spider],\n[installing 3rd-party repositories][ronin-repos-synopsis] of\n[exploits][ronin-exploits] and/or\n[payloads][ronin-payloads], [running exploits][ronin-exploits-synopsis],\n[developing new exploits][ronin-exploits-examples],\n[managing local databases][ronin-db-synopsis],\n[fuzzing data][ronin-fuzzer],\n[performing recon][ronin-recon-synopsis], and much more.\n\n### Who is Ronin for?\n\n* CTF players\n* Bug bounty hunters\n* Security Researchers\n* Security Engineers\n* Developers\n* Students\n\n### What does Ronin provide?\n\n* A toolkit of useful commands.\n* A fully-loaded Ruby REPL.\n* An ecosystem of high-quality security related Ruby libraries, APIs, and\n  commands.\n* A lightweight local web UI.\n\n### What can you do with Ronin?\n\n* Quickly process and query various data using the `ronin` commands.\n* Efficiently work with code and data in the `ronin irb` Ruby REPL.\n* Rapidly prototype Ruby scripts using [ronin-support] and other `ronin`\n  libraries.\n* Install 3rd-party [git] repositories of exploits, payloads, or other code,\n  using [ronin-repos].\n* Import and query data using the [ronin-db] database.\n* Fuzz data using [ronin-fuzzer].\n* Perform recon using [ronin-recon].\n* Use common payloads or write your own using [ronin-payloads].\n* Write/run exploits using [ronin-exploits].\n* Scan for web vulnerabilities using [ronin-vulns].\n* Performs scans and browse the database in your browser using [ronin-app].\n\n## Synopsis\n\n```\nUsage: ronin [options] [COMMAND [ARGS...]]\n\nOptions:\n    -h, --help                       Print help information\n\nArguments:\n    [COMMAND]                        The command name to run\n    [ARGS ...]                       Additional arguments for the command\n\nCommands:\n    archive\n    asn\n    banner-grab\n    bitflip\n    cert-dump\n    cert-gen\n    cert-grab\n    completion\n    decode, dec\n    decrypt\n    dns\n    dns-proxy\n    email-addr\n    encode, enc\n    encrypt\n    entropy\n    escape\n    extract\n    grep\n    help\n    hexdump\n    highlight\n    hmac\n    homoglyph\n    host\n    http\n    ip\n    iprange\n    irb\n    md5\n    netcat, nc\n    new\n    pack\n    proxy\n    public-suffix-list\n    quote\n    rot\n    sha1\n    sha256\n    sha512\n    strings\n    tld-list\n    tips\n    typo\n    typosquat\n    unarchive\n    unescape\n    unhexdump\n    unpack\n    unquote\n    url\n    xor\n\nAdditional Ronin Commands:\n    $ ronin-repos\n    $ ronin-wordlists\n    $ ronin-db\n    $ ronin-web\n    $ ronin-fuzzer\n    $ ronin-masscan\n    $ ronin-nmap\n    $ ronin-recon\n    $ ronin-payloads\n    $ ronin-exploits\n    $ ronin-vulns\n    $ ronin-app\n```\n\nList ronin commands:\n\n```shell\n$ ronin help\n```\n\nView a man-page for a command:\n\n```shell\n$ ronin help COMMAND\n```\n\nGet a random tip on how to use `ronin`:\n\n```shell\n$ ronin tips\n```\n\nOpen the Ronin Ruby REPL:\n\n```\n$ ronin irb\n                                                                   , Jµ     ▓▓█▓\n                                                  J▌      ▐▓██▌ ████ ██    ▐███D\n                                      ╓▄▓▓█████▌  ██µ     ████ ▄███ÖJ██▌   ███▌\n        ,╓µ▄▄▄▄▄▄▄▄µ;,            ,▄▓██████████  ▐███    ▐███▀ ███▌ ████µ ▄███\n¬∞MÆ▓███████████████████████▓M  ▄██████▀▀╙████▌  ████▌   ████ ▄███ J█████ ███▌\n           `█████▀▀▀▀▀███████  -████▀└    ████  ▐█████n ▄███O ███▌ ██████████\n           ▓████L       ████▀  ▓████     ▓███Ö  ███████ ███▌ ▓███ ▐█████████▀\n          ▄████▀  ,╓▄▄▄█████  J████Ü    ,███▌  ▄███████████ J███▀ ████ █████\n         J█████████████████─  ████▌     ████   ████`██████▌ ████ ▐███Ü ▐███Ü\n         ███████████▀▀▀╙└    ▐████     J███▌  ▓███▌ ²█████ J███Ü ███▌   ▀█▌\n        ▓██████████▌         ████▌     ████  ;████   ▀███▀ ███▌ J▀▀▀-    █\n       ▄█████▀ ▀█████µ      ▐████  ,▄▓████▀  ████▀    ███ J███           `\n      J█████-    ╙▀███▄     ████████████▀╙  J█▀▀▀      █U  ▀█▌\n      ████▀         ▀███   ▄████████▀▀                 ╨    █\n     ▓██▀             ²▀█▄ █▀▀▀╙└\n    ▄██╜                 ╙W\n   J█▀\n   ▌└\n  ┘\n\nirb(ronin)\u003e\n```\n\nStarts and opens the interactive Web UI for Ronin:\n\n```\n$ ronin-app\n```\n\n### Binary\n\nHexdumps data in a variety of formats:\n\n```shell\n$ ronin hexdump /bin/ls\n```\n\nUn-hexdumps a hexdump file back into it's original raw binary data:\n\n```shell\n$ ronin unhexdump -o data.bin hexdump.txt\n```\n\nPrint all printable strings from a file:\n\n```shell\n$ ronin strings /bin/ls\n```\n\nPrint all alphabetic strings from a file:\n\n```shell\n$ ronin strings --alpha /bin/ls\n```\n\nPrint all alpha-numeric strings from a file:\n\n```shell\n$ ronin strings --alpha-num /bin/ls\n```\n\nPrint all numeric strings from a file:\n\n```shell\n$ ronin strings --numeric /bin/ls\n```\n\nPrint all hexadecimal strings from a file:\n\n```shell\n$ ronin strings --hex /bin/ls\n```\n\nEnumerate through all of the Bit-flips of a domain name:\n\n```shell\n$ ronin bitflip microsoft --alpha-num --append .com\nlicrosoft.com\noicrosoft.com\niicrosoft.com\neicrosoft.com\nMicrosoft.com\nmhcrosoft.com\nmkcrosoft.com\nmmcrosoft.com\nmacrosoft.com\nmycrosoft.com\n...\n```\n\n### Encoding\n\nBase64 encode a string:\n\n```shell\n$ ronin encode --base64 --string \"foo bar baz\"\nZm9vIGJhciBiYXo=\n```\n\nZlib compresses, Base64 encodes, and then URI encode a string:\n\n```shell\n$ ronin encode --zlib --base64 --uri --string \"foo bar\"\n%65%4A%78%4C%79%38%39%58%53%45%6F%73%41%67%41%4B%63%41%4B%61%0A\n```\n\nBase64 decode a string:\n\n```shell\n$ ronin decode --base64 --string \"Zm9vIGJhciBiYXo=\"\nfoo bar baz\n```\n\nURI decode, Base64 decode, and then zlib inflates a string:\n\n```shell\n$ ronin decode --uri --base64 --zlib --string \"%65%4A%78%4C%79%38%39%58%53%45%6F%73%41%67%41%4B%63%41%4B%61%0A\"\nfoo bar\n```\n\nURI escape a string:\n\n```shell\n$ ronin escape --uri --string \"foo bar\"\nfoo%20bar\n```\n\nURI unescape a string:\n\n```shell\n$ ronin unescape --uri --string \"foo%20bar\"\nfoo bar\n```\n\nConvert a file into a quoted C string:\n\n```shell\n$ ronin quote --c file.bin\n\"...\"\n```\n\nConvert a file into a quoted JavaScript string:\n\n```shell\n$ ronin quote --js file.bin\n```\n\nUnquote a C string:\n\n```shell\n$ ronin unquote --c --string '\"\\x66\\x6f\\x6f\\x20\\x62\\x61\\x72\"'\nfoo bar\n```\n\n### Text\n\nExtract high-entropy data from a file:\n\n```shell\n$ ronin entropy -e 5.0 index.html\n```\n\nGrep for common patterns of data:\n\n```shell\n$ ronin grep --hash index.html\n```\n\nExtract common patterns from data:\n\n```shell\n$ ronin extract --hash index.html\n```\n\nGenerate a random typo of a word:\n\n```shell\n$ ronin typo microsoft\nmicrossoft\n```\n\nEnumerate over every typo variation of a word:\n\n```shell\n$ ronin typo --enum microsoft\nmicroosoft\nmicrosooft\nmicrossoft\n```\n\nGenerate a random homoglyph version of a word:\n\n```shell\n$ ronin homoglyph CEO\nCＥO\n```\n\nEnumerate over every homoglyph variation of a word:\n\n```shell\n$ ronin homoglyph --enum CEO\nϹEO\nСEO\nⅭEO\nＣEO\nCΕO\nCЕO\nCＥO\nCEΟ\nCEО\nCEＯ\n```\n\nSyntax-highlights a file:\n\n```shell\n$ ronin highlight index.html\n```\n\n### Cryptography\n\nAES-256 encrypt a file:\n\n```shell\n$ ronin encrypt --cipher aes-256-cbc --password \"...\" file.txt \u003e encrypted.bin\n```\n\nDecrypt data:\n\n```shell\n$ ronin decrypt --cipher aes-256-cbc --password \"...\" encrypted.bin\n```\n\nGenerates a HMAC for a file:\n\n```shell\n$ ronin hmac --hash sha1 --password \"too many secrets\" data.txt\n```\n\nGenerates a HMAC for a string:\n\n```shell\n$ ronin hmac --hash sha1 --password \"too many secrets\" --string \"...\"\n```\n\nCalculate an MD5 checksum of a string:\n\n```shell\n$ ronin md5 --string \"hello world\"\n5eb63bbbe01eeed093cb22bb8f5acdc3\n```\n\nCalculate the MD5 checksum of a file:\n\n```shell\n$ ronin md5 file.txt\n```\n\nCalculate the MD5 checksum of every line in a file:\n\n```shell\n$ ronin md5 --multiline file.txt\n```\n\nCalculate an SHA1 checksum of a string:\n\n```shell\n$ ronin sha1 --string \"hello world\"\n2aae6c35c94fcfb415dbe95f408b9ce91ee846ed\n```\n\nCalculate the SHA1 checksum of a file:\n\n```shell\n$ ronin sha1 file.txt\n```\n\nCalculate the SHA1 checksum of every line in a file:\n\n```shell\n$ ronin sha1 --multiline file.txt\n```\n\nCalculate an SHA256 checksum of a string:\n\n```shell\n$ ronin sha256 --string \"hello world\"\nb94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9\n```\n\nCalculate the SHA256 checksum of a file:\n\n```shell\n$ ronin sha256 file.txt\n```\n\nCalculate the SHA256 checksum of every line in a file:\n\n```shell\n$ ronin sha256 --multiline file.txt\n```\n\nCalculate an SHA512 checksum of a string:\n\n```shell\n$ ronin sha512 --string \"hello world\"\n309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f\n```\n\nCalculate the SHA512 checksum of a file:\n\n```shell\n$ ronin sha512 file.txt\n```\n\nCalculate the SHA512 checksum of every line in a file:\n\n```shell\n$ ronin sha512 --multiline file.txt\n```\n\nROT-13 encodes a string:\n\n```shell\n$ ronin rot --string \"The quick brown fox jumps over the lazy dog\"\nGur dhvpx oebja sbk whzcf bire gur ynml qbt\n```\n\nXOR encodes a string:\n\n```shell\n$ ronin xor --key ABC --string \"The quick brown fox jumps over the lazy dog\"\n\"\\x15*\u0026a36(!(a 1.5-a$,9b)4/32b,7'1a6+$b/ 8:a\u0026,\u0026\"\n```\n\n### Networking\n\nQuery the ASN of an IP address:\n\n```shell\n$ ronin asn -I 4.2.2.1\n4.0.0.0/9 AS3356 (US) LEVEL3\n```\n\nGet the system's external/public IP address:\n\n```shell\n$ ronin ip --public\n```\n\nConvert an IP address to decimal format:\n\n```shell\n$ ronin ip --decimal 127.0.0.1\n2130706433\n```\n\nConvert a file of IP addresses into URLs:\n\n```shell\n$ ronin ip --file targets.txt --http\n```\n\nEnumerate over every IP address in the IP CIDR range:\n\n```shell\n$ ronin iprange 10.1.0.0/15\n10.0.0.1\n10.0.0.2\n10.0.0.3\n10.0.0.4\n10.0.0.5\n10.0.0.6\n10.0.0.7\n10.0.0.8\n10.0.0.9\n...\n```\n\nEnumerate over every IP address in the IP glob range:\n\n```shell\n$ ronin iprange 10.1-3.0.*\n10.1.0.1\n10.1.0.2\n10.1.0.3\n10.1.0.4\n10.1.0.5\n10.1.0.6\n10.1.0.7\n10.1.0.8\n10.1.0.9\n10.1.0.10\n...\n```\n\nEnumerate over every IP address between two IP addresses:\n\n```shell\n$ ronin iprange --start 10.0.0.1 --stop 10.0.3.33\n10.0.0.1\n10.0.0.2\n10.0.0.3\n10.0.0.4\n10.0.0.5\n10.0.0.6\n10.0.0.7\n10.0.0.8\n10.0.0.9\n10.0.0.10\n```\n\nConnect to a remote TCP service:\n\n```shell\n$ ronin netcat -v example.com 80\n```\n\nListen on a local TCP port:\n\n```shell\n$ ronin netcat -v -l 1337\n```\n\nConnect to a remote SSL/TLS service:\n\n```shell\n$ ronin netcat -v --ssl example.com 443\n```\n\nConnect to a remote UDP service:\n\n```shell\n$ ronin netcat -v -u example.com 1337\n```\n\nListen on a local UDP port:\n\n```shell\n$ ronin netcat -v -u -l 1337\n```\n\nOpens a UNIX socket:\n\n```shell\n$ ronin netcat -v --unix /path/to/unix.socket\n```\n\nHexdump all data received from a socket:\n\n```shell\n$ ronin netcat --hexdump example.com 80\nGET / HTTP/1.1\nHost: example.com\nUser-Agent: Ruby\n\n00000000  48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d  |HTTP/1.1 200 OK.|\n00000010  0a 41 67 65 3a 20 32 35 30 38 30 36 0d 0a 43 61  |.Age: 250806..Ca|\n00000020  63 68 65 2d 43 6f 6e 74 72 6f 6c 3a 20 6d 61 78  |che-Control: max|\n00000030  2d 61 67 65 3d 36 30 34 38 30 30 0d 0a 43 6f 6e  |-age=604800..Con|\n00000040  74 65 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f  |tent-Type: text/|\n00000050  68 74 6d 6c 3b 20 63 68 61 72 73 65 74 3d 55 54  |html; charset=UT|\n...\n```\n\n#### DNS\n\nQuery DNS records:\n\n```shell\n$ ronin dns -t TXT github.com\n```\n\nFind all registered TLDs for a host name:\n\n```shell\n$ ronin host --enum-tlds --registered github.com\ngithub.ac\ngithub.actor\ngithub.ae\ngithub.africa\ngithub.agency\ngithub.ai\n...\n```\n\nFind all registered public suffixes for a host name:\n\n```shell\n$ ronin host --enum-suffix --registered github.com\nexample.com.ag\nexample.ai\nexample.al\nexample.am\nexample.com.ar\nexample.at\nexample.co.at\nexample.or.at\nexample.com.au\nexample.be\nexample.com.bh\n...\n```\n\nFind all subdomains that have addresses:\n\n```shell\n$ ronin host --enum-subdomains subdomains.txt --has-addresses google.com\nwww.google.com\nmail.google.com\nsmtp.google.com\nns1.google.com\nns2.google.com\nm.google.com\nns.google.com\nblog.google.com\nadmin.google.com\nnews.google.com\nvpn.google.com\nns3.google.com\n...\n```\n\nEnumerate over every possible typosquat variation of a domain:\n\n```shell\n$ ronin typosquat microsoft.com\nmicroosoft.com\nmicrosooft.com\nmicrossoft.com\n```\n\nFind all of the registered typosquat domains for a valid domain:\n\n```shell\n$ ronin typosquat --registered microsoft.com\n```\n\nFind all of the typosquat domains with addresses for a valid domain:\n\n```shell\n$ ronin typosquat --has-addresses microsoft.com\n```\n\nFind all of the unregistered typosquat domains for a valid domain:\n\n```shell\n$ ronin typosquat --unregistered microsoft.com\n```\n\nDe-obfuscate an email address:\n\n```shell\n$ ronin email-addr --deobfuscate \"john [dot] smith [at] example [dot] com\"\njohn.smith@example.com\n```\n\nEnumerate through all of the obfuscations of an email address:\n\n```shell\n$ ronin email-addr --enum-obfuscations john.smith@example.com\njohn.smith @ example.com\njohn.smith AT example.com\njohn.smith at example.com\njohn.smith[AT]example.com\njohn.smith[at]example.com\n...\n```\n\n#### SSL/TLS Certs\n\nDump information about a SSL/TLS certificate:\n\n```shell\n$ ronin cert-dump https://example.com/\n```\n\nDownload a SSL/TLS certificate from a host and port:\n\n```shell\n$ ronin cert-grab github.com:443\n```\n\nGenerate a new SSL/TLS certificate:\n\n```shell\n$ ronin cert-gen -c test.com -O \"Test Co\" -U \"Test Dept\" \\\n                 -L \"Test City\" -S NY -C US\n```\n\n#### HTTP\n\nPerform an HTTP `GET` request (with syntax highlighting):\n\n```shell\n$ ronin http https://example.com/\n```\n\nSend an HTTP request with additional headers:\n\n```shell\n$ ronin http --post --header \"Authorization: ...\" https://foo.bar/\n```\n\nSend an HTTP request with a known `User-Agent` string:\n\n```shell\n$ ronin http --post --user-agent chrome-android https://foo.bar/\n```\n\nSend an HTTP request with a custom `User-Agent` string:\n\n```shell\n$ ronin http --post --user-agent-string \"...\" https://foo.bar/\n```\n\nOpen an interactive HTTP shell:\n\n```shell\n$ ronin http --shell https://example.com/\nhttps://example.com/\u003e help\n  help [COMMAND]                      \tPrints the list of commands or additional help\n  get PATH[?QUERY] [BODY]             \tPerforms a GET request\n  head PATH[?QUERY]                   \tPerforms a HEAD request\n  patch PATH[?QUERY] [BODY]           \tPerforms a PATCH request\n  post PATH[?QUERY] [BODY]            \tPerforms a POST request\n  put PATH [BODY]                     \tPerforms a PUT request\n  copy PATH DEST                      \tPerforms a COPY request\n  delete PATH[?QUERY]                 \tPerforms a DELETE request\n  lock PATH[?QUERY]                   \tPerforms a LOCK request\n  options PATH[?QUERY]                \tPerforms a OPTIONS request\n  mkcol PATH[?QUERY]                  \tPerforms a MKCOL request\n  move PATH[?QUERY] DEST              \tPerforms a MOVE request\n  propfind PATH[?QUERY]               \tPerforms a PROPFIND request\n  proppatch PATH[?QUERY]              \tPerforms a PROPPATCH request\n  trace PATH[?QUERY]                  \tPerforms a TRACE request\n  unlock PATH[?QUERY]                 \tPerforms a UNLOCK request\n  cd PATH                             \tChanges the base URL path\n  headers [{set | unset} NAME [VALUE]]\tManages the request headers\n```\n\nPrint the HTTP status of every URL in a file:\n\n```shell\n$ ronin url --file urls.txt --status\n```\n\n### Generators\n\nGenerate a new Ruby script with [ronin-support] preloaded:\n\n```shell\n$ ronin new script foo.rb\n```\n\nGenerate a new Ruby project with a `Gemfile`:\n\n```shell\n$ ronin new project foo\n```\n\nGenerate a new [nokogiri] Ruby script for parsing HTML/XML:\n\n[nokogiri]: https://nokogiri.org/\n\n```shell\n$ ronin new nokogiri foo.rb\n```\n\nGenerate a new [ronin-web-server] Ruby script:\n\n```shell\n$ ronin new web-server my_server.rb\n```\n\nGenerate a new [ronin-web-server] based web app:\n\n```shell\n$ ronin new web-app my_app\n```\n\nGenerate a new [ronin-web-spider] Ruby script:\n\n```shell\n$ ronin new web-spider --host=example.com my_spider.rb\n```\n\nGenerate a [ronin-listener-dns] script:\n\n```shell\n$ ronin new dns-listener my_dns_listener.rb\n```\n\nGenerate a [ronin-dns-proxy] script:\n\n```shell\n$ ronin new dns-proxy my_dns_proxy.rb\n```\n\nGenerate a [ronin-listener-http] script:\n\n```shell\n$ ronin new http-listener my_http_listener.rb\n```\n\nGenerate a [ronin-exploits] script:\n\n```shell\n$ ronin new exploit my_exploit.rb\n```\n\nGenerate a [ronin-payloads] script:\n\n```shell\n$ ronin new payload my_payload.rb\n```\n\n### Archive\n\nArchive files:\n\n```shell\n$ ronin archive -o archive.zip file1.txt file2.txt\n```\n\nArchive files using tar format:\n\n```shell\n$ ronin archive -o archive.tar file1.txt file2.txt\n```\n\nUnarchive files:\n\n```shell\n$ ronin unarchive arch1.tar arch2.zip\n```\n\nUnarchive a file with explicit format:\n\n```shell\n$ ronin unarchive -f zip arch2.jar\n```\n\n### See Also\n\n* [ronin-repos](https://github.com/ronin-rb/ronin-repos#synopsis)\n* [ronin-wordlists](https://github.com/ronin-rb/ronin-wordlists#synopsis)\n* [ronin-db](https://github.com/ronin-rb/ronin-db#synopsis)\n* [ronin-web](https://github.com/ronin-rb/ronin-web#synopsis)\n* [ronin-fuzzer](https://github.com/ronin-rb/ronin-fuzzer#synopsis)\n* [ronin-payloads](https://github.com/ronin-rb/ronin-payloads#synopsis)\n* [ronin-exploits](https://github.com/ronin-rb/ronin-exploits#synopsis)\n* [ronin-vulns](https://github.com/ronin-rb/ronin-vulns#synopsis)\n\n## Requirements\n\n* [gcc] / [clang]\n* [make]\n* [git]\n* [libsqlite3]\n* [Ruby] \u003e= 3.1.0\n* [open_namespace] ~\u003e 0.4\n* [rouge] ~\u003e 3.0\n* [async-io] ~\u003e 1.0\n* [wordlist] ~\u003e 1.1\n* [ronin-support] ~\u003e 1.1\n* [ronin-dns-proxy] ~\u003e 0.1\n* [ronin-core] ~\u003e 0.2\n* [ronin-repos] ~\u003e 0.1\n* [ronin-wordlists] ~\u003e 0.1\n* [ronin-db] ~\u003e 0.1\n* [ronin-listener] ~\u003e 0.1\n* [ronin-nmap] ~\u003e 0.1\n* [ronin-masscan] ~\u003e 0.1\n* [ronin-recon] ~\u003e 0.1\n* [ronin-fuzzer] ~\u003e 0.1\n* [ronin-web] ~\u003e 2.0\n* [ronin-code-asm] ~\u003e 1.0\n* [ronin-code-sql] ~\u003e 2.0\n* [ronin-payloads] ~\u003e 0.1\n* [ronin-exploits] ~\u003e 1.0\n* [ronin-vulns] ~\u003e 0.2\n* [ronin-app] ~\u003e 0.1\n\n## Install\n\n### Bash Script\n\n```shell\ncurl -o ronin-install.sh https://raw.githubusercontent.com/ronin-rb/scripts/main/ronin-install.sh \u0026\u0026 bash ronin-install.sh\n```\n\n### Manually\n\nSee the [manual install][manual-instructions] instructions for how to install\nRonin and it's additional dependencies on your platform.\n\n[manual-instructions]: https://ronin-rb.dev/install/#manual-instructions\n\n### Docker\n\nIf you prefer using [Docker], there are also [Docker images] available:\n\n```shell\ndocker pull roninrb/ronin\ndocker run -it roninrb/ronin\n```\n\nAdditionally, if you want to mount your home directory into the docker image:\n\n```shell\ndocker run --mount type=bind,source=\"$HOME\",target=/home/ronin -it ronin\n```\n\n[Docker]: https://www.docker.com/\n[Docker images]: https://hub.docker.com/r/roninrb/ronin\n\n## Development\n\n1. [Fork It!](https://github.com/ronin-rb/ronin/fork)\n2. Clone It!\n3. `cd ronin`\n4. `./scripts/setup`\n5. `git checkout -b my_feature`\n6. Code It!\n7. `bundle exec rake spec`\n8. `git push origin my_feature`\n\n## License\n\nCopyright (c) 2006-2023 Hal Brodigan (postmodern.mod3 at gmail.com)\n\nRonin is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nRonin is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with Ronin.  If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n\n[website]: https://ronin-rb.dev/\n[ronin-rb]: https://github.com/ronin-rb/\n\n[gcc]: http://gcc.gnu.org/\n[clang]: http://clang.llvm.org/\n[git]: https://git-scm.com/\n[make]: https://www.gnu.org/software/automake/\n[libsqlite3]: https://www.sqlite.org/index.html\n[Ruby]: https://www.ruby-lang.org\n[open_namespace]: https://github.com/postmodern/open_namespace#readme\n[rouge]: https://github.com/rouge-ruby/rouge#readme\n[async-io]: https://github.com/socketry/async-io#readme\n[wordlist]: https://github.com/postmodern/wordlist.rb#readme\n\n[ronin-support]: https://github.com/ronin-rb/ronin-support#readme\n[ronin-dns-proxy]: https://github.com/ronin-rb/ronin-dns-proxy#readme\n[ronin-repos]: https://github.com/ronin-rb/ronin-repos#readme\n[ronin-repos-synopsis]: https://github.com/ronin-rb/ronin-repos#synopsis\n[ronin-wordlists]: https://github.com/ronin-rb/ronin-wordlists#readme\n[ronin-wordlists-synopsis]: https://github.com/ronin-rb/ronin-wordlists#synopsis\n[ronin-core]: https://github.com/ronin-rb/ronin-core#readme\n[ronin-db]: https://github.com/ronin-rb/ronin-db#readme\n[ronin-db-synopsis]: https://github.com/ronin-rb/ronin-db#synopsis\n[ronin-listener]: https://github.com/ronin-rb/ronin-listener#readme\n[ronin-listener-dns]: https://github.com/ronin-rb/ronin-listener-dns#readme\n[ronin-listener-http]: https://github.com/ronin-rb/ronin-listener-http#readme\n[ronin-nmap]: https://github.com/ronin-rb/ronin-nmap#readme\n[ronin-masscan]: https://github.com/ronin-rb/ronin-masscan#readme\n[ronin-recon]: https://github.com/ronin-rb/ronin-recon#readme\n[ronin-recon-synopsis]: https://github.com/ronin-rb/ronin-recon#synopsis\n[ronin-fuzzer]: https://github.com/ronin-rb/ronin-fuzzer#readme\n[ronin-web]: https://github.com/ronin-rb/ronin-web#readme\n[ronin-web-server]: https://github.com/ronin-rb/ronin-web-server#readme\n[ronin-web-spider]: https://github.com/ronin-rb/ronin-web-spider#readme\n[ronin-web-user_agents]: https://github.com/ronin-rb/ronin-web-user_agents#readme\n[ronin-code-asm]: https://github.com/ronin-rb/ronin-code-asm#readme\n[ronin-code-sql]: https://github.com/ronin-rb/ronin-code-sql#readme\n[ronin-payloads]: https://github.com/ronin-rb/ronin-payloads#readme\n[ronin-exploits]: https://github.com/ronin-rb/ronin-exploits#readme\n[ronin-exploits-synopsis]: https://github.com/ronin-rb/ronin-exploits#synopsis\n[ronin-exploits-examples]: https://github.com/ronin-rb/ronin-exploits#examples\n[ronin-vulns]: https://github.com/ronin-rb/ronin-vulns#readme\n[ronin-vulns-synopsis]: https://github.com/ronin-rb/ronin-vulns#synopsis\n[ronin-app]: https://github.com/ronin-rb/ronin-app#readme\n","funding_links":["https://opencollective.com/ronin-rb","https://patreon.com/roninrb"],"categories":["Multi tools","Ruby","Security"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fronin-rb%2Fronin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fronin-rb%2Fronin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fronin-rb%2Fronin/lists"}