ronin 0.2.4 → 0.3.0

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 (240) hide show
  1. data.tar.gz.sig +0 -0
  2. data/History.txt +95 -0
  3. data/Manifest.txt +55 -25
  4. data/README.txt +64 -52
  5. data/Rakefile +21 -14
  6. data/bin/ronin +1 -1
  7. data/bin/ronin-add +1 -1
  8. data/bin/ronin-console +1 -1
  9. data/bin/ronin-help +1 -1
  10. data/bin/ronin-install +1 -1
  11. data/bin/ronin-list +1 -1
  12. data/bin/ronin-remove +1 -1
  13. data/bin/ronin-uninstall +1 -1
  14. data/bin/ronin-update +1 -1
  15. data/lib/ronin.rb +2 -4
  16. data/lib/ronin/arch.rb +66 -21
  17. data/lib/ronin/author.rb +27 -18
  18. data/lib/ronin/cacheable.rb +63 -23
  19. data/lib/ronin/code/emittable.rb +1 -4
  20. data/lib/ronin/code/reference.rb +2 -5
  21. data/lib/ronin/code/symbol_table.rb +1 -4
  22. data/lib/ronin/code/token.rb +1 -4
  23. data/lib/ronin/config.rb +31 -10
  24. data/lib/ronin/database.rb +1 -4
  25. data/lib/ronin/database/database.rb +42 -23
  26. data/lib/ronin/database/exceptions.rb +1 -4
  27. data/lib/ronin/database/exceptions/invalid_config.rb +1 -4
  28. data/lib/ronin/environment.rb +1 -5
  29. data/lib/ronin/extensions.rb +1 -5
  30. data/lib/ronin/extensions/array.rb +8 -6
  31. data/lib/ronin/extensions/file.rb +9 -4
  32. data/lib/ronin/extensions/ip_addr.rb +33 -13
  33. data/lib/ronin/extensions/kernel.rb +44 -9
  34. data/lib/ronin/extensions/meta.rb +1 -4
  35. data/lib/ronin/extensions/string.rb +8 -7
  36. data/lib/ronin/extensions/uri.rb +1 -4
  37. data/lib/ronin/extensions/uri/http.rb +1 -48
  38. data/lib/ronin/extensions/uri/query_params.rb +27 -8
  39. data/lib/ronin/formatting.rb +1 -4
  40. data/lib/ronin/formatting/binary.rb +1 -4
  41. data/lib/ronin/formatting/digest.rb +1 -4
  42. data/lib/ronin/formatting/extensions.rb +1 -4
  43. data/lib/ronin/formatting/extensions/binary.rb +1 -4
  44. data/lib/ronin/formatting/extensions/binary/file.rb +3 -28
  45. data/lib/ronin/formatting/extensions/binary/integer.rb +31 -12
  46. data/lib/ronin/formatting/extensions/binary/string.rb +59 -36
  47. data/lib/ronin/formatting/extensions/digest.rb +1 -4
  48. data/lib/ronin/formatting/extensions/digest/string.rb +31 -9
  49. data/lib/ronin/formatting/extensions/http.rb +1 -4
  50. data/lib/ronin/formatting/extensions/http/string.rb +16 -9
  51. data/lib/ronin/formatting/extensions/text.rb +1 -4
  52. data/lib/ronin/formatting/extensions/text/array.rb +17 -7
  53. data/lib/ronin/formatting/extensions/text/string.rb +70 -27
  54. data/lib/ronin/formatting/http.rb +1 -4
  55. data/lib/ronin/formatting/text.rb +1 -4
  56. data/lib/ronin/license.rb +72 -65
  57. data/lib/ronin/model.rb +1 -4
  58. data/lib/ronin/model/has_description.rb +37 -8
  59. data/lib/ronin/model/has_license.rb +12 -8
  60. data/lib/ronin/model/has_name.rb +10 -7
  61. data/lib/ronin/model/has_version.rb +14 -4
  62. data/lib/ronin/model/model.rb +71 -14
  63. data/lib/ronin/network.rb +1 -4
  64. data/lib/ronin/network/esmtp.rb +1 -4
  65. data/lib/ronin/network/extensions.rb +1 -4
  66. data/lib/ronin/network/extensions/esmtp.rb +1 -4
  67. data/lib/ronin/network/extensions/esmtp/net.rb +49 -21
  68. data/lib/ronin/network/extensions/http.rb +1 -4
  69. data/lib/ronin/network/extensions/http/net.rb +319 -531
  70. data/lib/ronin/network/extensions/imap.rb +1 -4
  71. data/lib/ronin/network/extensions/imap/net.rb +50 -23
  72. data/lib/ronin/network/extensions/pop3.rb +1 -4
  73. data/lib/ronin/network/extensions/pop3/net.rb +40 -17
  74. data/lib/ronin/network/extensions/smtp.rb +1 -4
  75. data/lib/ronin/network/extensions/smtp/net.rb +49 -21
  76. data/lib/ronin/network/extensions/tcp.rb +1 -4
  77. data/lib/ronin/network/extensions/tcp/net.rb +234 -31
  78. data/lib/ronin/network/extensions/telnet.rb +1 -4
  79. data/lib/ronin/network/extensions/telnet/net.rb +83 -51
  80. data/lib/ronin/network/extensions/udp.rb +1 -4
  81. data/lib/ronin/network/extensions/udp/net.rb +164 -27
  82. data/lib/ronin/{sessions.rb → network/helpers.rb} +10 -13
  83. data/lib/ronin/network/helpers/esmtp.rb +129 -0
  84. data/lib/ronin/{sessions/session.rb → network/helpers/helper.rb} +25 -17
  85. data/lib/ronin/network/helpers/http.rb +444 -0
  86. data/lib/ronin/network/helpers/imap.rb +115 -0
  87. data/lib/ronin/network/helpers/pop3.rb +110 -0
  88. data/lib/ronin/network/helpers/smtp.rb +123 -0
  89. data/lib/ronin/network/helpers/tcp.rb +309 -0
  90. data/lib/ronin/network/helpers/telnet.rb +158 -0
  91. data/lib/ronin/network/helpers/udp.rb +197 -0
  92. data/lib/ronin/network/http.rb +3 -156
  93. data/lib/ronin/network/http/exceptions.rb +1 -4
  94. data/lib/ronin/network/http/exceptions/unknown_request.rb +1 -4
  95. data/lib/ronin/network/http/http.rb +214 -0
  96. data/lib/ronin/network/http/proxy.rb +308 -0
  97. data/lib/ronin/network/imap.rb +7 -6
  98. data/lib/ronin/network/pop3.rb +7 -6
  99. data/lib/ronin/network/smtp.rb +1 -4
  100. data/lib/ronin/network/smtp/email.rb +34 -18
  101. data/lib/ronin/network/smtp/smtp.rb +19 -7
  102. data/lib/ronin/network/tcp.rb +1 -4
  103. data/lib/ronin/network/telnet.rb +25 -12
  104. data/lib/ronin/network/udp.rb +1 -4
  105. data/lib/ronin/os.rb +43 -21
  106. data/lib/ronin/path.rb +29 -9
  107. data/lib/ronin/platform.rb +1 -4
  108. data/lib/ronin/platform/exceptions.rb +1 -4
  109. data/lib/ronin/platform/exceptions/extension_not_found.rb +1 -4
  110. data/lib/ronin/platform/exceptions/overlay_cached.rb +1 -4
  111. data/lib/ronin/platform/exceptions/overlay_not_found.rb +1 -4
  112. data/lib/ronin/platform/extension.rb +195 -52
  113. data/lib/ronin/platform/extension_cache.rb +60 -24
  114. data/lib/ronin/platform/maintainer.rb +15 -8
  115. data/lib/ronin/platform/object_cache.rb +29 -8
  116. data/lib/ronin/platform/overlay.rb +82 -26
  117. data/lib/ronin/platform/overlay_cache.rb +179 -56
  118. data/lib/ronin/platform/platform.rb +154 -58
  119. data/lib/ronin/platform/ronin.rb +38 -11
  120. data/lib/ronin/product.rb +17 -17
  121. data/lib/ronin/rpc.rb +1 -4
  122. data/lib/ronin/rpc/call.rb +1 -4
  123. data/lib/ronin/rpc/client.rb +1 -4
  124. data/lib/ronin/rpc/console.rb +1 -4
  125. data/lib/ronin/rpc/exceptions.rb +1 -4
  126. data/lib/ronin/rpc/exceptions/not_implemented.rb +1 -4
  127. data/lib/ronin/rpc/exceptions/response_missing.rb +1 -4
  128. data/lib/ronin/rpc/response.rb +1 -4
  129. data/lib/ronin/rpc/service.rb +1 -4
  130. data/lib/ronin/rpc/shell.rb +1 -4
  131. data/lib/ronin/scanners.rb +1 -4
  132. data/lib/ronin/scanners/exceptions.rb +1 -4
  133. data/lib/ronin/scanners/exceptions/unknown_category.rb +1 -4
  134. data/lib/ronin/scanners/scanner.rb +82 -26
  135. data/lib/ronin/static.rb +1 -4
  136. data/lib/ronin/static/finders.rb +1 -4
  137. data/lib/ronin/static/static.rb +16 -7
  138. data/lib/ronin/templates.rb +2 -4
  139. data/lib/ronin/templates/erb.rb +24 -10
  140. data/lib/ronin/templates/template.rb +130 -0
  141. data/lib/ronin/ui.rb +2 -6
  142. data/lib/ronin/ui/command_line.rb +1 -4
  143. data/lib/ronin/ui/command_line/command.rb +137 -68
  144. data/lib/ronin/ui/command_line/command_line.rb +52 -29
  145. data/lib/ronin/ui/command_line/commands/add.rb +39 -67
  146. data/lib/ronin/ui/command_line/commands/console.rb +23 -27
  147. data/lib/ronin/ui/command_line/commands/help.rb +10 -29
  148. data/lib/ronin/ui/command_line/commands/install.rb +31 -56
  149. data/lib/ronin/ui/command_line/commands/list.rb +34 -52
  150. data/lib/ronin/ui/command_line/commands/remove.rb +12 -32
  151. data/lib/ronin/ui/command_line/commands/uninstall.rb +11 -31
  152. data/lib/ronin/ui/command_line/commands/update.rb +15 -35
  153. data/lib/ronin/ui/command_line/exceptions.rb +1 -4
  154. data/lib/ronin/ui/command_line/exceptions/unknown_command.rb +1 -4
  155. data/lib/ronin/ui/console.rb +54 -23
  156. data/lib/ronin/ui/hexdump.rb +1 -4
  157. data/lib/ronin/ui/hexdump/extensions.rb +1 -4
  158. data/lib/ronin/ui/hexdump/extensions/file.rb +8 -6
  159. data/lib/ronin/ui/hexdump/extensions/kernel.rb +4 -5
  160. data/lib/ronin/ui/hexdump/hexdump.rb +8 -5
  161. data/lib/ronin/{sessions/exceptions.rb → ui/output.rb} +3 -5
  162. data/lib/ronin/ui/output/handler.rb +121 -0
  163. data/lib/ronin/ui/output/helpers.rb +110 -0
  164. data/lib/ronin/ui/output/output.rb +144 -0
  165. data/lib/ronin/ui/shell.rb +38 -12
  166. data/lib/ronin/version.rb +2 -5
  167. data/lib/ronin/{sessions/exceptions/variable_missing.rb → yard.rb} +2 -10
  168. data/lib/ronin/{ronin.rb → yard/handlers.rb} +5 -15
  169. data/lib/ronin/yard/handlers/ruby.rb +27 -0
  170. data/lib/ronin/yard/handlers/ruby/base.rb +27 -0
  171. data/lib/ronin/yard/handlers/ruby/belongs_to_handler.rb +45 -0
  172. data/lib/ronin/yard/handlers/ruby/eval_block_handler.rb +18 -0
  173. data/lib/ronin/yard/handlers/ruby/has_handler.rb +49 -0
  174. data/lib/ronin/yard/handlers/ruby/legacy.rb +26 -0
  175. data/lib/ronin/yard/handlers/ruby/legacy/belongs_to_handler.rb +41 -0
  176. data/lib/ronin/yard/handlers/ruby/legacy/eval_block_handler.rb +19 -0
  177. data/lib/ronin/yard/handlers/ruby/legacy/has_handler.rb +34 -0
  178. data/lib/ronin/yard/handlers/ruby/legacy/metaclass_eval_handler.rb +21 -0
  179. data/lib/ronin/yard/handlers/ruby/legacy/property_handler.rb +41 -0
  180. data/lib/ronin/yard/handlers/ruby/legacy/scanner_handler.rb +61 -0
  181. data/lib/ronin/yard/handlers/ruby/metaclass_eval_handler.rb +18 -0
  182. data/lib/ronin/yard/handlers/ruby/property_handler.rb +45 -0
  183. data/lib/ronin/yard/handlers/ruby/scanner_handler.rb +66 -0
  184. data/spec/author_spec.rb +3 -3
  185. data/spec/extensions/classes/some_class.rb +2 -0
  186. data/spec/extensions/kernel_spec.rb +17 -0
  187. data/spec/extensions/uri/http_spec.rb +0 -31
  188. data/spec/formatting/binary/integer_spec.rb +4 -0
  189. data/spec/formatting/text/string_spec.rb +96 -0
  190. data/spec/license_spec.rb +6 -6
  191. data/spec/model/classes/basic_model.rb +13 -0
  192. data/spec/model/classes/custom_model.rb +17 -0
  193. data/spec/model/classes/described_model.rb +10 -0
  194. data/spec/model/has_description_spec.rb +42 -0
  195. data/spec/model/has_license_spec.rb +18 -4
  196. data/spec/model/model_spec.rb +68 -0
  197. data/spec/network/helpers/classes/test_helper.rb +11 -0
  198. data/spec/network/helpers/classes/uses_test_helper.rb +10 -0
  199. data/spec/network/helpers/helper_spec.rb +25 -0
  200. data/spec/network/{http_spec.rb → http/http_spec.rb} +0 -0
  201. data/spec/network/http/proxy_spec.rb +116 -0
  202. data/spec/os_spec.rb +4 -4
  203. data/spec/platform/extension_cache_spec.rb +14 -0
  204. data/spec/platform/extension_spec.rb +11 -0
  205. data/spec/platform/platform_spec.rb +8 -0
  206. data/spec/product_spec.rb +9 -9
  207. data/spec/spec_helper.rb +1 -1
  208. data/spec/templates/classes/{uses_erb.rb → example_erb.rb} +1 -1
  209. data/spec/templates/classes/example_template.rb +21 -0
  210. data/spec/templates/erb_spec.rb +2 -2
  211. data/spec/templates/helpers/static.rb +5 -0
  212. data/spec/templates/helpers/static/templates/_relative.erb +1 -0
  213. data/spec/templates/helpers/static/templates/example.erb +1 -0
  214. data/spec/templates/template_spec.rb +41 -0
  215. data/spec/ui/command_line/classes/test_command.rb +23 -0
  216. data/spec/ui/command_line/command_spec.rb +31 -0
  217. data/spec/ui/output_spec.rb +29 -0
  218. data/static/ronin/platform/overlay.xsl +135 -114
  219. data/tasks/spec.rb +1 -0
  220. data/tasks/yard.rb +18 -0
  221. metadata +98 -59
  222. metadata.gz.sig +0 -0
  223. data/TODO.txt +0 -15
  224. data/lib/ronin/extensions/hash.rb +0 -62
  225. data/lib/ronin/sessions/esmtp.rb +0 -57
  226. data/lib/ronin/sessions/http.rb +0 -678
  227. data/lib/ronin/sessions/imap.rb +0 -54
  228. data/lib/ronin/sessions/pop3.rb +0 -52
  229. data/lib/ronin/sessions/smtp.rb +0 -57
  230. data/lib/ronin/sessions/tcp.rb +0 -100
  231. data/lib/ronin/sessions/telnet.rb +0 -55
  232. data/lib/ronin/sessions/udp.rb +0 -73
  233. data/lib/ronin/ui/command_line/options.rb +0 -136
  234. data/lib/ronin/ui/diagnostics.rb +0 -66
  235. data/lib/ronin/ui/verbose.rb +0 -58
  236. data/spec/extensions/hash_spec.rb +0 -38
  237. data/spec/sessions/classes/test_session.rb +0 -11
  238. data/spec/sessions/classes/uses_test_session.rb +0 -10
  239. data/spec/sessions/session_spec.rb +0 -25
  240. data/spec/ui/verbose_spec.rb +0 -17
@@ -1,7 +1,5 @@
1
1
  #
2
- #--
3
- # Ronin - A Ruby platform designed for information security and data
4
- # exploration tasks.
2
+ # Ronin - A Ruby platform for exploit development and security research.
5
3
  #
6
4
  # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
5
  #
@@ -18,11 +16,11 @@
18
16
  # You should have received a copy of the GNU General Public License
19
17
  # along with this program; if not, write to the Free Software
20
18
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
- #++
22
19
  #
23
20
 
24
21
  require 'ronin/ui/command_line/command'
25
- require 'ronin/platform/overlay'
22
+ require 'ronin/ui/output'
23
+ require 'ronin/platform'
26
24
 
27
25
  module Ronin
28
26
  module UI
@@ -30,83 +28,67 @@ module Ronin
30
28
  module Commands
31
29
  class List < Command
32
30
 
33
- def defaults
34
- @cache = nil
35
- @verbose = false
36
- end
37
-
38
- def define_options(opts)
39
- opts.usage = '[NAME ...] [options]'
40
-
41
- opts.options do
42
- opts.on('-C','--cache DIR','Specify an alternate overlay cache') do |dir|
43
- @cache = dir
44
- end
31
+ desc "list [NAME]", "List all Overlays or a specific one"
32
+ method_option :cache, :type => :string, :aliases => '-C'
33
+ method_option :verbose, :type => :boolean, :aliaes => '-v'
45
34
 
46
- opts.on('-v','--verbose','Enable verbose output') do
47
- @verbose = true
48
- end
35
+ def default(name=nil)
36
+ if options[:cache]
37
+ Platform.load_overlays(options[:cache])
49
38
  end
50
39
 
51
- opts.arguments(
52
- 'NAME' => 'Overlay to display'
53
- )
54
-
55
- opts.summary %{
56
- Display all or the specified repositories within the Overlay
57
- cache
58
- }
59
- end
60
-
61
- def arguments(*args)
62
- Platform.load_overlays(@cache) if @cache
63
-
64
- if args.empty?
65
- # list all overlays by name
66
- Platform.overlays.each_overlay do |overlay|
67
- puts " #{overlay}"
40
+ unless name
41
+ indent do
42
+ # list all overlays by name
43
+ Platform.overlays.each_overlay do |overlay|
44
+ puts overlay
45
+ end
68
46
  end
69
47
 
70
48
  return
71
49
  end
72
50
 
73
- # list specified overlays
74
- args.each do |name|
51
+ begin
52
+ # list a specific overlay
75
53
  overlay = Platform.overlays.get(name)
54
+ rescue Platform::OverlayNotFound => e
55
+ print_error e.message
56
+ exit -1
57
+ end
76
58
 
77
- puts "[ #{overlay.name} ]\n\n"
59
+ print_title overlay.name
78
60
 
79
- puts " Path: #{overlay.path}"
80
- puts " Media: #{overlay.media}" if overlay.media
81
- puts " URI: #{overlay.uri}" if overlay.uri
61
+ indent do
62
+ puts "Path: #{overlay.path}"
63
+ puts "Media: #{overlay.media}" if overlay.media
64
+ puts "URI: #{overlay.uri}" if overlay.uri
82
65
 
83
- if @verbose
66
+ if UI::Output.verbose?
84
67
  putc "\n"
85
68
 
86
69
  if overlay.title
87
- puts " Title: #{overlay.title}"
70
+ puts "Title: #{overlay.title}"
88
71
  end
89
72
 
90
73
  if overlay.source
91
- puts " Source URI: #{overlay.source}"
74
+ puts "Source URI: #{overlay.source}"
92
75
  end
93
76
 
94
77
  if overlay.source_view
95
- puts " Source View: #{overlay.source_view}"
78
+ puts "Source View: #{overlay.source_view}"
96
79
  end
97
80
 
98
81
  if overlay.website
99
- puts " Website: #{overlay.website}"
82
+ puts "Website: #{overlay.website}"
100
83
  end
101
84
 
102
85
  unless overlay.extensions.empty?
103
- puts " Extensions:\n\n"
104
- overlay.extensions.each { |ext| puts " #{ext}" }
105
- putc "\n"
86
+ print_array(overlay.extensions, :title => 'Extensions')
106
87
  end
107
88
 
108
89
  if overlay.description
109
- puts " Description:\n\n #{overlay.description}\n\n"
90
+ puts "Description:\n\n"
91
+ indent { puts "#{overlay.description}\n\n" }
110
92
  else
111
93
  putc "\n"
112
94
  end
@@ -1,7 +1,5 @@
1
1
  #
2
- #--
3
- # Ronin - A Ruby platform designed for information security and data
4
- # exploration tasks.
2
+ # Ronin - A Ruby platform for exploit development and security research.
5
3
  #
6
4
  # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
5
  #
@@ -18,11 +16,10 @@
18
16
  # You should have received a copy of the GNU General Public License
19
17
  # along with this program; if not, write to the Free Software
20
18
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
- #++
22
19
  #
23
20
 
24
21
  require 'ronin/ui/command_line/command'
25
- require 'ronin/platform/overlay'
22
+ require 'ronin/platform'
26
23
 
27
24
  module Ronin
28
25
  module UI
@@ -30,38 +27,21 @@ module Ronin
30
27
  module Commands
31
28
  class Remove < Command
32
29
 
33
- def defaults
34
- @cache = nil
35
- @verbose = false
36
- end
37
-
38
- def define_options(opts)
39
- opts.usage = 'NAME [...] [options]'
30
+ desc "remove NAME", "Remove the specified Overlay"
31
+ method_option :cache, :type => :string, :aliases => '-C'
40
32
 
41
- opts.options do
42
- opts.on('-C','--cache DIR','Specify an alternate overlay cache') do |dir|
43
- @cache = dir
44
- end
45
-
46
- opts.on('-v','--verbose','Enable verbose output') do
47
- @verbose = true
48
- end
33
+ def default(name)
34
+ if options[:cache]
35
+ Platform.load_overlays(options[:cache])
49
36
  end
50
37
 
51
- opts.arguments(
52
- 'NAME' => 'The overlay to remove'
53
- )
54
-
55
- opts.summary('Remove the specified repositories')
56
- end
57
-
58
- def arguments(*args)
59
- Platform.load_overlays(@cache) if @cache
60
-
61
- args.each do |name|
38
+ begin
62
39
  Platform.remove(name) do |overlay|
63
- puts "Removing Overlay #{overlay.name.dump} ..."
40
+ print_info "Removing Overlay #{overlay.name.dump} ..."
64
41
  end
42
+ rescue Platform::OverlayNotFound => e
43
+ print_error e.message
44
+ exit -1
65
45
  end
66
46
  end
67
47
 
@@ -1,7 +1,5 @@
1
1
  #
2
- #--
3
- # Ronin - A Ruby platform designed for information security and data
4
- # exploration tasks.
2
+ # Ronin - A Ruby platform for exploit development and security research.
5
3
  #
6
4
  # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
5
  #
@@ -18,7 +16,6 @@
18
16
  # You should have received a copy of the GNU General Public License
19
17
  # along with this program; if not, write to the Free Software
20
18
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
- #++
22
19
  #
23
20
 
24
21
  require 'ronin/ui/command_line/command'
@@ -30,38 +27,21 @@ module Ronin
30
27
  module Commands
31
28
  class Uninstall < Command
32
29
 
33
- def defaults
34
- @cache = nil
35
- @verbose = false
36
- end
37
-
38
- def define_options(opts)
39
- opts.usage = 'NAME [NAME ...] [options]'
30
+ desc "uninstall NAME", "Uninstall the specified Overlay"
31
+ method_option :cache, :type => :string, :aliases => '-C'
40
32
 
41
- opts.options do
42
- opts.on('-C','--cache DIR','Specify an alternate overlay cache') do |dir|
43
- @cache = dir
44
- end
45
-
46
- opts.on('-v','--verbose','Enable verbose output') do
47
- @verbose = true
48
- end
33
+ def default(name)
34
+ if options[:cache]
35
+ Platform.load_overlays(options[:cache])
49
36
  end
50
37
 
51
- opts.arguments(
52
- 'NAME' => 'The overlay to uninstall'
53
- )
54
-
55
- opts.summary('Uninstall the specified repositories')
56
- end
57
-
58
- def arguments(*args)
59
- Platform.load_overlays(@cache) if @cache
60
-
61
- args.each do |name|
38
+ begin
62
39
  Platform.uninstall(name) do
63
- puts "Uninstalling Overlay #{name.dump} ..."
40
+ print_info "Uninstalling Overlay #{name.dump} ..."
64
41
  end
42
+ rescue Platform::OverlayNotFound => e
43
+ print_error e.message
44
+ exit -1
65
45
  end
66
46
  end
67
47
 
@@ -1,7 +1,5 @@
1
1
  #
2
- #--
3
- # Ronin - A Ruby platform designed for information security and data
4
- # exploration tasks.
2
+ # Ronin - A Ruby platform for exploit development and security research.
5
3
  #
6
4
  # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
5
  #
@@ -18,7 +16,6 @@
18
16
  # You should have received a copy of the GNU General Public License
19
17
  # along with this program; if not, write to the Free Software
20
18
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
- #++
22
19
  #
23
20
 
24
21
  require 'ronin/ui/command_line/command'
@@ -30,45 +27,28 @@ module Ronin
30
27
  module Commands
31
28
  class Update < Command
32
29
 
33
- def defaults
34
- @cache = nil
35
- @verbose = false
36
- end
37
-
38
- def define_options(opts)
39
- opts.usage = '[NAME ...] [options]'
40
-
41
- opts.options do
42
- opts.on('-C','--cache DIR','Specify an alternate overlay cache') do |dir|
43
- @cache = dir
44
- end
30
+ desc "update [NAME]", "Update all Overlays or just a specified Overlay"
31
+ method_option :cache, :type => :string, :aliases => '-C'
45
32
 
46
- opts.on('-v','--verbose','Enable verbose output') do
47
- @verbose = true
48
- end
33
+ def default(name=nil)
34
+ if options[:cache]
35
+ Platform.load_overlays(options[:cache])
49
36
  end
50
37
 
51
- opts.arguments(
52
- 'NAME' => 'The overlay to update'
53
- )
54
-
55
- opts.summary('Updates all or the specified repositories')
56
- end
57
-
58
- def arguments(*args)
59
- Platform.load_overlays(@cache) if @cache
60
-
61
38
  update = lambda { |overlay|
62
- puts "Updating Overlay #{overlay.name.dump} ..."
39
+ print_info "Updating Overlay #{overlay.name.dump} ..."
63
40
  overlay.update
64
41
  }
65
42
 
66
- if args.empty?
67
- Platform.overlays.each_overlay(&update)
68
- else
69
- args.each do |name|
70
- update.call(Platform.overlays.update(name))
43
+ if name
44
+ begin
45
+ update.call(Platform.overlays.get(name))
46
+ rescue Platform::OverlayNotFound => e
47
+ print_error e.message
48
+ exit -1
71
49
  end
50
+ else
51
+ Platform.overlays.each_overlay(&update)
72
52
  end
73
53
  end
74
54
 
@@ -1,7 +1,5 @@
1
1
  #
2
- #--
3
- # Ronin - A Ruby platform designed for information security and data
4
- # exploration tasks.
2
+ # Ronin - A Ruby platform for exploit development and security research.
5
3
  #
6
4
  # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
5
  #
@@ -18,7 +16,6 @@
18
16
  # You should have received a copy of the GNU General Public License
19
17
  # along with this program; if not, write to the Free Software
20
18
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
- #++
22
19
  #
23
20
 
24
21
  require 'ronin/ui/command_line/exceptions/unknown_command'
@@ -1,7 +1,5 @@
1
1
  #
2
- #--
3
- # Ronin - A Ruby platform designed for information security and data
4
- # exploration tasks.
2
+ # Ronin - A Ruby platform for exploit development and security research.
5
3
  #
6
4
  # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
5
  #
@@ -18,7 +16,6 @@
18
16
  # You should have received a copy of the GNU General Public License
19
17
  # along with this program; if not, write to the Free Software
20
18
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
- #++
22
19
  #
23
20
 
24
21
  module Ronin
@@ -1,7 +1,5 @@
1
1
  #
2
- #--
3
- # Ronin - A Ruby platform designed for information security and data
4
- # exploration tasks.
2
+ # Ronin - A Ruby platform for exploit development and security research.
5
3
  #
6
4
  # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
5
  #
@@ -18,7 +16,6 @@
18
16
  # You should have received a copy of the GNU General Public License
19
17
  # along with this program; if not, write to the Free Software
20
18
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
- #++
22
19
  #
23
20
 
24
21
  require 'ronin/config'
@@ -41,29 +38,38 @@ module Ronin
41
38
  COMPLETION = true
42
39
 
43
40
  #
44
- # Returns the default Console prompt style, defaults to +PROMPT+.
41
+ # @return [String]
42
+ # The default Console prompt style.
45
43
  #
46
44
  def Console.prompt
47
45
  @@ronin_console_prompt ||= PROMPT
48
46
  end
49
47
 
50
48
  #
51
- # Sets the default Console prompt style to the specified _style_.
49
+ # Sets the default Console prompt style.
50
+ #
51
+ # @param [String] style
52
+ # The new Console prompt style to use.
52
53
  #
53
54
  def Console.prompt=(style)
54
55
  @@ronin_console_prompt = style
55
56
  end
56
57
 
57
58
  #
58
- # Returns the default Console indent setting, defaults to +INDENT+.
59
+ # @return [Boolean]
60
+ # The default Console indent setting.
59
61
  #
60
62
  def Console.indent
61
63
  @@ronin_console_indent ||= INDENT
62
64
  end
63
65
 
64
66
  #
65
- # Sets the default Console indent setting to the specified _mode_.
67
+ # Sets the default Console indent setting.
68
+ #
69
+ # @param [Boolean] mode
70
+ # The new default Console indent setting.
66
71
  #
72
+ # @example
67
73
  # Console.indent = false
68
74
  # # => false
69
75
  #
@@ -72,32 +78,38 @@ module Ronin
72
78
  end
73
79
 
74
80
  #
75
- # Returns the default Console back trace limit, defaults to
76
- # +BACKTRACE_DEPTH+.
81
+ # @return [Integer]
82
+ # The default Console back-trace depth.
77
83
  #
78
84
  def Console.backtrace_depth
79
85
  @@ronin_console_backtrace_depth ||= BACKTRACE_DEPTH
80
86
  end
81
87
 
82
88
  #
83
- # Sets the default Console back trace depth to the specified _depth_.
89
+ # Sets the default Console back-trace depth.
90
+ #
91
+ # @param [Integer] depth
92
+ # The new default Console back-trace depth.
84
93
  #
85
94
  def Console.backtrace_depth=(depth)
86
95
  @@ronin_console_backtrace_depth = depth
87
96
  end
88
97
 
89
98
  #
90
- # Returns the default Console tab-completion mode, defaults to
91
- # +COMPLETION+.
99
+ # @return [Boolean]
100
+ # The default Console tab-completion setting.
92
101
  #
93
102
  def Console.completion
94
103
  @@ronin_console_completion ||= COMPLETION
95
104
  end
96
105
 
97
106
  #
98
- # Sets the default Console tab-completion mode to the specified
99
- # _mode_.
107
+ # Sets the default Console tab-completion setting.
100
108
  #
109
+ # @param [Boolean] mode
110
+ # The new default Console tab-completion setting.
111
+ #
112
+ # @example
101
113
  # Console.completion = false
102
114
  # # => false
103
115
  #
@@ -106,23 +118,38 @@ module Ronin
106
118
  end
107
119
 
108
120
  #
109
- # Returns the Array of files to require when the Console starts.
121
+ # @return [Array]
122
+ # The files to require when the Console starts.
110
123
  #
111
124
  def Console.auto_load
112
125
  @@ronin_console_auto_load ||= []
113
126
  end
114
127
 
115
128
  #
116
- # Calls the specified _block_ from within the Console after it is
129
+ # Adds a block to be ran from within the Console after it is
117
130
  # started.
118
131
  #
132
+ # @yield []
133
+ # The block to be ran from within the Console.
134
+ #
119
135
  def Console.setup(&block)
120
136
  Console.setup_blocks << block if block
121
137
  end
122
138
 
123
139
  #
124
- # Starts a Console with the given _script_. If a _block_ is given, it
125
- # will be called from within the Console.
140
+ # Starts a Console.
141
+ #
142
+ # @param [String] script
143
+ # The path to a script to run within the Console.
144
+ #
145
+ # @yield []
146
+ # The block to be ran within the Console, after it has been setup.
147
+ #
148
+ # @example
149
+ # Console.start
150
+ #
151
+ # @example
152
+ # console.start { @var = 'hello' }
126
153
  #
127
154
  def Console.start(script=nil,&block)
128
155
  IRB.setup(script)
@@ -137,9 +164,13 @@ module Ronin
137
164
 
138
165
  # configure the IRB context
139
166
  irb.context.main.instance_eval do
140
- require 'ronin/environment'
141
- require 'ronin/platform'
167
+ require 'ronin'
168
+ require 'ronin/ui/output'
169
+
170
+ # include the output helpers
171
+ include Ronin::UI::Output::Helpers
142
172
 
173
+ # setup irb completion
143
174
  require 'irb/completion' if Ronin::UI::Console.completion
144
175
 
145
176
  # require any of the auto-load paths
@@ -170,8 +201,8 @@ module Ronin
170
201
  protected
171
202
 
172
203
  #
173
- # Returns the Array of setup_blocks to run within the Console after it
174
- # is started.
204
+ # @return [Array]
205
+ # The blocks to be ran from within the Console after it is started.
175
206
  #
176
207
  def Console.setup_blocks
177
208
  @@console_setup_blocks ||= []