ronin 2.0.4 → 2.1.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +3 -3
  3. data/.gitignore +1 -0
  4. data/.rubocop.yml +5 -1
  5. data/ChangeLog.md +67 -1
  6. data/Gemfile +66 -29
  7. data/README.md +166 -21
  8. data/Rakefile +9 -0
  9. data/data/completions/ronin +655 -0
  10. data/data/templates/dns_proxy.rb.erb +35 -0
  11. data/gemspec.yml +27 -13
  12. data/lib/ronin/cli/binary_template.rb +124 -0
  13. data/lib/ronin/cli/commands/archive.rb +104 -0
  14. data/lib/ronin/cli/commands/banner_grab.rb +2 -0
  15. data/lib/ronin/cli/commands/bitflip.rb +1 -1
  16. data/lib/ronin/cli/commands/bitsquat.rb +119 -0
  17. data/lib/ronin/cli/commands/cert_dump.rb +20 -4
  18. data/lib/ronin/cli/commands/cert_gen.rb +11 -19
  19. data/lib/ronin/cli/commands/cert_grab.rb +4 -3
  20. data/lib/ronin/cli/commands/completion.rb +115 -0
  21. data/lib/ronin/cli/commands/dns_proxy.rb +235 -0
  22. data/lib/ronin/cli/commands/http.rb +80 -8
  23. data/lib/ronin/cli/commands/ip.rb +101 -0
  24. data/lib/ronin/cli/commands/iprange.rb +25 -8
  25. data/lib/ronin/cli/commands/netcat.rb +2 -0
  26. data/lib/ronin/cli/commands/new/dns_listener.rb +37 -0
  27. data/lib/ronin/cli/commands/new/dns_proxy.rb +99 -0
  28. data/lib/ronin/cli/commands/new/exploit.rb +34 -0
  29. data/lib/ronin/cli/commands/new/http_listener.rb +37 -0
  30. data/lib/ronin/cli/commands/new/nokogiri.rb +33 -0
  31. data/lib/ronin/cli/commands/new/payload.rb +34 -0
  32. data/lib/ronin/cli/commands/new/project.rb +1 -1
  33. data/lib/ronin/cli/commands/new/script.rb +1 -1
  34. data/lib/ronin/cli/commands/new/web_app.rb +37 -0
  35. data/lib/ronin/cli/commands/new/web_server.rb +37 -0
  36. data/lib/ronin/cli/commands/new/web_spider.rb +37 -0
  37. data/lib/ronin/cli/commands/new.rb +3 -1
  38. data/lib/ronin/cli/commands/pack.rb +339 -0
  39. data/lib/ronin/cli/commands/public_suffix_list.rb +2 -0
  40. data/lib/ronin/cli/commands/tld_list.rb +2 -0
  41. data/lib/ronin/cli/commands/unarchive.rb +128 -0
  42. data/lib/ronin/cli/commands/unhexdump.rb +3 -1
  43. data/lib/ronin/cli/commands/unpack.rb +195 -0
  44. data/lib/ronin/cli/commands/url.rb +2 -0
  45. data/lib/ronin/cli/http_shell.rb +25 -0
  46. data/lib/ronin/cli.rb +10 -0
  47. data/lib/ronin/version.rb +1 -1
  48. data/man/ronin-archive.1.md +49 -0
  49. data/man/ronin-asn.1 +60 -77
  50. data/man/ronin-asn.1.md +25 -21
  51. data/man/ronin-banner-grab.1 +10 -21
  52. data/man/ronin-banner-grab.1.md +9 -5
  53. data/man/ronin-bitflip.1 +35 -61
  54. data/man/ronin-bitflip.1.md +30 -26
  55. data/man/ronin-bitsquat.1 +40 -0
  56. data/man/ronin-bitsquat.1.md +43 -0
  57. data/man/ronin-cert-dump.1 +44 -54
  58. data/man/ronin-cert-dump.1.md +18 -14
  59. data/man/ronin-cert-gen.1 +73 -94
  60. data/man/ronin-cert-gen.1.md +38 -34
  61. data/man/ronin-cert-grab.1 +29 -37
  62. data/man/ronin-cert-grab.1.md +12 -8
  63. data/man/ronin-completion.1 +78 -0
  64. data/man/ronin-completion.1.md +80 -0
  65. data/man/ronin-decode.1 +32 -63
  66. data/man/ronin-decode.1.md +29 -25
  67. data/man/ronin-decrypt.1 +42 -57
  68. data/man/ronin-decrypt.1.md +20 -16
  69. data/man/ronin-dns-proxy.1 +100 -0
  70. data/man/ronin-dns-proxy.1.md +70 -0
  71. data/man/ronin-dns.1 +10 -21
  72. data/man/ronin-dns.1.md +9 -5
  73. data/man/ronin-email-addr.1 +27 -40
  74. data/man/ronin-email-addr.1.md +15 -11
  75. data/man/ronin-encode.1 +93 -63
  76. data/man/ronin-encode.1.md +64 -26
  77. data/man/ronin-encrypt.1 +42 -57
  78. data/man/ronin-encrypt.1.md +20 -16
  79. data/man/ronin-entropy.1 +11 -21
  80. data/man/ronin-entropy.1.md +8 -4
  81. data/man/ronin-escape.1 +22 -46
  82. data/man/ronin-escape.1.md +22 -18
  83. data/man/ronin-extract.1 +74 -149
  84. data/man/ronin-extract.1.md +73 -69
  85. data/man/ronin-grep.1 +77 -155
  86. data/man/ronin-grep.1.md +76 -72
  87. data/man/ronin-help.1 +3 -14
  88. data/man/ronin-help.1.md +2 -2
  89. data/man/ronin-hexdump.1 +249 -265
  90. data/man/ronin-hexdump.1.md +93 -89
  91. data/man/ronin-highlight.1 +8 -18
  92. data/man/ronin-highlight.1.md +8 -4
  93. data/man/ronin-hmac.1 +17 -30
  94. data/man/ronin-hmac.1.md +14 -10
  95. data/man/ronin-homoglyph.1 +11 -22
  96. data/man/ronin-homoglyph.1.md +10 -6
  97. data/man/ronin-host.1 +23 -47
  98. data/man/ronin-host.1.md +22 -18
  99. data/man/ronin-http.1 +40 -69
  100. data/man/ronin-http.1.md +40 -30
  101. data/man/ronin-ip.1 +70 -80
  102. data/man/ronin-ip.1.md +44 -28
  103. data/man/ronin-iprange.1 +14 -22
  104. data/man/ronin-iprange.1.md +12 -5
  105. data/man/ronin-irb.1 +9 -17
  106. data/man/ronin-irb.1.md +7 -3
  107. data/man/ronin-md5.1 +13 -24
  108. data/man/ronin-md5.1.md +11 -7
  109. data/man/ronin-netcat.1 +25 -51
  110. data/man/ronin-netcat.1.md +25 -21
  111. data/man/ronin-new-dns-proxy.1 +45 -0
  112. data/man/ronin-new-dns-proxy.1.md +44 -0
  113. data/man/ronin-new-project.1 +32 -45
  114. data/man/ronin-new-project.1.md +11 -11
  115. data/man/ronin-new-script.1 +10 -22
  116. data/man/ronin-new-script.1.md +4 -4
  117. data/man/ronin-new.1 +56 -31
  118. data/man/ronin-new.1.md +48 -8
  119. data/man/ronin-pack.1 +977 -0
  120. data/man/ronin-pack.1.md +929 -0
  121. data/man/ronin-proxy.1 +37 -63
  122. data/man/ronin-proxy.1.md +29 -25
  123. data/man/ronin-public-suffix-list.1 +16 -32
  124. data/man/ronin-public-suffix-list.1.md +13 -9
  125. data/man/ronin-quote.1 +17 -36
  126. data/man/ronin-quote.1.md +17 -13
  127. data/man/ronin-rot.1 +26 -39
  128. data/man/ronin-rot.1.md +15 -11
  129. data/man/ronin-sha1.1 +13 -24
  130. data/man/ronin-sha1.1.md +11 -7
  131. data/man/ronin-sha256.1 +13 -24
  132. data/man/ronin-sha256.1.md +11 -7
  133. data/man/ronin-sha512.1 +13 -24
  134. data/man/ronin-sha512.1.md +11 -7
  135. data/man/ronin-strings.1 +30 -55
  136. data/man/ronin-strings.1.md +27 -23
  137. data/man/ronin-tips.1 +8 -16
  138. data/man/ronin-tips.1.md +7 -3
  139. data/man/ronin-tld-list.1 +16 -32
  140. data/man/ronin-tld-list.1.md +13 -9
  141. data/man/ronin-typo.1 +14 -28
  142. data/man/ronin-typo.1.md +13 -9
  143. data/man/ronin-typosquat.1 +15 -32
  144. data/man/ronin-typosquat.1.md +15 -11
  145. data/man/ronin-unarchive.1.md +41 -0
  146. data/man/ronin-unescape.1 +22 -46
  147. data/man/ronin-unescape.1.md +22 -18
  148. data/man/ronin-unhexdump.1 +81 -91
  149. data/man/ronin-unhexdump.1.md +16 -12
  150. data/man/ronin-unpack.1 +978 -0
  151. data/man/ronin-unpack.1.md +920 -0
  152. data/man/ronin-unquote.1 +17 -36
  153. data/man/ronin-unquote.1.md +17 -13
  154. data/man/ronin-url.1 +19 -40
  155. data/man/ronin-url.1.md +19 -15
  156. data/man/ronin-xor.1 +14 -28
  157. data/man/ronin-xor.1.md +13 -9
  158. data/man/ronin.1 +208 -29
  159. data/man/ronin.1.md +156 -11
  160. data/scripts/setup +58 -0
  161. metadata +162 -73
  162. data/lib/ronin/config.rb +0 -95
  163. /data/data/{new → templates}/project/.gitignore +0 -0
  164. /data/data/{new → templates}/project/.ruby-version.erb +0 -0
  165. /data/data/{new → templates}/project/Dockerfile.erb +0 -0
  166. /data/data/{new → templates}/project/Gemfile.erb +0 -0
  167. /data/data/{new → templates}/project/Rakefile +0 -0
  168. /data/data/{new → templates}/project/project.rb.erb +0 -0
  169. /data/data/{new → templates}/script.rb.erb +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 18a3d5cc32bca9292acddc0c00ed1114bc8c8cd406c014c7053143fc3eea7cce
4
- data.tar.gz: 81baac7a55017d8086a3dff34a808910a735547468a98bf8f86b7269ce8ec8f2
3
+ metadata.gz: 83080c43d17f502c2eeffc66cba98644fe2c6d3f8a33cd5230f64c66ced7a375
4
+ data.tar.gz: 25893b73f24ca08634df9ff76dc994e5453d8d98c45f792208cd0826fc9d8c49
5
5
  SHA512:
6
- metadata.gz: 5066a3912ddb0da16d305ba983f8a346196a50496e2ebb95bb5a3550b7cb03d868550550aab3c27a4b13ae399af452cf923bf54ab2d1faf44279de6736ecac30
7
- data.tar.gz: 92cbf11e7b07149825cf1e97ed5fd153ae2e77ea1f1fc4092120b1a57b2beea7e79648d7eea111abd8a467db2c8968ad4d808643b5594e6529c9e6ddbbb700c7
6
+ metadata.gz: b8032e44bf301b21b5937581b3df2a910469e6697ec6f61c7867e6b8499c55afbdf4766465d1858df5d09ba011b4a4f61313ca9d0d8e2ab16578de497e77862f
7
+ data.tar.gz: adec05b8a2355ef4eac10e735705fd24f4e123e67d4bbcf90b384126a8820482d07f337b35a6e433335177f73e21ba979b0398d8a5c3f81d7a6cb6e375f3eeb8
@@ -9,14 +9,14 @@ jobs:
9
9
  fail-fast: false
10
10
  matrix:
11
11
  ruby:
12
- - '3.0'
13
12
  - '3.1'
14
13
  - '3.2'
14
+ - '3.3'
15
15
  # - jruby
16
16
  - truffleruby
17
17
  name: Ruby ${{ matrix.ruby }}
18
18
  steps:
19
- - uses: actions/checkout@v2
19
+ - uses: actions/checkout@v4
20
20
  - name: Set up Ruby
21
21
  uses: ruby/setup-ruby@v1
22
22
  with:
@@ -35,7 +35,7 @@ jobs:
35
35
  rubocop:
36
36
  runs-on: ubuntu-latest
37
37
  steps:
38
- - uses: actions/checkout@v2
38
+ - uses: actions/checkout@v4
39
39
  - name: Set up Ruby
40
40
  uses: ruby/setup-ruby@v1
41
41
  with:
data/.gitignore CHANGED
@@ -1,4 +1,5 @@
1
1
  /coverage
2
+ /data/completions/ronin
2
3
  /doc
3
4
  /pkg
4
5
  /man/*.[1-9]
data/.rubocop.yml CHANGED
@@ -15,7 +15,11 @@ Layout/ExtraSpacing:
15
15
  Exclude:
16
16
  - 'Gemfile'
17
17
 
18
+ Layout/HeredocIndentation:
19
+ Exclude:
20
+ - 'lib/ronin/cli/commands/pack.rb'
21
+
18
22
  # no need to add `frozen_string_literal: true` to new scripts/projects
19
23
  Style/FrozenStringLiteralComment:
20
24
  Exclude:
21
- - 'data/new/**/*'
25
+ - 'data/templates/**/*'
data/ChangeLog.md CHANGED
@@ -1,3 +1,61 @@
1
+ ### 2.1.0 / 2024-XX-XX
2
+
3
+ * Require [Ruby] >- 3.1.0.
4
+ * Require [wordlist] ~> 1.1.
5
+ * Require [ronin-core] ~> 0.2.
6
+ * Require [ronin-dns-proxy] ~> 0.1.
7
+ * Require [ronin-listener] ~> 0.1.
8
+ * Require [ronin-masscan] ~> 0.1.
9
+ * Require [ronin-nmap] ~> 0.1.
10
+ * Require [ronin-recon] ~> 0.1.
11
+ * Require [ronin-support] ~> 1.1.
12
+ * Require [ronin-vulns] ~> 0.2.
13
+ * Require [ronin-web] ~> 2.0.
14
+ * Require [ronin-wordlists] ~> 0.2.
15
+ * Removed unused `Ronin::Config` module.
16
+
17
+ #### CLI
18
+
19
+ * Added the `ronin archive` command.
20
+ * Added the `ronin unarchive` command.
21
+ * Added the `ronin bitsquat` command.
22
+ * Added the `ronin completion` command to install shell completion files
23
+ for all `ronin` and `ronin-*` commands for Bash and Zsh shells.
24
+ * Added the `ronin dns-proxy` command.
25
+ * Added the `ronin new dns-proxy` command.
26
+ * Added the `ronin pack` command.
27
+ * Added the `ronin unpack` command.
28
+ * Added the `--hex-octet`, `--octal-octet`, and `--ipv6-compat` options to the
29
+ `ronin ip` command.
30
+ * Added more accepted values to the `ronin http --user-agent` option.
31
+ * Added the `--cookie` and `--cookie-param` options to the `ronin http` command.
32
+ * Added the `cookie` and `set-cookie` commands to the `ronin http` shell.
33
+ * Added the `-s,--size` option to the `ronin iprange` command.
34
+ * Added support for `ronin cert-gen --key-type dsa`.
35
+ * All `--help` options and the `ronin irb` command now displays the Ronin logo
36
+ ASCII art.
37
+ * Alias `ronin tlds` to the `ronin tld-list` command.
38
+ * Alias `ronin public-suffixes` to the `ronin public-suffix-list` command.
39
+ * Alias `ronin new exploit` to the `ronin-exploits new` command.
40
+ * Alias `ronin new payload` to the `ronin-payloads new` command.
41
+ * Alias `ronin new dns-listener` to the `ronin-listener new dns` command.
42
+ * Alias `ronin new http-listener` to the `ronin-listener new http` command.
43
+ * Alias `ronin new web-app` to the `ronin-web new app` command.
44
+ * Alias `ronin new nokogiri` to the `ronin-web new nokogiri` command.
45
+ * Alias `ronin new web-server` to the `ronin-web new server` command.
46
+ * Alias `ronin new web-spider` to the `ronin-web new spider` command.
47
+
48
+ ### 2.0.5 / 2023-09-19
49
+
50
+ * Require [wordlist] ~> 1.0, >= 1.0.3 for macOS fixes.
51
+ * Require [ronin-support] ~> 1.0, >= 1.0.3.
52
+
53
+ #### CLI
54
+
55
+ * Fixed a bug in `ronin cert-gen` that prevented generating a new certificate
56
+ signed with an EC key (ex: `ronin cert-gen --key-type ec ...`).
57
+ * Fixed the formatting of the `ronin cert-gen` man-page.
58
+
1
59
  ### 2.0.4 / 2023-07-18
2
60
 
3
61
  * Require [wordlist] ~> 1.0, >= 1.0.2 for bug fixes.
@@ -909,15 +967,21 @@
909
967
  * Auto-indentation enabled.
910
968
  * Pretty-Print loaded.
911
969
 
970
+ [Ruby]: https://www.ruby-lang.org
912
971
  [open_namespace]: https://github.com/postmodern/open_namespace#readme
913
972
  [rouge]: https://github.com/rouge-ruby/rouge#readme
914
973
  [async-io]: https://github.com/socketry/async-io#readme
915
974
  [wordlist]: https://github.com/postmodern/wordlist.rb#readme
916
975
 
917
976
  [ronin-support]: https://github.com/ronin-rb/ronin-support#readme
918
- [ronin-repos]: https://github.com/ronin-rb/ronin-repos#readme
919
977
  [ronin-core]: https://github.com/ronin-rb/ronin-core#readme
978
+ [ronin-repos]: https://github.com/ronin-rb/ronin-repos#readme
920
979
  [ronin-db]: https://github.com/ronin-rb/ronin-db#readme
980
+ [ronin-dns-proxy]: https://github.com/ronin-rb/ronin-dns-proxy#readme
981
+ [ronin-wordlists]: https://github.com/ronin-rb/ronin-wordlists#readme
982
+ [ronin-listener]: https://github.com/ronin-rb/ronin-listener#readme
983
+ [ronin-nmap]: https://github.com/ronin-rb/ronin-nmap#readme
984
+ [ronin-masscan]: https://github.com/ronin-rb/ronin-masscan#readme
921
985
  [ronin-fuzzer]: https://github.com/ronin-rb/ronin-fuzzer#readme
922
986
  [ronin-web]: https://github.com/ronin-rb/ronin-web#readme
923
987
  [ronin-code-asm]: https://github.com/ronin-rb/ronin-code-asm#readme
@@ -925,3 +989,5 @@
925
989
  [ronin-payloads]: https://github.com/ronin-rb/ronin-payloads#readme
926
990
  [ronin-exploits]: https://github.com/ronin-rb/ronin-exploits#readme
927
991
  [ronin-vulns]: https://github.com/ronin-rb/ronin-vulns#readme
992
+ [ronin-recon]: https://github.com/ronin-rb/ronin-recon#readme
993
+ [ronin-app]: https://github.com/ronin-rb/ronin-app#readme
data/Gemfile CHANGED
@@ -6,55 +6,89 @@ gemspec
6
6
 
7
7
  gem 'jruby-openssl', '~> 0.7', platforms: :jruby
8
8
 
9
- gem 'net-telnet', '~> 0.1', group: :net
10
- if RUBY_VERSION >= '3.1.0'
11
- gem 'net-ftp', '~> 0.1', group: :net, platform: :mri
12
- gem 'net-smtp', '~> 0.1', group: :net, platform: :mri
13
- gem 'net-pop', '~> 0.1', group: :net, platform: :mri
14
- gem 'net-imap', '~> 0.1', group: :net, platform: :mri
9
+ group :net do
10
+ gem 'net-telnet', '~> 0.1'
11
+
12
+ platform :mri do
13
+ if RUBY_VERSION >= '3.1.0'
14
+ gem 'net-ftp', '~> 0.1'
15
+ gem 'net-smtp', '~> 0.1'
16
+ gem 'net-pop', '~> 0.1'
17
+ gem 'net-imap', '~> 0.1'
18
+ end
19
+ end
15
20
  end
16
21
 
17
- # gem 'command_kit', '~> 0.4', github: 'postmodern/command_kit.rb',
18
- # branch: '0.4.0'
22
+ # gem 'command_kit', '~> 0.5', github: 'postmodern/command_kit.rb',
23
+ # branch: 'main'
19
24
 
20
25
  group :database do
21
- gem 'sqlite3', '~> 1.0', platform: :mri
22
- gem 'activerecord-jdbcsqlite3-adapter', '~> 70.0.pre', platform: :jruby
26
+ gem 'sqlite3', '~> 1.0', platforms: [:mri, :truffleruby]
27
+
28
+ platform :jruby do
29
+ gem 'activerecord-jdbcsqlite3-adapter', '~> 70.0'
30
+ gem 'activerecord', '< 7.1.0'
31
+ end
23
32
  end
24
33
 
25
34
  # Library dependencies
26
- # gem 'ronin-support', '~> 1.0', github: 'ronin-rb/ronin-support',
27
- # branch: 'main'
28
- # gem 'ronin-core', '~> 0.1', github: 'ronin-rb/ronin-core',
29
- # branch: 'main'
30
- # gem 'ronin-repos', '~> 0.1', github: 'ronin-rb/ronin-repos',
31
- # branch: 'main'
32
- # gem 'ronin-db', '~> 0.1', github: 'ronin-rb/ronin-db',
33
- # branch: 'main'
34
- # gem 'ronin-db-activerecord', '~> 0.1', github: 'ronin-rb/ronin-db-activerecord',
35
- # branch: 'main'
36
- # gem 'ronin-fuzzer', '~> 0.1', github: 'ronin-rb/ronin-fuzzer',
37
- # branch: 'main'
35
+ # gem 'ronin-support', '~> 1.1', github: "ronin-rb/ronin-support",
36
+ # branch: 'main'
37
+ # gem 'ronin-core', '~> 0.2', github: 'ronin-rb/ronin-core',
38
+ # branch: 'main'
39
+ # gem 'ronin-repos', '~> 0.1', github: 'ronin-rb/ronin-repos',
40
+ # branch: 'main'
41
+ # gem 'ronin-db-activerecord', '~> 0.2', github: "ronin-rb/ronin-db-activerecord",
42
+ # branch: 'main'
43
+ # gem 'ronin-db', '~> 0.2', github: "ronin-rb/ronin-db",
44
+ # branch: 'main'
45
+ # gem 'ronin-listener-dns', '~> 0.1', github: "ronin-rb/ronin-listener-dns",
46
+ # branch: 'main'
47
+ # gem 'ronin-listener-http', '~> 0.1', github: "ronin-rb/ronin-listener-http",
48
+ # branch: 'main'
49
+ # gem 'ronin-listener', '~> 0.1', github: "ronin-rb/ronin-listener",
50
+ # branch: 'main'
51
+ # gem 'ronin-fuzzer', '~> 0.2', github: 'ronin-rb/ronin-fuzzer',
52
+ # branch: '0.2.0'
38
53
  # gem 'ronin-post_ex', '~> 0.1', github: 'ronin-rb/ronin-post_ex',
39
54
  # branch: 'main'
40
55
  # gem 'ronin-code-asm', '~> 1.0', github: 'ronin-rb/ronin-code-asm',
41
56
  # branch: 'main'
42
57
  # gem 'ronin-code-sql', '~> 2.0', github: 'ronin-rb/ronin-code-sql',
43
58
  # branch: 'main'
44
- # gem 'ronin-payloads', '~> 0.1', github: 'ronin-rb/ronin-payloads',
59
+ # gem 'ronin-payloads', '~> 0.2', github: 'ronin-rb/ronin-payloads',
45
60
  # branch: 'main'
46
- # gem 'ronin-exploits', '~> 1.0', github: 'ronin-rb/ronin-exploits',
61
+ # gem 'ronin-exploits', '~> 1.1', github: 'ronin-rb/ronin-exploits',
47
62
  # branch: 'main'
48
- # gem 'ronin-vulns', '~> 0.1', github: 'ronin-rb/ronin-vulns',
63
+ # gem 'ronin-vulns', '~> 0.2', github: 'ronin-rb/ronin-vulns',
49
64
  # branch: 'main'
50
65
  # gem 'ronin-web-server', '~> 0.1', github: 'ronin-rb/ronin-web-server',
51
66
  # branch: 'main'
52
- # gem 'ronin-web-spider', '~> 0.1', github: 'ronin-rb/ronin-web-spider',
67
+ # gem 'ronin-web-spider', '~> 0.2', github: 'ronin-rb/ronin-web-spider',
53
68
  # branch: 'main'
54
69
  # gem 'ronin-web-user_agents', '~> 0.1', github: 'ronin-rb/ronin-web-user_agents',
55
70
  # branch: 'main'
56
- # gem 'ronin-web', '~> 1.0', github: 'ronin-rb/ronin-web',
57
- # branch: 'main'
71
+ # gem 'ronin-support-web', '~> 0.1', github: 'ronin-rb/ronin-support-web',
72
+ # branch: 'main'
73
+ # gem 'ronin-web-browser', '~> 0.1', github: 'ronin-rb/ronin-web-browser',
74
+ # branch: 'main'
75
+ # gem 'ronin-web-session_cookie', '~> 0.1', github: 'ronin-rb/ronin-web-session_cookie',
76
+ # branch: 'main'
77
+ # gem 'ronin-web', '~> 2.0', github: 'ronin-rb/ronin-web',
78
+ # branch: 'main'
79
+
80
+ # gem 'ronin-dns-proxy', '~> 0.1', github: 'ronin-rb/ronin-dns-proxy',
81
+ # branch: 'main'
82
+ # gem 'ronin-nmap', '~> 0.1', github: 'ronin-rb/ronin-nmap',
83
+ # branch: 'main'
84
+ # gem 'ronin-masscan', '~> 0.1', github: 'ronin-rb/ronin-masscan',
85
+ # branch: 'main'
86
+ # gem 'ronin-wordlists', '~> 0.1', github: 'ronin-rb/ronin-wordlists',
87
+ # branch: 'main'
88
+ # gem 'ronin-recon', '~> 0.1', github: 'ronin-rb/ronin-recon',
89
+ # branch: 'main'
90
+ # gem 'ronin-app', '~> 0.1', github: 'ronin-rb/ronin-app',
91
+ # branch: 'main'
58
92
 
59
93
  group :development do
60
94
  gem 'rake'
@@ -63,7 +97,7 @@ group :development do
63
97
  gem 'simplecov', '~> 0.20'
64
98
 
65
99
  gem 'kramdown', '~> 2.0'
66
- gem 'kramdown-man', '~> 0.1'
100
+ gem 'kramdown-man', '~> 1.0'
67
101
 
68
102
  gem 'redcarpet', platform: :mri
69
103
  gem 'yard', '~> 0.9'
@@ -74,4 +108,7 @@ group :development do
74
108
  gem 'stackprof', require: false, platform: :mri
75
109
  gem 'rubocop', require: false, platform: :mri
76
110
  gem 'rubocop-ronin', require: false, platform: :mri
111
+ gem 'pry', require: false
112
+
113
+ gem 'command_kit-completion', '~> 0.1', require: false
77
114
  end
data/README.md CHANGED
@@ -9,7 +9,6 @@
9
9
  * [Issues](https://github.com/ronin-rb/ronin/issues)
10
10
  * [Documentation](https://ronin-rb.dev/docs/ronin/frames)
11
11
  * [Discord](https://discord.gg/6WAb3PsVX9) |
12
- [Twitter](https://twitter.com/ronin_rb) |
13
12
  [Mastodon](https://infosec.exchange/@ronin_rb)
14
13
 
15
14
  ## Description
@@ -25,7 +24,8 @@ HTTP, [scanning for web vulnerabilities][ronin-vulns-synopsis],
25
24
  [payloads][ronin-payloads], [run exploits][ronin-exploits-synopsis],
26
25
  [write new exploits][ronin-exploits-examples],
27
26
  [managing local databases][ronin-db-synopsis],
28
- [fuzzing data][ronin-fuzzer], and much more.
27
+ [fuzzing data][ronin-fuzzer],
28
+ [perform recon][ronin-recon-synopsis], and much more.
29
29
 
30
30
  ### Who is Ronin for?
31
31
 
@@ -42,6 +42,7 @@ HTTP, [scanning for web vulnerabilities][ronin-vulns-synopsis],
42
42
  * A fully-loaded Ruby REPL.
43
43
  * An ecosystem of high-quality security related Ruby libraries, APIs, and
44
44
  commands.
45
+ * A lightweight local web UI.
45
46
 
46
47
  ### What can you do with Ronin?
47
48
 
@@ -53,9 +54,11 @@ HTTP, [scanning for web vulnerabilities][ronin-vulns-synopsis],
53
54
  using [ronin-repos].
54
55
  * Import and query data using the [ronin-db] database.
55
56
  * Fuzz data using [ronin-fuzzer].
57
+ * Perform recon using [ronin-recon].
56
58
  * Use common payloads or write your own using [ronin-payloads].
57
59
  * Write/run exploits using [ronin-exploits].
58
60
  * Scan for web vulnerabilities using [ronin-vulns].
61
+ * Performs scans and browse the database in your browser using [ronin-app].
59
62
 
60
63
  ## Synopsis
61
64
 
@@ -70,15 +73,18 @@ Arguments:
70
73
  [ARGS ...] Additional arguments for the command
71
74
 
72
75
  Commands:
76
+ archive
73
77
  asn
74
78
  banner-grab
75
79
  bitflip
76
80
  cert-dump
77
81
  cert-gen
78
82
  cert-grab
83
+ completion
79
84
  decode, dec
80
85
  decrypt
81
86
  dns
87
+ dns-proxy
82
88
  email-addr
83
89
  encode, enc
84
90
  encrypt
@@ -99,6 +105,7 @@ Commands:
99
105
  md5
100
106
  netcat, nc
101
107
  new
108
+ pack
102
109
  proxy
103
110
  public-suffix-list
104
111
  quote
@@ -111,20 +118,27 @@ Commands:
111
118
  tips
112
119
  typo
113
120
  typosquat
121
+ unarchive
114
122
  unescape
115
123
  unhexdump
124
+ unpack
116
125
  unquote
117
126
  url
118
127
  xor
119
128
 
120
129
  Additional Ronin Commands:
121
130
  $ ronin-repos
131
+ $ ronin-wordlists
122
132
  $ ronin-db
123
133
  $ ronin-web
124
134
  $ ronin-fuzzer
135
+ $ ronin-masscan
136
+ $ ronin-nmap
137
+ $ ronin-recon
125
138
  $ ronin-payloads
126
139
  $ ronin-exploits
127
140
  $ ronin-vulns
141
+ $ ronin-app
128
142
  ```
129
143
 
130
144
  List ronin commands:
@@ -147,20 +161,35 @@ $ ronin tips
147
161
 
148
162
  Open the Ronin Ruby REPL:
149
163
 
150
- ```shell
151
- $ ronin irb
152
164
  ```
165
+ $ ronin irb
166
+ , Jµ ▓▓█▓
167
+ J▌ ▐▓██▌ ████ ██ ▐███D
168
+ ╓▄▓▓█████▌ ██µ ████ ▄███ÖJ██▌ ███▌
169
+ ,╓µ▄▄▄▄▄▄▄▄µ;, ,▄▓██████████ ▐███ ▐███▀ ███▌ ████µ ▄███
170
+ ¬∞MÆ▓███████████████████████▓M ▄██████▀▀╙████▌ ████▌ ████ ▄███ J█████ ███▌
171
+ `█████▀▀▀▀▀███████ -████▀└ ████ ▐█████n ▄███O ███▌ ██████████
172
+ ▓████L ████▀ ▓████ ▓███Ö ███████ ███▌ ▓███ ▐█████████▀
173
+ ▄████▀ ,╓▄▄▄█████ J████Ü ,███▌ ▄███████████ J███▀ ████ █████
174
+ J█████████████████─ ████▌ ████ ████`██████▌ ████ ▐███Ü ▐███Ü
175
+ ███████████▀▀▀╙└ ▐████ J███▌ ▓███▌ ²█████ J███Ü ███▌ ▀█▌
176
+ ▓██████████▌ ████▌ ████ ;████ ▀███▀ ███▌ J▀▀▀- █
177
+ ▄█████▀ ▀█████µ ▐████ ,▄▓████▀ ████▀ ███ J███ `
178
+ J█████- ╙▀███▄ ████████████▀╙ J█▀▀▀ █U ▀█▌
179
+ ████▀ ▀███ ▄████████▀▀ ╨ █
180
+ ▓██▀ ²▀█▄ █▀▀▀╙└
181
+ ▄██╜ ╙W
182
+ J█▀
183
+ ▌└
184
+
153
185
 
154
- Generate a new Ruby script with [ronin-support] preloaded:
155
-
156
- ```shell
157
- $ ronin new script foo.rb
186
+ irb(ronin)>
158
187
  ```
159
188
 
160
- Generate a new Ruby project with a `Gemfile`:
189
+ Starts and opens the interactive Web UI for Ronin:
161
190
 
162
- ```shell
163
- $ ronin new project foo
191
+ ```
192
+ $ ronin-app
164
193
  ```
165
194
 
166
195
  ### Binary
@@ -781,9 +810,106 @@ Print the HTTP status of every URL in a file:
781
810
  $ ronin url --file urls.txt --status
782
811
  ```
783
812
 
813
+ ### Generators
814
+
815
+ Generate a new Ruby script with [ronin-support] preloaded:
816
+
817
+ ```shell
818
+ $ ronin new script foo.rb
819
+ ```
820
+
821
+ Generate a new Ruby project with a `Gemfile`:
822
+
823
+ ```shell
824
+ $ ronin new project foo
825
+ ```
826
+
827
+ Generate a new [nokogiri] Ruby script for parsing HTML/XML:
828
+
829
+ [nokogiri]: https://nokogiri.org/
830
+
831
+ ```shell
832
+ $ ronin new nokogiri foo.rb
833
+ ```
834
+
835
+ Generate a new [ronin-web-server] Ruby script:
836
+
837
+ ```shell
838
+ $ ronin new web-server my_server.rb
839
+ ```
840
+
841
+ Generate a new [ronin-web-server] based web app:
842
+
843
+ ```shell
844
+ $ ronin new web-app my_app
845
+ ```
846
+
847
+ Generate a new [ronin-web-spider] Ruby script:
848
+
849
+ ```shell
850
+ $ ronin new web-spider --host=example.com my_spider.rb
851
+ ```
852
+
853
+ Generate a [ronin-listener-dns] script:
854
+
855
+ ```shell
856
+ $ ronin new dns-listener my_dns_listener.rb
857
+ ```
858
+
859
+ Generate a [ronin-dns-proxy] script:
860
+
861
+ ```shell
862
+ $ ronin new dns-proxy my_dns_proxy.rb
863
+ ```
864
+
865
+ Generate a [ronin-listener-http] script:
866
+
867
+ ```shell
868
+ $ ronin new http-listener my_http_listener.rb
869
+ ```
870
+
871
+ Generate a [ronin-exploits] script:
872
+
873
+ ```shell
874
+ $ ronin new exploit my_exploit.rb
875
+ ```
876
+
877
+ Generate a [ronin-payloads] script:
878
+
879
+ ```shell
880
+ $ ronin new payload my_payload.rb
881
+ ```
882
+
883
+ ### Archive
884
+
885
+ Archive files:
886
+
887
+ ```shell
888
+ $ ronin archive -o archive.zip file1.txt file2.txt
889
+ ```
890
+
891
+ Archive files using tar format:
892
+
893
+ ```shell
894
+ $ ronin archive -o archive.tar file1.txt file2.txt
895
+ ```
896
+
897
+ Unarchive files:
898
+
899
+ ```shell
900
+ $ ronin unarchive arch1.tar arch2.zip
901
+ ```
902
+
903
+ Unarchive a file with explicit format:
904
+
905
+ ```shell
906
+ $ ronin unarchive -f zip arch2.jar
907
+ ```
908
+
784
909
  ### See Also
785
910
 
786
911
  * [ronin-repos](https://github.com/ronin-rb/ronin-repos#synopsis)
912
+ * [ronin-wordlists](https://github.com/ronin-rb/ronin-wordlists#synopsis)
787
913
  * [ronin-db](https://github.com/ronin-rb/ronin-db#synopsis)
788
914
  * [ronin-web](https://github.com/ronin-rb/ronin-web#synopsis)
789
915
  * [ronin-fuzzer](https://github.com/ronin-rb/ronin-fuzzer#synopsis)
@@ -797,22 +923,29 @@ $ ronin url --file urls.txt --status
797
923
  * [make]
798
924
  * [git]
799
925
  * [libsqlite3]
800
- * [Ruby] >= 3.0.0
926
+ * [Ruby] >= 3.1.0
801
927
  * [open_namespace] ~> 0.4
802
928
  * [rouge] ~> 3.0
803
929
  * [async-io] ~> 1.0
804
- * [wordlist] ~> 1.0, >= 1.0.2
805
- * [ronin-support] ~> 1.0
806
- * [ronin-core] ~> 0.1, >= 0.1.2
930
+ * [wordlist] ~> 1.1
931
+ * [ronin-support] ~> 1.1
932
+ * [ronin-dns-proxy] ~> 0.1
933
+ * [ronin-core] ~> 0.2
807
934
  * [ronin-repos] ~> 0.1
935
+ * [ronin-wordlists] ~> 0.1
808
936
  * [ronin-db] ~> 0.1
937
+ * [ronin-listener] ~> 0.1
938
+ * [ronin-nmap] ~> 0.1
939
+ * [ronin-masscan] ~> 0.1
940
+ * [ronin-recon] ~> 0.1
809
941
  * [ronin-fuzzer] ~> 0.1
810
- * [ronin-web] ~> 1.0
942
+ * [ronin-web] ~> 2.0
811
943
  * [ronin-code-asm] ~> 1.0
812
944
  * [ronin-code-sql] ~> 2.0
813
945
  * [ronin-payloads] ~> 0.1
814
946
  * [ronin-exploits] ~> 1.0
815
- * [ronin-vulns] ~> 0.1
947
+ * [ronin-vulns] ~> 0.2
948
+ * [ronin-app] ~> 0.1
816
949
 
817
950
  ## Install
818
951
 
@@ -824,9 +957,10 @@ curl -o ronin-install.sh https://raw.githubusercontent.com/ronin-rb/scripts/main
824
957
 
825
958
  ### Manually
826
959
 
827
- ```shell
828
- $ gem install ronin
829
- ```
960
+ See the [manual install][manual-instructions] instructions for how to install
961
+ Ronin and it's additional dependencies on your platform.
962
+
963
+ [manual-instructions]: https://ronin-rb.dev/install/#manual-instructions
830
964
 
831
965
  ### Docker
832
966
 
@@ -851,7 +985,7 @@ docker run --mount type=bind,source="$HOME",target=/home/ronin -it ronin
851
985
  1. [Fork It!](https://github.com/ronin-rb/ronin/fork)
852
986
  2. Clone It!
853
987
  3. `cd ronin`
854
- 4. `bundle install`
988
+ 4. `./scripts/setup`
855
989
  5. `git checkout -b my_feature`
856
990
  6. Code It!
857
991
  7. `bundle exec rake spec`
@@ -889,11 +1023,21 @@ along with Ronin. If not, see <https://www.gnu.org/licenses/>.
889
1023
  [wordlist]: https://github.com/postmodern/wordlist.rb#readme
890
1024
 
891
1025
  [ronin-support]: https://github.com/ronin-rb/ronin-support#readme
1026
+ [ronin-dns-proxy]: https://github.com/ronin-rb/ronin-dns-proxy#readme
892
1027
  [ronin-repos]: https://github.com/ronin-rb/ronin-repos#readme
893
1028
  [ronin-repos-synopsis]: https://github.com/ronin-rb/ronin-repos#synopsis
1029
+ [ronin-wordlists]: https://github.com/ronin-rb/ronin-wordlists#readme
1030
+ [ronin-wordlists-synopsis]: https://github.com/ronin-rb/ronin-wordlists#synopsis
894
1031
  [ronin-core]: https://github.com/ronin-rb/ronin-core#readme
895
1032
  [ronin-db]: https://github.com/ronin-rb/ronin-db#readme
896
1033
  [ronin-db-synopsis]: https://github.com/ronin-rb/ronin-db#synopsis
1034
+ [ronin-listener]: https://github.com/ronin-rb/ronin-listener#readme
1035
+ [ronin-listener-dns]: https://github.com/ronin-rb/ronin-listener-dns#readme
1036
+ [ronin-listener-http]: https://github.com/ronin-rb/ronin-listener-http#readme
1037
+ [ronin-nmap]: https://github.com/ronin-rb/ronin-nmap#readme
1038
+ [ronin-masscan]: https://github.com/ronin-rb/ronin-masscan#readme
1039
+ [ronin-recon]: https://github.com/ronin-rb/ronin-recon#readme
1040
+ [ronin-recon-synopsis]: https://github.com/ronin-rb/ronin-recon#synopsis
897
1041
  [ronin-fuzzer]: https://github.com/ronin-rb/ronin-fuzzer#readme
898
1042
  [ronin-web]: https://github.com/ronin-rb/ronin-web#readme
899
1043
  [ronin-web-server]: https://github.com/ronin-rb/ronin-web-server#readme
@@ -907,3 +1051,4 @@ along with Ronin. If not, see <https://www.gnu.org/licenses/>.
907
1051
  [ronin-exploits-examples]: https://github.com/ronin-rb/ronin-exploits#examples
908
1052
  [ronin-vulns]: https://github.com/ronin-rb/ronin-vulns#readme
909
1053
  [ronin-vulns-synopsis]: https://github.com/ronin-rb/ronin-vulns#synopsis
1054
+ [ronin-app]: https://github.com/ronin-rb/ronin-app#readme
data/Rakefile CHANGED
@@ -41,3 +41,12 @@ task :docs => [:yard]
41
41
 
42
42
  require 'kramdown/man/task'
43
43
  Kramdown::Man::Task.new
44
+
45
+ require 'command_kit/completion/task'
46
+ CommandKit::Completion::Task.new(
47
+ class_file: 'ronin/cli',
48
+ class_name: 'Ronin::CLI',
49
+ output_file: 'data/completions/ronin'
50
+ )
51
+
52
+ task :setup => %w[man command_kit:completion]