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.
- data.tar.gz.sig +0 -0
- data/History.txt +95 -0
- data/Manifest.txt +55 -25
- data/README.txt +64 -52
- data/Rakefile +21 -14
- data/bin/ronin +1 -1
- data/bin/ronin-add +1 -1
- data/bin/ronin-console +1 -1
- data/bin/ronin-help +1 -1
- data/bin/ronin-install +1 -1
- data/bin/ronin-list +1 -1
- data/bin/ronin-remove +1 -1
- data/bin/ronin-uninstall +1 -1
- data/bin/ronin-update +1 -1
- data/lib/ronin.rb +2 -4
- data/lib/ronin/arch.rb +66 -21
- data/lib/ronin/author.rb +27 -18
- data/lib/ronin/cacheable.rb +63 -23
- data/lib/ronin/code/emittable.rb +1 -4
- data/lib/ronin/code/reference.rb +2 -5
- data/lib/ronin/code/symbol_table.rb +1 -4
- data/lib/ronin/code/token.rb +1 -4
- data/lib/ronin/config.rb +31 -10
- data/lib/ronin/database.rb +1 -4
- data/lib/ronin/database/database.rb +42 -23
- data/lib/ronin/database/exceptions.rb +1 -4
- data/lib/ronin/database/exceptions/invalid_config.rb +1 -4
- data/lib/ronin/environment.rb +1 -5
- data/lib/ronin/extensions.rb +1 -5
- data/lib/ronin/extensions/array.rb +8 -6
- data/lib/ronin/extensions/file.rb +9 -4
- data/lib/ronin/extensions/ip_addr.rb +33 -13
- data/lib/ronin/extensions/kernel.rb +44 -9
- data/lib/ronin/extensions/meta.rb +1 -4
- data/lib/ronin/extensions/string.rb +8 -7
- data/lib/ronin/extensions/uri.rb +1 -4
- data/lib/ronin/extensions/uri/http.rb +1 -48
- data/lib/ronin/extensions/uri/query_params.rb +27 -8
- data/lib/ronin/formatting.rb +1 -4
- data/lib/ronin/formatting/binary.rb +1 -4
- data/lib/ronin/formatting/digest.rb +1 -4
- data/lib/ronin/formatting/extensions.rb +1 -4
- data/lib/ronin/formatting/extensions/binary.rb +1 -4
- data/lib/ronin/formatting/extensions/binary/file.rb +3 -28
- data/lib/ronin/formatting/extensions/binary/integer.rb +31 -12
- data/lib/ronin/formatting/extensions/binary/string.rb +59 -36
- data/lib/ronin/formatting/extensions/digest.rb +1 -4
- data/lib/ronin/formatting/extensions/digest/string.rb +31 -9
- data/lib/ronin/formatting/extensions/http.rb +1 -4
- data/lib/ronin/formatting/extensions/http/string.rb +16 -9
- data/lib/ronin/formatting/extensions/text.rb +1 -4
- data/lib/ronin/formatting/extensions/text/array.rb +17 -7
- data/lib/ronin/formatting/extensions/text/string.rb +70 -27
- data/lib/ronin/formatting/http.rb +1 -4
- data/lib/ronin/formatting/text.rb +1 -4
- data/lib/ronin/license.rb +72 -65
- data/lib/ronin/model.rb +1 -4
- data/lib/ronin/model/has_description.rb +37 -8
- data/lib/ronin/model/has_license.rb +12 -8
- data/lib/ronin/model/has_name.rb +10 -7
- data/lib/ronin/model/has_version.rb +14 -4
- data/lib/ronin/model/model.rb +71 -14
- data/lib/ronin/network.rb +1 -4
- data/lib/ronin/network/esmtp.rb +1 -4
- data/lib/ronin/network/extensions.rb +1 -4
- data/lib/ronin/network/extensions/esmtp.rb +1 -4
- data/lib/ronin/network/extensions/esmtp/net.rb +49 -21
- data/lib/ronin/network/extensions/http.rb +1 -4
- data/lib/ronin/network/extensions/http/net.rb +319 -531
- data/lib/ronin/network/extensions/imap.rb +1 -4
- data/lib/ronin/network/extensions/imap/net.rb +50 -23
- data/lib/ronin/network/extensions/pop3.rb +1 -4
- data/lib/ronin/network/extensions/pop3/net.rb +40 -17
- data/lib/ronin/network/extensions/smtp.rb +1 -4
- data/lib/ronin/network/extensions/smtp/net.rb +49 -21
- data/lib/ronin/network/extensions/tcp.rb +1 -4
- data/lib/ronin/network/extensions/tcp/net.rb +234 -31
- data/lib/ronin/network/extensions/telnet.rb +1 -4
- data/lib/ronin/network/extensions/telnet/net.rb +83 -51
- data/lib/ronin/network/extensions/udp.rb +1 -4
- data/lib/ronin/network/extensions/udp/net.rb +164 -27
- data/lib/ronin/{sessions.rb → network/helpers.rb} +10 -13
- data/lib/ronin/network/helpers/esmtp.rb +129 -0
- data/lib/ronin/{sessions/session.rb → network/helpers/helper.rb} +25 -17
- data/lib/ronin/network/helpers/http.rb +444 -0
- data/lib/ronin/network/helpers/imap.rb +115 -0
- data/lib/ronin/network/helpers/pop3.rb +110 -0
- data/lib/ronin/network/helpers/smtp.rb +123 -0
- data/lib/ronin/network/helpers/tcp.rb +309 -0
- data/lib/ronin/network/helpers/telnet.rb +158 -0
- data/lib/ronin/network/helpers/udp.rb +197 -0
- data/lib/ronin/network/http.rb +3 -156
- data/lib/ronin/network/http/exceptions.rb +1 -4
- data/lib/ronin/network/http/exceptions/unknown_request.rb +1 -4
- data/lib/ronin/network/http/http.rb +214 -0
- data/lib/ronin/network/http/proxy.rb +308 -0
- data/lib/ronin/network/imap.rb +7 -6
- data/lib/ronin/network/pop3.rb +7 -6
- data/lib/ronin/network/smtp.rb +1 -4
- data/lib/ronin/network/smtp/email.rb +34 -18
- data/lib/ronin/network/smtp/smtp.rb +19 -7
- data/lib/ronin/network/tcp.rb +1 -4
- data/lib/ronin/network/telnet.rb +25 -12
- data/lib/ronin/network/udp.rb +1 -4
- data/lib/ronin/os.rb +43 -21
- data/lib/ronin/path.rb +29 -9
- data/lib/ronin/platform.rb +1 -4
- data/lib/ronin/platform/exceptions.rb +1 -4
- data/lib/ronin/platform/exceptions/extension_not_found.rb +1 -4
- data/lib/ronin/platform/exceptions/overlay_cached.rb +1 -4
- data/lib/ronin/platform/exceptions/overlay_not_found.rb +1 -4
- data/lib/ronin/platform/extension.rb +195 -52
- data/lib/ronin/platform/extension_cache.rb +60 -24
- data/lib/ronin/platform/maintainer.rb +15 -8
- data/lib/ronin/platform/object_cache.rb +29 -8
- data/lib/ronin/platform/overlay.rb +82 -26
- data/lib/ronin/platform/overlay_cache.rb +179 -56
- data/lib/ronin/platform/platform.rb +154 -58
- data/lib/ronin/platform/ronin.rb +38 -11
- data/lib/ronin/product.rb +17 -17
- data/lib/ronin/rpc.rb +1 -4
- data/lib/ronin/rpc/call.rb +1 -4
- data/lib/ronin/rpc/client.rb +1 -4
- data/lib/ronin/rpc/console.rb +1 -4
- data/lib/ronin/rpc/exceptions.rb +1 -4
- data/lib/ronin/rpc/exceptions/not_implemented.rb +1 -4
- data/lib/ronin/rpc/exceptions/response_missing.rb +1 -4
- data/lib/ronin/rpc/response.rb +1 -4
- data/lib/ronin/rpc/service.rb +1 -4
- data/lib/ronin/rpc/shell.rb +1 -4
- data/lib/ronin/scanners.rb +1 -4
- data/lib/ronin/scanners/exceptions.rb +1 -4
- data/lib/ronin/scanners/exceptions/unknown_category.rb +1 -4
- data/lib/ronin/scanners/scanner.rb +82 -26
- data/lib/ronin/static.rb +1 -4
- data/lib/ronin/static/finders.rb +1 -4
- data/lib/ronin/static/static.rb +16 -7
- data/lib/ronin/templates.rb +2 -4
- data/lib/ronin/templates/erb.rb +24 -10
- data/lib/ronin/templates/template.rb +130 -0
- data/lib/ronin/ui.rb +2 -6
- data/lib/ronin/ui/command_line.rb +1 -4
- data/lib/ronin/ui/command_line/command.rb +137 -68
- data/lib/ronin/ui/command_line/command_line.rb +52 -29
- data/lib/ronin/ui/command_line/commands/add.rb +39 -67
- data/lib/ronin/ui/command_line/commands/console.rb +23 -27
- data/lib/ronin/ui/command_line/commands/help.rb +10 -29
- data/lib/ronin/ui/command_line/commands/install.rb +31 -56
- data/lib/ronin/ui/command_line/commands/list.rb +34 -52
- data/lib/ronin/ui/command_line/commands/remove.rb +12 -32
- data/lib/ronin/ui/command_line/commands/uninstall.rb +11 -31
- data/lib/ronin/ui/command_line/commands/update.rb +15 -35
- data/lib/ronin/ui/command_line/exceptions.rb +1 -4
- data/lib/ronin/ui/command_line/exceptions/unknown_command.rb +1 -4
- data/lib/ronin/ui/console.rb +54 -23
- data/lib/ronin/ui/hexdump.rb +1 -4
- data/lib/ronin/ui/hexdump/extensions.rb +1 -4
- data/lib/ronin/ui/hexdump/extensions/file.rb +8 -6
- data/lib/ronin/ui/hexdump/extensions/kernel.rb +4 -5
- data/lib/ronin/ui/hexdump/hexdump.rb +8 -5
- data/lib/ronin/{sessions/exceptions.rb → ui/output.rb} +3 -5
- data/lib/ronin/ui/output/handler.rb +121 -0
- data/lib/ronin/ui/output/helpers.rb +110 -0
- data/lib/ronin/ui/output/output.rb +144 -0
- data/lib/ronin/ui/shell.rb +38 -12
- data/lib/ronin/version.rb +2 -5
- data/lib/ronin/{sessions/exceptions/variable_missing.rb → yard.rb} +2 -10
- data/lib/ronin/{ronin.rb → yard/handlers.rb} +5 -15
- data/lib/ronin/yard/handlers/ruby.rb +27 -0
- data/lib/ronin/yard/handlers/ruby/base.rb +27 -0
- data/lib/ronin/yard/handlers/ruby/belongs_to_handler.rb +45 -0
- data/lib/ronin/yard/handlers/ruby/eval_block_handler.rb +18 -0
- data/lib/ronin/yard/handlers/ruby/has_handler.rb +49 -0
- data/lib/ronin/yard/handlers/ruby/legacy.rb +26 -0
- data/lib/ronin/yard/handlers/ruby/legacy/belongs_to_handler.rb +41 -0
- data/lib/ronin/yard/handlers/ruby/legacy/eval_block_handler.rb +19 -0
- data/lib/ronin/yard/handlers/ruby/legacy/has_handler.rb +34 -0
- data/lib/ronin/yard/handlers/ruby/legacy/metaclass_eval_handler.rb +21 -0
- data/lib/ronin/yard/handlers/ruby/legacy/property_handler.rb +41 -0
- data/lib/ronin/yard/handlers/ruby/legacy/scanner_handler.rb +61 -0
- data/lib/ronin/yard/handlers/ruby/metaclass_eval_handler.rb +18 -0
- data/lib/ronin/yard/handlers/ruby/property_handler.rb +45 -0
- data/lib/ronin/yard/handlers/ruby/scanner_handler.rb +66 -0
- data/spec/author_spec.rb +3 -3
- data/spec/extensions/classes/some_class.rb +2 -0
- data/spec/extensions/kernel_spec.rb +17 -0
- data/spec/extensions/uri/http_spec.rb +0 -31
- data/spec/formatting/binary/integer_spec.rb +4 -0
- data/spec/formatting/text/string_spec.rb +96 -0
- data/spec/license_spec.rb +6 -6
- data/spec/model/classes/basic_model.rb +13 -0
- data/spec/model/classes/custom_model.rb +17 -0
- data/spec/model/classes/described_model.rb +10 -0
- data/spec/model/has_description_spec.rb +42 -0
- data/spec/model/has_license_spec.rb +18 -4
- data/spec/model/model_spec.rb +68 -0
- data/spec/network/helpers/classes/test_helper.rb +11 -0
- data/spec/network/helpers/classes/uses_test_helper.rb +10 -0
- data/spec/network/helpers/helper_spec.rb +25 -0
- data/spec/network/{http_spec.rb → http/http_spec.rb} +0 -0
- data/spec/network/http/proxy_spec.rb +116 -0
- data/spec/os_spec.rb +4 -4
- data/spec/platform/extension_cache_spec.rb +14 -0
- data/spec/platform/extension_spec.rb +11 -0
- data/spec/platform/platform_spec.rb +8 -0
- data/spec/product_spec.rb +9 -9
- data/spec/spec_helper.rb +1 -1
- data/spec/templates/classes/{uses_erb.rb → example_erb.rb} +1 -1
- data/spec/templates/classes/example_template.rb +21 -0
- data/spec/templates/erb_spec.rb +2 -2
- data/spec/templates/helpers/static.rb +5 -0
- data/spec/templates/helpers/static/templates/_relative.erb +1 -0
- data/spec/templates/helpers/static/templates/example.erb +1 -0
- data/spec/templates/template_spec.rb +41 -0
- data/spec/ui/command_line/classes/test_command.rb +23 -0
- data/spec/ui/command_line/command_spec.rb +31 -0
- data/spec/ui/output_spec.rb +29 -0
- data/static/ronin/platform/overlay.xsl +135 -114
- data/tasks/spec.rb +1 -0
- data/tasks/yard.rb +18 -0
- metadata +98 -59
- metadata.gz.sig +0 -0
- data/TODO.txt +0 -15
- data/lib/ronin/extensions/hash.rb +0 -62
- data/lib/ronin/sessions/esmtp.rb +0 -57
- data/lib/ronin/sessions/http.rb +0 -678
- data/lib/ronin/sessions/imap.rb +0 -54
- data/lib/ronin/sessions/pop3.rb +0 -52
- data/lib/ronin/sessions/smtp.rb +0 -57
- data/lib/ronin/sessions/tcp.rb +0 -100
- data/lib/ronin/sessions/telnet.rb +0 -55
- data/lib/ronin/sessions/udp.rb +0 -73
- data/lib/ronin/ui/command_line/options.rb +0 -136
- data/lib/ronin/ui/diagnostics.rb +0 -66
- data/lib/ronin/ui/verbose.rb +0 -58
- data/spec/extensions/hash_spec.rb +0 -38
- data/spec/sessions/classes/test_session.rb +0 -11
- data/spec/sessions/classes/uses_test_session.rb +0 -10
- data/spec/sessions/session_spec.rb +0 -25
- 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,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/platform/extension'
|
|
@@ -29,8 +26,14 @@ module Ronin
|
|
|
29
26
|
class ExtensionCache < Hash
|
|
30
27
|
|
|
31
28
|
#
|
|
32
|
-
# Creates a new empty ExtensionCache object.
|
|
33
|
-
#
|
|
29
|
+
# Creates a new empty ExtensionCache object.
|
|
30
|
+
#
|
|
31
|
+
# @yield [cache]
|
|
32
|
+
# If a block is given, it will be passed the newly created
|
|
33
|
+
# extension cache.
|
|
34
|
+
#
|
|
35
|
+
# @yieldparam [ExtensionCache] cache
|
|
36
|
+
# The newly created extension cache.
|
|
34
37
|
#
|
|
35
38
|
def initialize(&block)
|
|
36
39
|
super() do |hash,key|
|
|
@@ -47,7 +50,8 @@ module Ronin
|
|
|
47
50
|
end
|
|
48
51
|
|
|
49
52
|
#
|
|
50
|
-
#
|
|
53
|
+
# @return [Array]
|
|
54
|
+
# The sorted names of the extensions within the cache.
|
|
51
55
|
#
|
|
52
56
|
def names
|
|
53
57
|
keys.sort
|
|
@@ -60,46 +64,78 @@ module Ronin
|
|
|
60
64
|
# Selects the extensions within the cache that match the specified
|
|
61
65
|
# _block_.
|
|
62
66
|
#
|
|
63
|
-
|
|
67
|
+
# @yield [ext]
|
|
68
|
+
# The block will be passed each extension, and the extension will
|
|
69
|
+
# be selected based on the return value of the block.
|
|
70
|
+
#
|
|
71
|
+
# @yieldparam [Extension] ext
|
|
72
|
+
# An extension from the cache.
|
|
73
|
+
#
|
|
74
|
+
# @return [Array]
|
|
75
|
+
# The selected extensions.
|
|
76
|
+
#
|
|
77
|
+
def with(&block)
|
|
64
78
|
values.select(&block)
|
|
65
79
|
end
|
|
66
80
|
|
|
67
81
|
#
|
|
68
|
-
#
|
|
69
|
-
#
|
|
82
|
+
# Searches within the cache for the extension with the specified
|
|
83
|
+
# _name_.
|
|
84
|
+
#
|
|
85
|
+
# @return [Boolean]
|
|
86
|
+
# Specifies whether the cache contains the extension with the
|
|
87
|
+
# specified _name_.
|
|
70
88
|
#
|
|
71
|
-
def
|
|
89
|
+
def has?(name)
|
|
72
90
|
has_key?(name.to_s)
|
|
73
91
|
end
|
|
74
92
|
|
|
75
93
|
#
|
|
76
|
-
# Loads the extension with the specified _name_.
|
|
77
|
-
#
|
|
78
|
-
#
|
|
94
|
+
# Loads the extension with the specified _name_.
|
|
95
|
+
#
|
|
96
|
+
# @param [String, Symbol] name
|
|
97
|
+
# The name of the extension to load.
|
|
79
98
|
#
|
|
80
|
-
|
|
99
|
+
# @raise [ExtensionNotFound]
|
|
100
|
+
# The extension with the specified _name_ could not be found in
|
|
101
|
+
# the extension cache.
|
|
102
|
+
#
|
|
103
|
+
def load_extension(name)
|
|
81
104
|
name = name.to_s
|
|
82
105
|
|
|
83
106
|
unless Platform.overlays.has_extension?(name)
|
|
84
107
|
raise(ExtensionNotFound,"extension #{name.dump} does not eixst",caller)
|
|
85
108
|
end
|
|
86
109
|
|
|
87
|
-
return Extension.
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
block.call(ext) if block
|
|
110
|
+
return Extension.new(name) do |ext|
|
|
111
|
+
include(self.name)
|
|
112
|
+
setup!
|
|
91
113
|
end
|
|
92
114
|
end
|
|
93
115
|
|
|
94
116
|
#
|
|
95
|
-
# Reloads
|
|
117
|
+
# Reloads one or all extensions within the extension cache.
|
|
118
|
+
#
|
|
119
|
+
# @param [String, Symbol] name
|
|
120
|
+
# The specific extension to reload.
|
|
96
121
|
#
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
122
|
+
# @return [true]
|
|
123
|
+
# Specifies the reload was successful.
|
|
124
|
+
#
|
|
125
|
+
def reload!(name=nil)
|
|
126
|
+
reloader = lambda { |ext_name|
|
|
127
|
+
self[ext_name].teardown! if has?(ext_name)
|
|
128
|
+
|
|
129
|
+
self[ext_name] = load_extension(ext_name)
|
|
130
|
+
}
|
|
100
131
|
|
|
101
|
-
|
|
132
|
+
if name
|
|
133
|
+
reloader.call(name)
|
|
134
|
+
else
|
|
135
|
+
each_key(&reloader)
|
|
102
136
|
end
|
|
137
|
+
|
|
138
|
+
return true
|
|
103
139
|
end
|
|
104
140
|
|
|
105
141
|
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,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
|
|
@@ -32,8 +29,13 @@ module Ronin
|
|
|
32
29
|
attr_reader :email
|
|
33
30
|
|
|
34
31
|
#
|
|
35
|
-
# Creates a new Maintainer object
|
|
36
|
-
#
|
|
32
|
+
# Creates a new Maintainer object.
|
|
33
|
+
#
|
|
34
|
+
# @param [String] name
|
|
35
|
+
# The name of the maintainer.
|
|
36
|
+
#
|
|
37
|
+
# @param [String] email
|
|
38
|
+
# The optional email of the maintainer.
|
|
37
39
|
#
|
|
38
40
|
def initialize(name,email=nil)
|
|
39
41
|
@name = name
|
|
@@ -41,7 +43,9 @@ module Ronin
|
|
|
41
43
|
end
|
|
42
44
|
|
|
43
45
|
#
|
|
44
|
-
#
|
|
46
|
+
# @return [String]
|
|
47
|
+
# The String representation of the maintainer object.
|
|
48
|
+
#
|
|
45
49
|
def to_s
|
|
46
50
|
if @email
|
|
47
51
|
return "#{@name} <#{@email}>"
|
|
@@ -51,7 +55,10 @@ module Ronin
|
|
|
51
55
|
end
|
|
52
56
|
|
|
53
57
|
#
|
|
54
|
-
#
|
|
58
|
+
# @return [String]
|
|
59
|
+
# Inspects the maintainer object.
|
|
60
|
+
#
|
|
61
|
+
# @see Maintainer#to_s
|
|
55
62
|
#
|
|
56
63
|
def inspect
|
|
57
64
|
"#<#{self.class.name}: #{self}>"
|
|
@@ -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/database'
|
|
@@ -29,15 +26,30 @@ module Ronin
|
|
|
29
26
|
module Platform
|
|
30
27
|
module ObjectCache
|
|
31
28
|
#
|
|
32
|
-
#
|
|
33
|
-
#
|
|
29
|
+
# Searches for object files within the specified _directory_.
|
|
30
|
+
#
|
|
31
|
+
# @param [String] directory
|
|
32
|
+
# The directory to search for object files within.
|
|
33
|
+
#
|
|
34
|
+
# @return [Array]
|
|
35
|
+
# All paths within the specified _directory_ pointing to object
|
|
36
|
+
# files.
|
|
34
37
|
#
|
|
35
38
|
def ObjectCache.paths(directory)
|
|
36
39
|
Dir[File.join(File.expand_path(directory),'**','*.rb')]
|
|
37
40
|
end
|
|
38
41
|
|
|
39
42
|
#
|
|
40
|
-
# Finds all cached objects
|
|
43
|
+
# Finds all cached objects.
|
|
44
|
+
#
|
|
45
|
+
# @param [String] directory
|
|
46
|
+
# Optional directory to search within for cached objects.
|
|
47
|
+
#
|
|
48
|
+
# @yield [obj]
|
|
49
|
+
# The block that will receive all cached object.
|
|
50
|
+
#
|
|
51
|
+
# @yieldparam [Cacheable] obj
|
|
52
|
+
# The cached object.
|
|
41
53
|
#
|
|
42
54
|
def ObjectCache.each(directory=nil,&block)
|
|
43
55
|
attributes = {}
|
|
@@ -57,6 +69,9 @@ module Ronin
|
|
|
57
69
|
# Cache all objects loaded from the paths within the specified
|
|
58
70
|
# _directory_.
|
|
59
71
|
#
|
|
72
|
+
# @param [String] directory
|
|
73
|
+
# The directory to cache all objects from.
|
|
74
|
+
#
|
|
60
75
|
def ObjectCache.cache(directory)
|
|
61
76
|
Database.setup unless Database.setup?
|
|
62
77
|
|
|
@@ -70,7 +85,10 @@ module Ronin
|
|
|
70
85
|
#
|
|
71
86
|
# Syncs all objects that were previously cached from paths within
|
|
72
87
|
# the specified _directory_. Also cache objects which have yet to
|
|
73
|
-
# be cached.
|
|
88
|
+
# be cached from the _directory_.
|
|
89
|
+
#
|
|
90
|
+
# @param [String] directory
|
|
91
|
+
# The directory to sync all objects with.
|
|
74
92
|
#
|
|
75
93
|
def ObjectCache.sync(directory)
|
|
76
94
|
new_paths = ObjectCache.paths(directory)
|
|
@@ -92,6 +110,9 @@ module Ronin
|
|
|
92
110
|
# Deletes all cached objects that existed in the specified
|
|
93
111
|
# _directory_.
|
|
94
112
|
#
|
|
113
|
+
# @param [String] directory
|
|
114
|
+
# Deletes all cached objects from the specified _directory_.
|
|
115
|
+
#
|
|
95
116
|
def ObjectCache.clean(directory)
|
|
96
117
|
Database.setup unless Database.setup?
|
|
97
118
|
|
|
@@ -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/platform/exceptions/extension_not_found'
|
|
@@ -77,6 +74,9 @@ module Ronin
|
|
|
77
74
|
# Website URI for the overlay
|
|
78
75
|
attr_reader :website
|
|
79
76
|
|
|
77
|
+
# Ruby Gems required by the overlay
|
|
78
|
+
attr_reader :gems
|
|
79
|
+
|
|
80
80
|
# Maintainers of the overlay
|
|
81
81
|
attr_reader :maintainers
|
|
82
82
|
|
|
@@ -94,7 +94,24 @@ module Ronin
|
|
|
94
94
|
|
|
95
95
|
#
|
|
96
96
|
# Creates a new Overlay object with the specified _path_, _media_
|
|
97
|
-
# and _uri_.
|
|
97
|
+
# and _uri_. If a _block_ is given it will be passed the newly
|
|
98
|
+
# created Overlay object.
|
|
99
|
+
#
|
|
100
|
+
# @param [String] path
|
|
101
|
+
# The path to the overlay.
|
|
102
|
+
#
|
|
103
|
+
# @param [Symbol] media
|
|
104
|
+
# The media of the overlay. Can be either +:git+, +:hg+, +:snv+ or
|
|
105
|
+
# +:rsync+.
|
|
106
|
+
#
|
|
107
|
+
# @param [String, URI::HTTP, URI::HTTPS] uri
|
|
108
|
+
# The URI the overlay resides at.
|
|
109
|
+
#
|
|
110
|
+
# @yield [overlay]
|
|
111
|
+
# If a block is given, the overlay will be passed to it.
|
|
112
|
+
#
|
|
113
|
+
# @yieldparam [Overlay] overlay
|
|
114
|
+
# The newly created overlay.
|
|
98
115
|
#
|
|
99
116
|
def initialize(path,media=nil,uri=nil,&block)
|
|
100
117
|
@path = File.expand_path(path)
|
|
@@ -104,18 +121,22 @@ module Ronin
|
|
|
104
121
|
@uri = uri
|
|
105
122
|
@repository = Repository.new(@path,Media.types[media])
|
|
106
123
|
|
|
107
|
-
initialize_metadata(
|
|
124
|
+
initialize_metadata()
|
|
125
|
+
|
|
126
|
+
block.call(self) if block
|
|
108
127
|
end
|
|
109
128
|
|
|
110
129
|
#
|
|
111
|
-
#
|
|
130
|
+
# @return [Symbol]
|
|
131
|
+
# The media type of the overlay.
|
|
112
132
|
#
|
|
113
133
|
def media
|
|
114
134
|
@repository.media_name
|
|
115
135
|
end
|
|
116
136
|
|
|
117
137
|
#
|
|
118
|
-
#
|
|
138
|
+
# @return [Array]
|
|
139
|
+
# The paths of all extensions within the overlay.
|
|
119
140
|
#
|
|
120
141
|
def extension_paths
|
|
121
142
|
@repository.directories.reject do |dir|
|
|
@@ -126,15 +147,23 @@ module Ronin
|
|
|
126
147
|
end
|
|
127
148
|
|
|
128
149
|
#
|
|
129
|
-
#
|
|
150
|
+
# @return [Array]
|
|
151
|
+
# The names of all extensions within the overlay.
|
|
130
152
|
#
|
|
131
153
|
def extensions
|
|
132
154
|
extension_paths.map { |dir| File.basename(dir) }
|
|
133
155
|
end
|
|
134
156
|
|
|
135
157
|
#
|
|
136
|
-
#
|
|
137
|
-
#
|
|
158
|
+
# Searches for the extension with the specified _name_ within the
|
|
159
|
+
# overlay.
|
|
160
|
+
#
|
|
161
|
+
# @param [String, Symbol] name
|
|
162
|
+
# The name of the extension to search for.
|
|
163
|
+
#
|
|
164
|
+
# @return [Boolean]
|
|
165
|
+
# Specifies whether the overlay contains the extension with the
|
|
166
|
+
# specified _name_.
|
|
138
167
|
#
|
|
139
168
|
def has_extension?(name)
|
|
140
169
|
name = File.basename(name.to_s)
|
|
@@ -144,8 +173,9 @@ module Ronin
|
|
|
144
173
|
end
|
|
145
174
|
|
|
146
175
|
#
|
|
147
|
-
#
|
|
148
|
-
# the overlay
|
|
176
|
+
# @return [Array]
|
|
177
|
+
# The +lib+ directories of the overlay and the extensions within
|
|
178
|
+
# the overlay.
|
|
149
179
|
#
|
|
150
180
|
def lib_dirs
|
|
151
181
|
dirs = []
|
|
@@ -164,8 +194,8 @@ module Ronin
|
|
|
164
194
|
end
|
|
165
195
|
|
|
166
196
|
#
|
|
167
|
-
# Activates the overlay by adding the lib_dirs to the
|
|
168
|
-
#
|
|
197
|
+
# Activates the overlay by adding all of the lib_dirs to the
|
|
198
|
+
# +$LOAD_PATH+ global variable.
|
|
169
199
|
#
|
|
170
200
|
def activate!
|
|
171
201
|
# add the static/ directory
|
|
@@ -185,7 +215,7 @@ module Ronin
|
|
|
185
215
|
|
|
186
216
|
#
|
|
187
217
|
# Deactivates the overlay by removing the lib_dirs from the
|
|
188
|
-
#
|
|
218
|
+
# +$LOAD_PATH+ global variable.
|
|
189
219
|
#
|
|
190
220
|
def deactivate!
|
|
191
221
|
Static.static_dirs.reject! { |dir| dir == @static_dir }
|
|
@@ -196,21 +226,41 @@ module Ronin
|
|
|
196
226
|
end
|
|
197
227
|
|
|
198
228
|
#
|
|
199
|
-
# Updates the overlay and reloads it's metadata.
|
|
200
|
-
#
|
|
229
|
+
# Updates the overlay and reloads it's metadata.
|
|
230
|
+
#
|
|
231
|
+
# @yield [overlay]
|
|
232
|
+
# If a block is given, it will be passed after the overlay has
|
|
233
|
+
# been updated.
|
|
234
|
+
#
|
|
235
|
+
# @yieldparam [Overlay] overlay
|
|
236
|
+
# The updated overlay.
|
|
237
|
+
#
|
|
238
|
+
# @return [Overlay]
|
|
239
|
+
# The updated overlay.
|
|
201
240
|
#
|
|
202
241
|
def update(&block)
|
|
203
|
-
if
|
|
204
|
-
|
|
242
|
+
if (@uri && @media)
|
|
243
|
+
if @repository.update(@uri)
|
|
244
|
+
initialize_metadata()
|
|
245
|
+
end
|
|
205
246
|
end
|
|
206
247
|
|
|
248
|
+
block.call(self) if block
|
|
207
249
|
return self
|
|
208
250
|
end
|
|
209
251
|
|
|
210
252
|
#
|
|
211
|
-
# Deletes the
|
|
212
|
-
#
|
|
213
|
-
#
|
|
253
|
+
# Deletes the contents of the overlay.
|
|
254
|
+
#
|
|
255
|
+
# @yield [overlay]
|
|
256
|
+
# If a block is given, it will be passed the overlay after it's
|
|
257
|
+
# contents have been deleted.
|
|
258
|
+
#
|
|
259
|
+
# @yieldparam [Overlay] overlay
|
|
260
|
+
# The deleted overlay.
|
|
261
|
+
#
|
|
262
|
+
# @return [Overlay]
|
|
263
|
+
# The deleted overlay.
|
|
214
264
|
#
|
|
215
265
|
def uninstall(&block)
|
|
216
266
|
@repository.delete
|
|
@@ -220,7 +270,8 @@ module Ronin
|
|
|
220
270
|
end
|
|
221
271
|
|
|
222
272
|
#
|
|
223
|
-
#
|
|
273
|
+
# @return [String]
|
|
274
|
+
# The name of the overlay.
|
|
224
275
|
#
|
|
225
276
|
def to_s
|
|
226
277
|
@name.to_s
|
|
@@ -233,7 +284,7 @@ module Ronin
|
|
|
233
284
|
# overlay +path+. If a _block_ is given, it will be passed the
|
|
234
285
|
# overlay after the metadata has been loaded.
|
|
235
286
|
#
|
|
236
|
-
def initialize_metadata(
|
|
287
|
+
def initialize_metadata()
|
|
237
288
|
metadata_path = File.join(@path,METADATA_FILE)
|
|
238
289
|
|
|
239
290
|
# set to default values
|
|
@@ -244,6 +295,8 @@ module Ronin
|
|
|
244
295
|
@source_view = @source
|
|
245
296
|
@website = @source_view
|
|
246
297
|
|
|
298
|
+
@gems = []
|
|
299
|
+
|
|
247
300
|
@maintainers = []
|
|
248
301
|
@description = nil
|
|
249
302
|
|
|
@@ -271,6 +324,10 @@ module Ronin
|
|
|
271
324
|
@website = website_tag.inner_text.strip
|
|
272
325
|
end
|
|
273
326
|
|
|
327
|
+
overlay.search('dependencies/gem').each do |gem|
|
|
328
|
+
@gems << gem.inner_text.strip
|
|
329
|
+
end
|
|
330
|
+
|
|
274
331
|
overlay.search('maintainers/maintainer').each do |maintainer|
|
|
275
332
|
if (name = maintainer.at('name'))
|
|
276
333
|
name = name.inner_text.strip
|
|
@@ -288,7 +345,6 @@ module Ronin
|
|
|
288
345
|
end
|
|
289
346
|
end
|
|
290
347
|
|
|
291
|
-
block.call(self) if block
|
|
292
348
|
return self
|
|
293
349
|
end
|
|
294
350
|
|