ronin 2.0.0 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (148) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +14 -0
  3. data/.rubocop.yml +21 -0
  4. data/ChangeLog.md +35 -2
  5. data/Gemfile +20 -16
  6. data/README.md +42 -23
  7. data/Rakefile +2 -2
  8. data/bin/ronin +6 -7
  9. data/data/new/project/Gemfile.erb +9 -9
  10. data/gemspec.yml +7 -7
  11. data/lib/ronin/cli/char_set_options.rb +1 -1
  12. data/lib/ronin/cli/cipher_command.rb +3 -1
  13. data/lib/ronin/cli/command.rb +3 -0
  14. data/lib/ronin/cli/commands/asn.rb +1 -1
  15. data/lib/ronin/cli/commands/banner_grab.rb +5 -3
  16. data/lib/ronin/cli/commands/cert_dump.rb +4 -7
  17. data/lib/ronin/cli/commands/cert_gen.rb +4 -4
  18. data/lib/ronin/cli/commands/cert_grab.rb +5 -6
  19. data/lib/ronin/cli/commands/decode.rb +14 -14
  20. data/lib/ronin/cli/commands/dns.rb +2 -2
  21. data/lib/ronin/cli/commands/encode.rb +14 -14
  22. data/lib/ronin/cli/commands/extract.rb +1 -1
  23. data/lib/ronin/cli/commands/grep.rb +7 -5
  24. data/lib/ronin/cli/commands/hexdump.rb +54 -22
  25. data/lib/ronin/cli/commands/hmac.rb +1 -1
  26. data/lib/ronin/cli/commands/host.rb +15 -15
  27. data/lib/ronin/cli/commands/http.rb +42 -25
  28. data/lib/ronin/cli/commands/ip.rb +5 -3
  29. data/lib/ronin/cli/commands/iprange.rb +2 -2
  30. data/lib/ronin/cli/commands/netcat.rb +32 -38
  31. data/lib/ronin/cli/commands/new/project.rb +19 -19
  32. data/lib/ronin/cli/commands/new/script.rb +12 -12
  33. data/lib/ronin/cli/commands/proxy.rb +37 -41
  34. data/lib/ronin/cli/commands/rot.rb +11 -10
  35. data/lib/ronin/cli/commands/strings.rb +1 -1
  36. data/lib/ronin/cli/commands/unhexdump.rb +1 -1
  37. data/lib/ronin/cli/dns.rb +3 -0
  38. data/lib/ronin/cli/file_processor_command.rb +3 -0
  39. data/lib/ronin/cli/host_and_port.rb +58 -0
  40. data/lib/ronin/cli/http_shell.rb +19 -16
  41. data/lib/ronin/cli/key_options.rb +3 -5
  42. data/lib/ronin/cli/method_options.rb +0 -2
  43. data/lib/ronin/cli/pattern_options.rb +5 -6
  44. data/lib/ronin/cli/printing/syntax_highlighting.rb +3 -0
  45. data/lib/ronin/cli/typo_options.rb +1 -1
  46. data/lib/ronin/cli/value_processor_command.rb +1 -1
  47. data/lib/ronin/config.rb +3 -3
  48. data/lib/ronin/version.rb +2 -2
  49. data/man/ronin-asn.1 +11 -1
  50. data/man/ronin-asn.1.md +9 -1
  51. data/man/ronin-banner-grab.1 +1 -1
  52. data/man/ronin-banner-grab.1.md +1 -1
  53. data/man/ronin-bitflip.1 +1 -1
  54. data/man/ronin-bitflip.1.md +1 -1
  55. data/man/ronin-cert-dump.1 +1 -1
  56. data/man/ronin-cert-dump.1.md +1 -1
  57. data/man/ronin-cert-gen.1 +16 -7
  58. data/man/ronin-cert-gen.1.md +11 -5
  59. data/man/ronin-cert-grab.1 +1 -1
  60. data/man/ronin-cert-grab.1.md +1 -1
  61. data/man/ronin-decode.1 +1 -1
  62. data/man/ronin-decode.1.md +1 -1
  63. data/man/ronin-decrypt.1 +31 -1
  64. data/man/ronin-decrypt.1.md +19 -1
  65. data/man/ronin-dns.1 +2 -2
  66. data/man/ronin-dns.1.md +2 -2
  67. data/man/ronin-email-addr.1 +3 -3
  68. data/man/ronin-email-addr.1.md +3 -3
  69. data/man/ronin-encode.1 +1 -1
  70. data/man/ronin-encode.1.md +1 -1
  71. data/man/ronin-encrypt.1 +31 -1
  72. data/man/ronin-encrypt.1.md +19 -1
  73. data/man/ronin-entropy.1 +1 -1
  74. data/man/ronin-entropy.1.md +1 -1
  75. data/man/ronin-escape.1 +2 -2
  76. data/man/ronin-escape.1.md +2 -2
  77. data/man/ronin-extract.1 +1 -1
  78. data/man/ronin-extract.1.md +1 -1
  79. data/man/ronin-grep.1 +1 -1
  80. data/man/ronin-grep.1.md +1 -1
  81. data/man/ronin-help.1 +1 -1
  82. data/man/ronin-help.1.md +1 -1
  83. data/man/ronin-hexdump.1 +2 -2
  84. data/man/ronin-hexdump.1.md +2 -2
  85. data/man/ronin-highlight.1 +1 -1
  86. data/man/ronin-highlight.1.md +1 -1
  87. data/man/ronin-hmac.1 +1 -1
  88. data/man/ronin-hmac.1.md +1 -1
  89. data/man/ronin-homoglyph.1 +1 -1
  90. data/man/ronin-homoglyph.1.md +1 -1
  91. data/man/ronin-host.1 +3 -3
  92. data/man/ronin-host.1.md +3 -3
  93. data/man/ronin-http.1 +1 -1
  94. data/man/ronin-http.1.md +1 -1
  95. data/man/ronin-ip.1 +1 -1
  96. data/man/ronin-ip.1.md +1 -1
  97. data/man/ronin-iprange.1 +1 -1
  98. data/man/ronin-iprange.1.md +1 -1
  99. data/man/ronin-irb.1 +1 -1
  100. data/man/ronin-irb.1.md +1 -1
  101. data/man/ronin-md5.1 +1 -1
  102. data/man/ronin-md5.1.md +1 -1
  103. data/man/ronin-netcat.1 +1 -1
  104. data/man/ronin-netcat.1.md +1 -1
  105. data/man/ronin-new-project.1 +1 -1
  106. data/man/ronin-new-project.1.md +1 -1
  107. data/man/ronin-new-script.1 +1 -1
  108. data/man/ronin-new-script.1.md +1 -1
  109. data/man/ronin-new.1 +1 -1
  110. data/man/ronin-new.1.md +1 -1
  111. data/man/ronin-proxy.1 +2 -2
  112. data/man/ronin-proxy.1.md +2 -2
  113. data/man/ronin-public-suffix-list.1 +11 -1
  114. data/man/ronin-public-suffix-list.1.md +9 -1
  115. data/man/ronin-quote.1 +2 -2
  116. data/man/ronin-quote.1.md +2 -2
  117. data/man/ronin-rot.1 +20 -3
  118. data/man/ronin-rot.1.md +14 -3
  119. data/man/ronin-sha1.1 +1 -1
  120. data/man/ronin-sha1.1.md +1 -1
  121. data/man/ronin-sha256.1 +2 -2
  122. data/man/ronin-sha256.1.md +2 -2
  123. data/man/ronin-sha512.1 +1 -1
  124. data/man/ronin-sha512.1.md +1 -1
  125. data/man/ronin-strings.1 +1 -1
  126. data/man/ronin-strings.1.md +1 -1
  127. data/man/ronin-tips.1 +1 -1
  128. data/man/ronin-tips.1.md +1 -1
  129. data/man/ronin-tld-list.1 +11 -1
  130. data/man/ronin-tld-list.1.md +9 -1
  131. data/man/ronin-typo.1 +1 -1
  132. data/man/ronin-typo.1.md +1 -1
  133. data/man/ronin-typosquat.1 +1 -1
  134. data/man/ronin-typosquat.1.md +1 -1
  135. data/man/ronin-unescape.1 +1 -1
  136. data/man/ronin-unescape.1.md +1 -1
  137. data/man/ronin-unhexdump.1 +1 -1
  138. data/man/ronin-unhexdump.1.md +1 -1
  139. data/man/ronin-unquote.1 +1 -1
  140. data/man/ronin-unquote.1.md +1 -1
  141. data/man/ronin-url.1 +1 -1
  142. data/man/ronin-url.1.md +1 -1
  143. data/man/ronin-xor.1 +1 -1
  144. data/man/ronin-xor.1.md +1 -1
  145. data/man/ronin.1 +1 -1
  146. data/man/ronin.1.md +1 -1
  147. data/ronin.gemspec +4 -3
  148. metadata +40 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5b96dfac7bb76a9141b93ec0fb0de42a39b33b395ba1a0d946ad6a1be89f080f
4
- data.tar.gz: bddecb41842c7930939cce565afc39d93881c27bff7ef51cfb9f730d2e77e020
3
+ metadata.gz: 31356f467f009277f4c840fb645f3f64bfba3c6d9e1cf1b1bef2dee177dc4b96
4
+ data.tar.gz: 4cce57a146892ac6b05bf6a41aa35467d50e307c74ed6150cfdf05234aa177f2
5
5
  SHA512:
6
- metadata.gz: 3c61141e197c44975416cc10c76a13962b9bc3764d1892fc60ded4785aabf960eeab2bbdfb8b1d5e0c6db523afeb3f46c9c9fcb35c15d581fbdab287e185889a
7
- data.tar.gz: 1d8f93d1f6bcef6b08cafc1527bfa81d46ab7ddb31bdab97813c4cc3b40c30674d31593a513dcf3468a7ad80134b00165f0cbf1dbb3bcf059f17a828e6dbfd20
6
+ metadata.gz: 244f986f64b8ee769769ca050321ff3ad6ebe4de5ea7c9f7f509514e32e02d580fbd391bf65c1a35238f2b42825050082fd0a1a06c491e447462a603b7a3c9de
7
+ data.tar.gz: 312f52036a301608b240fd91a26f2d3632eafd1f0c193ef6127851eb43e69840c443a8f3f9608ab7ad8d522e7fb58d96e45e8e32cdfac00a59e931ed636b7d48
@@ -30,3 +30,17 @@ jobs:
30
30
  run: bundle install --jobs 4 --retry 3
31
31
  - name: Run tests
32
32
  run: bundle exec rake test
33
+
34
+ # rubocop linting
35
+ rubocop:
36
+ runs-on: ubuntu-latest
37
+ steps:
38
+ - uses: actions/checkout@v2
39
+ - name: Set up Ruby
40
+ uses: ruby/setup-ruby@v1
41
+ with:
42
+ ruby-version: 3.0
43
+ - name: Install dependencies
44
+ run: bundle install --jobs 4 --retry 3
45
+ - name: Run rubocop
46
+ run: bundle exec rubocop --parallel
data/.rubocop.yml ADDED
@@ -0,0 +1,21 @@
1
+ AllCops:
2
+ NewCops: enable
3
+ SuggestExtensions: false
4
+ TargetRubyVersion: 3.1
5
+
6
+ inherit_gem:
7
+ rubocop-ronin: rubocop.yml
8
+
9
+ #
10
+ # ronin specific exceptions
11
+ #
12
+
13
+ # this rule does not take into account the spacing of commented out lines
14
+ Layout/ExtraSpacing:
15
+ Exclude:
16
+ - 'Gemfile'
17
+
18
+ # no need to add `frozen_string_literal: true` to new scripts/projects
19
+ Style/FrozenStringLiteralComment:
20
+ Exclude:
21
+ - 'data/new/**/*'
data/ChangeLog.md CHANGED
@@ -1,4 +1,37 @@
1
- ### 2.0.0 / 2023-XX-XX
1
+ ### 2.0.2 / 2023-06-09
2
+
3
+ * Documentation fixes and improvements.
4
+
5
+ #### CLI
6
+
7
+ * Fixed a bug in the `ronin ip` command where empty lines would be printed
8
+ if the IP had no hostname.
9
+ * Fixed a bug in the `ronin hexdump` command where the `--type` option was being
10
+ ignored.
11
+ * Fixed the `Usage:` of the `ronin host` and `ronin dns` commands.
12
+ * Fixed typos in the `ronin email-addr`, `ronin escape`, and `ronin sha256`
13
+ man-pages.
14
+ * Fixed formatting in the `ronin cert-gen` man-page.
15
+ * Added more examples to the `ronin rot`, `ronin encrypt`, and `ronin decrypt`
16
+ man-pages.
17
+
18
+ ### 2.0.1 / 2023-03-01
19
+
20
+ * Require [ronin-support] ~> 1.0, >= 1.0.1.
21
+ * Require [ronin-core] ~> 0.1, >= 0.1.1.
22
+ * Require [ronin-web] ~> 1.0, >= 1.0.1.
23
+ * Require [ronin-payloads] ~> 0.1, >= 0.1.1.
24
+ * Require [ronin-vulns] ~> 0.1, >= 0.1.2.
25
+ * Require [ronin-exploits] ~> 1.0, >= 1.0.1.
26
+ * Added {Ronin::CLI::HostAndPort} for common `host:port` parsing logic.
27
+ * Minor bug fixes.
28
+ * Improved documentation.
29
+
30
+ #### CLI
31
+
32
+ * Ensure that the `ronin http` command works with IDN host-names.
33
+
34
+ ### 2.0.0 / 2023-02-01
2
35
 
3
36
  * Require `ruby` >= 3.0.0.
4
37
  * Require [rouge] ~> 3.0
@@ -756,7 +789,7 @@
756
789
  * Require Spidr >= 0.1.3.
757
790
  * Moved Ronin::Parameters into the parameters 0.1.0 RubyGem.
758
791
  * Added a Ronin::Hexdump module:
759
- * Provides Ronin::Hexdump.dump and Kernel#hexdump, which can hexdump any
792
+ * Provides Ronin::Hexdump.dump and Kernel#hexdump, which can hexdump any
760
793
  object that supports the #each_byte method.
761
794
  * Refactored Ronin::Chars::CharSet:
762
795
  * Now inherites the SortedSet class.
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  gemspec
@@ -21,37 +23,37 @@ group :database do
21
23
  end
22
24
 
23
25
  # Library dependencies
24
- # gem 'ronin-support', '~> 1.0', github: "ronin-rb/ronin-support",
26
+ # gem 'ronin-support', '~> 1.0', github: 'ronin-rb/ronin-support',
25
27
  # branch: 'main'
26
- # gem 'ronin-core', '~> 0.1', github: "ronin-rb/ronin-core",
28
+ # gem 'ronin-core', '~> 0.1', github: 'ronin-rb/ronin-core',
27
29
  # branch: 'main'
28
- # gem 'ronin-repos', '~> 0.1', github: "ronin-rb/ronin-repos",
30
+ # gem 'ronin-repos', '~> 0.1', github: 'ronin-rb/ronin-repos',
29
31
  # branch: 'main'
30
- # gem 'ronin-db', '~> 0.1', github: "ronin-rb/ronin-db",
32
+ # gem 'ronin-db', '~> 0.1', github: 'ronin-rb/ronin-db',
31
33
  # branch: 'main'
32
- # gem 'ronin-db-activerecord', '~> 0.1', github: "ronin-rb/ronin-db-activerecord",
34
+ # gem 'ronin-db-activerecord', '~> 0.1', github: 'ronin-rb/ronin-db-activerecord',
33
35
  # branch: 'main'
34
- # gem 'ronin-fuzzer', '~> 0.1', github: "ronin-rb/ronin-fuzzer",
36
+ # gem 'ronin-fuzzer', '~> 0.1', github: 'ronin-rb/ronin-fuzzer',
35
37
  # branch: 'main'
36
- # gem 'ronin-post_ex', '~> 0.1', github: "ronin-rb/ronin-post_ex",
38
+ # gem 'ronin-post_ex', '~> 0.1', github: 'ronin-rb/ronin-post_ex',
37
39
  # branch: 'main'
38
- # gem 'ronin-code-asm', '~> 1.0', github: "ronin-rb/ronin-code-asm",
40
+ # gem 'ronin-code-asm', '~> 1.0', github: 'ronin-rb/ronin-code-asm',
39
41
  # branch: 'main'
40
- # gem 'ronin-code-sql', '~> 2.0', github: "ronin-rb/ronin-code-sql",
42
+ # gem 'ronin-code-sql', '~> 2.0', github: 'ronin-rb/ronin-code-sql',
41
43
  # branch: 'main'
42
- # gem 'ronin-payloads', '~> 0.1', github: "ronin-rb/ronin-payloads",
44
+ # gem 'ronin-payloads', '~> 0.1', github: 'ronin-rb/ronin-payloads',
43
45
  # branch: 'main'
44
- # gem 'ronin-exploits', '~> 1.0', github: "ronin-rb/ronin-exploits",
46
+ # gem 'ronin-exploits', '~> 1.0', github: 'ronin-rb/ronin-exploits',
45
47
  # branch: 'main'
46
- # gem 'ronin-vulns', '~> 0.1', github: "ronin-rb/ronin-vulns",
48
+ # gem 'ronin-vulns', '~> 0.1', github: 'ronin-rb/ronin-vulns',
47
49
  # branch: 'main'
48
- # gem 'ronin-web-server', '~> 0.1', github: "ronin-rb/ronin-web-server",
50
+ # gem 'ronin-web-server', '~> 0.1', github: 'ronin-rb/ronin-web-server',
49
51
  # branch: 'main'
50
- # gem 'ronin-web-spider', '~> 0.1', github: "ronin-rb/ronin-web-spider",
52
+ # gem 'ronin-web-spider', '~> 0.1', github: 'ronin-rb/ronin-web-spider',
51
53
  # branch: 'main'
52
- # gem 'ronin-web-user_agents', '~> 0.1', github: "ronin-rb/ronin-web-user_agents",
54
+ # gem 'ronin-web-user_agents', '~> 0.1', github: 'ronin-rb/ronin-web-user_agents',
53
55
  # branch: 'main'
54
- # gem 'ronin-web', '~> 1.0', github: "ronin-rb/ronin-web",
56
+ # gem 'ronin-web', '~> 1.0', github: 'ronin-rb/ronin-web',
55
57
  # branch: 'main'
56
58
 
57
59
  group :development do
@@ -70,4 +72,6 @@ group :development do
70
72
  gem 'dead_end', require: false
71
73
  gem 'sord', require: false, platform: :mri
72
74
  gem 'stackprof', require: false, platform: :mri
75
+ gem 'rubocop', require: false, platform: :mri
76
+ gem 'rubocop-ronin', require: false, platform: :mri
73
77
  end
data/README.md CHANGED
@@ -40,7 +40,7 @@ HTTP, [scanning for web vulnerabilities][ronin-vulns-synopsis],
40
40
 
41
41
  * A toolkit of useful commands.
42
42
  * A fully-loaded Ruby REPL.
43
- * An ecosystem of high-quality security related Ruby libraries, API, and
43
+ * An ecosystem of high-quality security related Ruby libraries, APIs, and
44
44
  commands.
45
45
 
46
46
  ### What can you do with Ronin?
@@ -290,25 +290,6 @@ foo bar
290
290
 
291
291
  ### Text
292
292
 
293
- De-obfuscate an email address:
294
-
295
- ```shell
296
- $ ronin email-addr --deobfuscate "john [dot] smith [at] example [dot] com"
297
- john.smith@example.com
298
- ```
299
-
300
- Enumerate through all of the obfuscations of an email address:
301
-
302
- ```shell
303
- $ ronin email-addr --enum-obfuscations john.smith@example.com
304
- john.smith @ example.com
305
- john.smith AT example.com
306
- john.smith at example.com
307
- john.smith[AT]example.com
308
- john.smith[at]example.com
309
- ...
310
- ```
311
-
312
293
  Extract high-entropy data from a file:
313
294
 
314
295
  ```shell
@@ -386,13 +367,13 @@ Decrypt data:
386
367
  $ ronin decrypt --cipher aes-256-cbc --password "..." encrypted.bin
387
368
  ```
388
369
 
389
- Generates an HMAC for a file:
370
+ Generates a HMAC for a file:
390
371
 
391
372
  ```shell
392
373
  $ ronin hmac --hash sha1 --password "too many secrets" data.txt
393
374
  ```
394
375
 
395
- Generates an HMAC for a string:
376
+ Generates a HMAC for a string:
396
377
 
397
378
  ```shell
398
379
  $ ronin hmac --hash sha1 --password "too many secrets" --string "..."
@@ -657,6 +638,25 @@ example.com.bh
657
638
  ...
658
639
  ```
659
640
 
641
+ Find all subdomains that have addresses:
642
+
643
+ ```shell
644
+ $ ronin host --enum-subdomains subdomains.txt --has-addresses google.com
645
+ www.google.com
646
+ mail.google.com
647
+ smtp.google.com
648
+ ns1.google.com
649
+ ns2.google.com
650
+ m.google.com
651
+ ns.google.com
652
+ blog.google.com
653
+ admin.google.com
654
+ news.google.com
655
+ vpn.google.com
656
+ ns3.google.com
657
+ ...
658
+ ```
659
+
660
660
  Enumerate over every possible typosquat variation of a domain:
661
661
 
662
662
  ```shell
@@ -684,6 +684,25 @@ Find all of the unregistered typosquat domains for a valid domain:
684
684
  $ ronin typosquat --unregistered microsoft.com
685
685
  ```
686
686
 
687
+ De-obfuscate an email address:
688
+
689
+ ```shell
690
+ $ ronin email-addr --deobfuscate "john [dot] smith [at] example [dot] com"
691
+ john.smith@example.com
692
+ ```
693
+
694
+ Enumerate through all of the obfuscations of an email address:
695
+
696
+ ```shell
697
+ $ ronin email-addr --enum-obfuscations john.smith@example.com
698
+ john.smith @ example.com
699
+ john.smith AT example.com
700
+ john.smith at example.com
701
+ john.smith[AT]example.com
702
+ john.smith[at]example.com
703
+ ...
704
+ ```
705
+
687
706
  #### SSL/TLS Certs
688
707
 
689
708
  Dump information about a SSL/TLS certificate:
@@ -815,7 +834,7 @@ If you prefer using [Docker], there are also [Docker images] available:
815
834
 
816
835
  ```shell
817
836
  docker pull roninrb/ronin
818
- docker run -it ronin
837
+ docker run -it roninrb/ronin
819
838
  ```
820
839
 
821
840
  Additionally, if you want to mount your home directory into the docker image:
data/Rakefile CHANGED
@@ -1,11 +1,11 @@
1
- require 'rubygems'
1
+ # frozen_string_literal: true
2
2
 
3
3
  begin
4
4
  require 'bundler'
5
5
  rescue LoadError => e
6
6
  warn e.message
7
7
  warn "Run `gem install bundler` to install Bundler"
8
- exit -1
8
+ exit(-1)
9
9
  end
10
10
 
11
11
  begin
data/bin/ronin CHANGED
@@ -1,17 +1,16 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'rubygems'
4
5
 
5
6
  root = File.expand_path(File.join(File.dirname(__FILE__),'..'))
6
7
  if File.file?(File.join(root,'Gemfile.lock'))
7
8
  Dir.chdir(root) do
8
- begin
9
- require 'bundler/setup'
10
- rescue LoadError => e
11
- warn e.message
12
- warn "Run `gem install bundler` to install Bundler"
13
- exit -1
14
- end
9
+ require 'bundler/setup'
10
+ rescue LoadError => e
11
+ warn e.message
12
+ warn "Run `gem install bundler` to install Bundler"
13
+ exit(-1)
15
14
  end
16
15
  end
17
16
 
@@ -4,13 +4,13 @@ source 'https://rubygems.org'
4
4
  gem 'rake'
5
5
 
6
6
  <%- end -%>
7
- gem 'ronin-support', '~> 1.0' #, github: 'ronin-rb/ronin-support'
7
+ gem 'ronin-support', '~> 1.0' # , github: 'ronin-rb/ronin-support'
8
8
 
9
- # gem 'ronin-code-asm', '~> 0.3' #, github: 'ronin-rb/ronin-code-asm'
10
- # gem 'ronin-code-sql', '~> 1.2' #, github: 'ronin-rb/ronin-code-sql'
11
- # gem 'ronin-db', '~> 0.1' #, github: 'ronin-rb/ronin-db'
12
- # gem 'ronin-web-server', '~> 0.1' #, github: 'ronin-rb/ronin-web-server'
13
- # gem 'ronin-web-spider', '~> 0.1' #, github: 'ronin-rb/ronin-web-spider'
14
- # gem 'ronin-web-user_agents', '~> 0.1' #, github: 'ronin-rb/ronin-web-user_agents'
15
- # gem 'ronin-payloads', '~> 0.1' #, github: 'ronin-rb/ronin-payloads'
16
- # gem 'ronin-exploits', '~> 1.0' #, github: 'ronin-rb/ronin-exploits'
9
+ # gem 'ronin-code-asm', '~> 0.3' # , github: 'ronin-rb/ronin-code-asm'
10
+ # gem 'ronin-code-sql', '~> 1.2' # , github: 'ronin-rb/ronin-code-sql'
11
+ # gem 'ronin-db', '~> 0.1' # , github: 'ronin-rb/ronin-db'
12
+ # gem 'ronin-web-server', '~> 0.1' # , github: 'ronin-rb/ronin-web-server'
13
+ # gem 'ronin-web-spider', '~> 0.1' # , github: 'ronin-rb/ronin-web-spider'
14
+ # gem 'ronin-web-user_agents', '~> 0.1' # , github: 'ronin-rb/ronin-web-user_agents'
15
+ # gem 'ronin-payloads', '~> 0.1' # , github: 'ronin-rb/ronin-payloads'
16
+ # gem 'ronin-exploits', '~> 1.0' # , github: 'ronin-rb/ronin-exploits'
data/gemspec.yml CHANGED
@@ -2,7 +2,7 @@ name: ronin
2
2
  summary: A Ruby toolkit for security research and development.
3
3
  description:
4
4
  Ronin is a free and Open Source Ruby toolkit for security research and
5
- development.Ronin contains many different CLI commands and Ruby libraries for
5
+ development.Ronin contains many different CLI commands and Ruby libraries for
6
6
  a variety of security tasks, such as encoding/decoding data, filter
7
7
  IPs/hosts/URLs, querying ASNs, querying DNS, HTTP, scanning for web
8
8
  vulnerabilities, spidering websites, install 3rd party repositories of
@@ -96,17 +96,17 @@ dependencies:
96
96
  async-io: ~> 1.0
97
97
  wordlist: ~> 1.0
98
98
  # Ronin dependencies:
99
- ronin-support: ~> 1.0
100
- ronin-core: ~> 0.1
99
+ ronin-support: ~> 1.0, >= 1.0.1
100
+ ronin-core: ~> 0.1, >= 0.1.1
101
101
  ronin-repos: ~> 0.1
102
102
  ronin-db: ~> 0.1
103
103
  ronin-fuzzer: ~> 0.1
104
- ronin-web: ~> 1.0
104
+ ronin-web: ~> 1.0, >= 1.0.1
105
105
  ronin-code-asm: ~> 1.0
106
106
  ronin-code-sql: ~> 2.0
107
- ronin-payloads: ~> 0.1
108
- ronin-exploits: ~> 1.0
109
- ronin-vulns: ~> 0.1
107
+ ronin-payloads: ~> 0.1, >= 0.1.1
108
+ ronin-exploits: ~> 1.0, >= 1.0.1
109
+ ronin-vulns: ~> 0.1, >= 0.1.2
110
110
 
111
111
  development_dependencies:
112
112
  bundler: ~> 2.0
@@ -68,7 +68,7 @@ module Ronin
68
68
  command.option :include_chars, short: '-i',
69
69
  value: {
70
70
  type: String,
71
- usage: 'CHARS',
71
+ usage: 'CHARS'
72
72
  },
73
73
  desc: 'Include the additional chars to the char-set' do |string|
74
74
  @char_set += Chars::CharSet.new(*string.chars)
@@ -24,6 +24,9 @@ require 'ronin/support/crypto/cipher'
24
24
  module Ronin
25
25
  class CLI
26
26
  module Commands
27
+ #
28
+ # Base class for all commands which use ciphers.
29
+ #
27
30
  class CipherCommand < FileProcessorCommand
28
31
 
29
32
  include KeyOptions
@@ -142,7 +145,6 @@ module Ronin
142
145
  cipher.stream(input, block_size: @block_size, output: stdout)
143
146
  end
144
147
 
145
-
146
148
  end
147
149
  end
148
150
  end
@@ -21,6 +21,9 @@ require 'ronin/root'
21
21
 
22
22
  module Ronin
23
23
  class CLI
24
+ #
25
+ # Base class for all `ronin` sub-commands.
26
+ #
24
27
  class Command < Core::CLI::Command
25
28
 
26
29
  man_dir File.join(ROOT,'man')
@@ -151,7 +151,7 @@ module Ronin
151
151
  print_asn_record(record)
152
152
  else
153
153
  print_error "could not find a record for the IP: #{options[:ip]}"
154
- exit -1
154
+ exit(-1)
155
155
  end
156
156
  else
157
157
  print_asn_records(search_asn_records)
@@ -17,6 +17,7 @@
17
17
  #
18
18
 
19
19
  require 'ronin/cli/value_processor_command'
20
+ require 'ronin/cli/host_and_port'
20
21
 
21
22
  require 'ronin/support/network/tcp'
22
23
 
@@ -42,6 +43,8 @@ module Ronin
42
43
  #
43
44
  class BannerGrab < ValueProcessorCommand
44
45
 
46
+ include HostAndPort
47
+
45
48
  usage '[options] {HOST:PORT} ...'
46
49
 
47
50
  option :with_host_port, desc: 'Print the service with the banner'
@@ -62,8 +65,7 @@ module Ronin
62
65
  # The `HOST:PORT` service pair.
63
66
  #
64
67
  def process_value(service)
65
- host, port = service.split(':',2)
66
- port = port.to_i
68
+ host, port = host_and_port(service)
67
69
 
68
70
  begin
69
71
  banner = Support::Network::TCP.banner(host,port)
@@ -73,7 +75,7 @@ module Ronin
73
75
  else
74
76
  puts banner
75
77
  end
76
- rescue => error
78
+ rescue StandardError => error
77
79
  print_error("#{service}: #{error.message}")
78
80
  end
79
81
  end
@@ -17,6 +17,7 @@
17
17
  #
18
18
 
19
19
  require 'ronin/cli/value_processor_command'
20
+ require 'ronin/cli/host_and_port'
20
21
  require 'ronin/support/crypto/cert'
21
22
  require 'ronin/support/network/ssl/mixin'
22
23
 
@@ -62,6 +63,7 @@ module Ronin
62
63
  include CommandKit::Printing::Indent
63
64
  include CommandKit::Printing::Fields
64
65
  include CommandKit::Printing::Lists
66
+ include HostAndPort
65
67
 
66
68
  usage '[options] {HOST:PORT | URL | FILE} ...'
67
69
 
@@ -100,14 +102,11 @@ module Ronin
100
102
  def process_value(value)
101
103
  case value
102
104
  when /\A[^:]+:\d+\z/
103
- host, port = value.split(':',2)
104
- port = port.to_i
105
+ host, port = host_and_port(value)
105
106
 
106
107
  print_cert(ssl_cert(host,port))
107
108
  when /\Ahttps:/
108
- uri = URI.parse(value)
109
- host = uri.host
110
- port = uri.port
109
+ host, port = host_and_port_from_url(value)
111
110
 
112
111
  print_cert(ssl_cert(host,port))
113
112
  else
@@ -180,8 +179,6 @@ module Ronin
180
179
 
181
180
  puts
182
181
 
183
- fields = {}
184
-
185
182
  if options[:extensions]
186
183
  puts "Extensions:"
187
184
  indent do
@@ -103,8 +103,8 @@ module Ronin
103
103
 
104
104
  option :subject_alt_name, short: '-A',
105
105
  value: {
106
- type: /[a-z0-9:\._-]+/,
107
- usage: 'HOST|IP'
106
+ type: /[a-z0-9:\._-]+/,
107
+ usage: 'HOST|IP'
108
108
  },
109
109
  desc: 'Adds HOST or IP to subjectAltName' do |value|
110
110
  @subject_alt_names << value
@@ -277,7 +277,7 @@ module Ronin
277
277
  @not_after ||= if options[:not_after]
278
278
  Time.parse(options[:not_after])
279
279
  else
280
- not_before+Support::Crypto::Cert::ONE_YEAR
280
+ not_before + Support::Crypto::Cert::ONE_YEAR
281
281
  end
282
282
  end
283
283
 
@@ -378,7 +378,7 @@ module Ronin
378
378
  # @return [String, nil]
379
379
  #
380
380
  def subject_alt_name_ext
381
- if !@subject_alt_names.empty?
381
+ unless @subject_alt_names.empty?
382
382
  @subject_alt_names.map { |name|
383
383
  if name =~ IP_REGEXP
384
384
  "IP: #{name}"
@@ -17,6 +17,7 @@
17
17
  #
18
18
 
19
19
  require 'ronin/cli/value_processor_command'
20
+ require 'ronin/cli/host_and_port'
20
21
  require 'ronin/support/network/ssl/mixin'
21
22
 
22
23
  require 'uri'
@@ -49,6 +50,7 @@ module Ronin
49
50
  #
50
51
  class CertGrab < ValueProcessorCommand
51
52
 
53
+ include HostAndPort
52
54
  include Support::Network::SSL::Mixin
53
55
 
54
56
  usage '[options] {HOST:PORT | URL} ...'
@@ -63,7 +65,7 @@ module Ronin
63
65
  examples [
64
66
  'github.com:443',
65
67
  '93.184.216.34:443',
66
- 'https://github.com/',
68
+ 'https://github.com/'
67
69
  ]
68
70
 
69
71
  man_page 'ronin-cert-grab.1'
@@ -77,14 +79,11 @@ module Ronin
77
79
  def process_value(value)
78
80
  case value
79
81
  when /\A[^:]+:\d+\z/
80
- host, port = value.split(':',2)
81
- port = port.to_i
82
+ host, port = host_and_port(value)
82
83
 
83
84
  grab_cert(host,port)
84
85
  when /\Ahttps:/
85
- uri = URI.parse(value)
86
- host = uri.host
87
- port = uri.port
86
+ host, port = host_and_port_from_url(value)
88
87
 
89
88
  grab_cert(host,port)
90
89
  else
@@ -61,14 +61,14 @@ module Ronin
61
61
  class Decode < StringMethodsCommand
62
62
 
63
63
  option :base16, desc: 'Base16 decodes the data' do
64
- require 'ronin/support/encoding/base16'
65
- @method_calls << :base16_decode
66
- end
64
+ require 'ronin/support/encoding/base16'
65
+ @method_calls << :base16_decode
66
+ end
67
67
 
68
68
  option :base32, desc: 'Base32 decodes the data' do
69
- require 'ronin/support/encoding/base32'
70
- @method_calls << :base32_decode
71
- end
69
+ require 'ronin/support/encoding/base32'
70
+ @method_calls << :base32_decode
71
+ end
72
72
 
73
73
  option :base64, short: '-b',
74
74
  equals: true,
@@ -78,11 +78,11 @@ module Ronin
78
78
  },
79
79
  desc: 'Base64 decodes the data' do |mode=nil|
80
80
  require 'ronin/support/encoding/base64'
81
- if mode
82
- @method_calls << [:base64_decode, [mode]]
83
- else
84
- @method_calls << :base64_decode
85
- end
81
+ @method_calls << if mode
82
+ [:base64_decode, [mode]]
83
+ else
84
+ :base64_decode
85
+ end
86
86
  end
87
87
 
88
88
  option :zlib, short: '-z',
@@ -122,9 +122,9 @@ module Ronin
122
122
  end
123
123
 
124
124
  option :http, desc: 'HTTP decodes the data' do
125
- require 'ronin/support/encoding/http'
126
- @method_calls << :http_decode
127
- end
125
+ require 'ronin/support/encoding/http'
126
+ @method_calls << :http_decode
127
+ end
128
128
 
129
129
  option :js, short: '-j',
130
130
  desc: 'JavaScript decodes the data' do
@@ -28,7 +28,7 @@ module Ronin
28
28
  #
29
29
  # ## Usage
30
30
  #
31
- # ronin dns [options] [HOST [...]]
31
+ # ronin dns [options] {HOST ... | --file FILE}
32
32
  #
33
33
  # ## Options
34
34
  #
@@ -46,7 +46,7 @@ module Ronin
46
46
 
47
47
  include DNS
48
48
 
49
- usage '[options] HOST'
49
+ usage '[options] {HOST ... | --file FILE}'
50
50
 
51
51
  option :type, short: '-t',
52
52
  value: {