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
data/lib/ronin/ui/shell.rb
CHANGED
|
@@ -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
|
|
@@ -31,11 +28,25 @@ module Ronin
|
|
|
31
28
|
# Creates and starts a new Shell object with the specified _options_.
|
|
32
29
|
# If a _block_ is given, it will be passed every command.
|
|
33
30
|
#
|
|
34
|
-
#
|
|
35
|
-
#
|
|
36
|
-
# <tt>:prompt</tt>:: Prompt to use for the shell, defaults to
|
|
37
|
-
# +DEFAULT_PROMPT+.
|
|
31
|
+
# @param [Hash] options
|
|
32
|
+
# Additional options.
|
|
38
33
|
#
|
|
34
|
+
# @option options [String] :name ('')
|
|
35
|
+
# The shell-name to use before the prompt.
|
|
36
|
+
#
|
|
37
|
+
# @option options [String] :prompt (DEFAULT_PROMPT)
|
|
38
|
+
# The prompt to use for the shell.
|
|
39
|
+
#
|
|
40
|
+
# @yield [shell, line]
|
|
41
|
+
# The block that will be passed every command entered.
|
|
42
|
+
#
|
|
43
|
+
# @yieldparam [Shell] shell
|
|
44
|
+
# The shell to use for output.
|
|
45
|
+
#
|
|
46
|
+
# @yieldparam [String] line
|
|
47
|
+
# The command entered into the shell.
|
|
48
|
+
#
|
|
49
|
+
# @example
|
|
39
50
|
# Shell.start(:prompt => '$') { |shell,line| system(line) }
|
|
40
51
|
#
|
|
41
52
|
def Shell.start(options={},&block)
|
|
@@ -66,28 +77,43 @@ module Ronin
|
|
|
66
77
|
end
|
|
67
78
|
|
|
68
79
|
#
|
|
69
|
-
#
|
|
80
|
+
# Print a character to the shell.
|
|
81
|
+
#
|
|
82
|
+
# @param [String] char
|
|
83
|
+
# The character to print.
|
|
70
84
|
#
|
|
71
85
|
def Shell.putc(char)
|
|
72
86
|
STDOUT.putc(char)
|
|
73
87
|
end
|
|
74
88
|
|
|
75
89
|
#
|
|
76
|
-
#
|
|
90
|
+
# Print a String to the shell.
|
|
91
|
+
#
|
|
92
|
+
# @param [String] string
|
|
93
|
+
# The String to print.
|
|
77
94
|
#
|
|
78
95
|
def Shell.print(string)
|
|
79
96
|
STDOUT.print(string)
|
|
80
97
|
end
|
|
81
98
|
|
|
82
99
|
#
|
|
83
|
-
#
|
|
100
|
+
# Print a String and a new-line character to the shell.
|
|
101
|
+
#
|
|
102
|
+
# @param [String] string
|
|
103
|
+
# The String to print.
|
|
84
104
|
#
|
|
85
105
|
def Shell.puts(string)
|
|
86
106
|
STDOUT.puts(string)
|
|
87
107
|
end
|
|
88
108
|
|
|
89
109
|
#
|
|
90
|
-
#
|
|
110
|
+
# Render the format-string and print the result to the shell.
|
|
111
|
+
#
|
|
112
|
+
# @param [String] string
|
|
113
|
+
# The format-string to render.
|
|
114
|
+
#
|
|
115
|
+
# @param [Array] objects
|
|
116
|
+
# Additional objects to use in the format-string.
|
|
91
117
|
#
|
|
92
118
|
def Shell.printf(string,*objects)
|
|
93
119
|
STDOUT.printf(string,*objects)
|
data/lib/ronin/version.rb
CHANGED
|
@@ -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,10 +16,9 @@
|
|
|
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
|
|
25
22
|
# Ronin version
|
|
26
|
-
VERSION = '0.
|
|
23
|
+
VERSION = '0.3.0'
|
|
27
24
|
end
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
#
|
|
2
|
-
|
|
3
|
-
# Ronin - A ruby development platform designed for information security
|
|
4
|
-
# and data 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,12 +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
|
-
|
|
25
|
-
module Sessions
|
|
26
|
-
class VariableMissing < RuntimeError
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
21
|
+
require 'ronin/yard/handlers'
|
|
@@ -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,17 +16,9 @@
|
|
|
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
|
-
require '
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
# Starts Ronin's console with the given _script_. If a _block_ is given
|
|
29
|
-
# it will be ran within the console.
|
|
30
|
-
#
|
|
31
|
-
def Ronin.console(script=nil,&block)
|
|
32
|
-
UI::Console.start(script,&block)
|
|
33
|
-
end
|
|
34
|
-
end
|
|
21
|
+
require 'dm-predefined/yard/handlers'
|
|
22
|
+
require 'contextify/yard/handlers'
|
|
23
|
+
require 'parameters/yard/handlers'
|
|
24
|
+
require 'ronin/yard/handlers/ruby'
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Ronin - A Ruby platform for exploit development and security research.
|
|
3
|
+
#
|
|
4
|
+
# Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
|
|
5
|
+
#
|
|
6
|
+
# This program is free software; you can redistribute it and/or modify
|
|
7
|
+
# it under the terms of the GNU General Public License as published by
|
|
8
|
+
# the Free Software Foundation; either version 2 of the License, or
|
|
9
|
+
# (at your option) any later version.
|
|
10
|
+
#
|
|
11
|
+
# This program is distributed in the hope that it will be useful,
|
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
# GNU General Public License for more details.
|
|
15
|
+
#
|
|
16
|
+
# You should have received a copy of the GNU General Public License
|
|
17
|
+
# along with this program; if not, write to the Free Software
|
|
18
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
19
|
+
#
|
|
20
|
+
|
|
21
|
+
require 'ronin/yard/handlers/ruby/eval_block_handler'
|
|
22
|
+
require 'ronin/yard/handlers/ruby/metaclass_eval_handler'
|
|
23
|
+
require 'ronin/yard/handlers/ruby/property_handler'
|
|
24
|
+
require 'ronin/yard/handlers/ruby/has_handler'
|
|
25
|
+
require 'ronin/yard/handlers/ruby/belongs_to_handler'
|
|
26
|
+
require 'ronin/yard/handlers/ruby/scanner_handler'
|
|
27
|
+
require 'ronin/yard/handlers/ruby/legacy'
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'yard'
|
|
2
|
+
|
|
3
|
+
module YARD
|
|
4
|
+
module Handlers
|
|
5
|
+
module Ruby
|
|
6
|
+
class Base < Handlers::Base
|
|
7
|
+
|
|
8
|
+
protected
|
|
9
|
+
|
|
10
|
+
def effected_namespace
|
|
11
|
+
if statement.type == :command_call
|
|
12
|
+
context = statement.jump(:var_ref)
|
|
13
|
+
|
|
14
|
+
unless context.source == 'self'
|
|
15
|
+
return ensure_loaded!(
|
|
16
|
+
Registry.resolve(namespace,context.source)
|
|
17
|
+
)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
return namespace
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'yard'
|
|
2
|
+
|
|
3
|
+
require 'ronin/yard/handlers/ruby/base'
|
|
4
|
+
|
|
5
|
+
module YARD
|
|
6
|
+
module Handlers
|
|
7
|
+
module Ruby
|
|
8
|
+
class BelongsToHandler < Base
|
|
9
|
+
|
|
10
|
+
handles method_call(:belongs_to)
|
|
11
|
+
|
|
12
|
+
def process
|
|
13
|
+
nobj = effected_namespace
|
|
14
|
+
mscope = scope
|
|
15
|
+
name = statement.parameters[0].last
|
|
16
|
+
|
|
17
|
+
if name.type == :symbol
|
|
18
|
+
name = name.source[1..-1]
|
|
19
|
+
|
|
20
|
+
register MethodObject.new(nobj, name, :class) do |o|
|
|
21
|
+
o.visibility = :public
|
|
22
|
+
o.source = statement.source
|
|
23
|
+
o.signature = "def self.#{name}"
|
|
24
|
+
o.parameters = [['repository', 'nil']]
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
register MethodObject.new(nobj, name, mscope) do |o|
|
|
28
|
+
o.visibility = :public
|
|
29
|
+
o.source = statement.source
|
|
30
|
+
o.signature = "def #{name}"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
register MethodObject.new(nobj, "#{name}=", mscope) do |o|
|
|
34
|
+
o.visibility = :public
|
|
35
|
+
o.source = statement.source
|
|
36
|
+
o.signature = "def #{name}=(resource)"
|
|
37
|
+
o.parameters = [['resource', nil]]
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'yard'
|
|
2
|
+
|
|
3
|
+
module YARD
|
|
4
|
+
module Handlers
|
|
5
|
+
module Ruby
|
|
6
|
+
class EvalBlockHandler < YARD::Handlers::Ruby::Base
|
|
7
|
+
|
|
8
|
+
handles method_call(:module_eval), method_call(:class_eval), method_call(:instance_eval)
|
|
9
|
+
|
|
10
|
+
def process
|
|
11
|
+
if (block = statement.jump(:brace_block, :do_block).last)
|
|
12
|
+
parse_block(block)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require 'yard'
|
|
2
|
+
|
|
3
|
+
require 'ronin/yard/handlers/ruby/base'
|
|
4
|
+
|
|
5
|
+
module YARD
|
|
6
|
+
module Handlers
|
|
7
|
+
module Ruby
|
|
8
|
+
class HasHandler < Base
|
|
9
|
+
|
|
10
|
+
handles method_call(:has)
|
|
11
|
+
|
|
12
|
+
def process
|
|
13
|
+
args = statement.parameters
|
|
14
|
+
n = args[0].last
|
|
15
|
+
name = args[1].last
|
|
16
|
+
|
|
17
|
+
if (name.type == :symbol &&
|
|
18
|
+
((n.type == :int && n.source =~ /^[0-9]\d*$/) ||
|
|
19
|
+
(n.type == :ident && n.source == 'n')))
|
|
20
|
+
nobj = effected_namespace
|
|
21
|
+
mscope = scope
|
|
22
|
+
name = name.source[1..-1]
|
|
23
|
+
|
|
24
|
+
register MethodObject.new(nobj, name, :class) do |o|
|
|
25
|
+
o.visibility = :public
|
|
26
|
+
o.source = statement.source
|
|
27
|
+
o.signature = "def self.#{name}"
|
|
28
|
+
o.parameters = [['repository', 'nil']]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
register MethodObject.new(nobj, name, mscope) do |o|
|
|
32
|
+
o.visibility = :public
|
|
33
|
+
o.source = statement.source
|
|
34
|
+
o.signature = "def #{name}"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
register MethodObject.new(nobj, "#{name}=", mscope) do |o|
|
|
38
|
+
o.visibility = :public
|
|
39
|
+
o.source = statement.source
|
|
40
|
+
o.signature = "def #{name}="
|
|
41
|
+
o.parameters = [["new_#{name}", nil]]
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Ronin - A Ruby platform for exploit development and security research.
|
|
3
|
+
#
|
|
4
|
+
# Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
|
|
5
|
+
#
|
|
6
|
+
# This program is free software; you can redistribute it and/or modify
|
|
7
|
+
# it under the terms of the GNU General Public License as published by
|
|
8
|
+
# the Free Software Foundation; either version 2 of the License, or
|
|
9
|
+
# (at your option) any later version.
|
|
10
|
+
#
|
|
11
|
+
# This program is distributed in the hope that it will be useful,
|
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
# GNU General Public License for more details.
|
|
15
|
+
#
|
|
16
|
+
# You should have received a copy of the GNU General Public License
|
|
17
|
+
# along with this program; if not, write to the Free Software
|
|
18
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
19
|
+
#
|
|
20
|
+
|
|
21
|
+
require 'ronin/yard/handlers/ruby/legacy/eval_block_handler'
|
|
22
|
+
require 'ronin/yard/handlers/ruby/legacy/metaclass_eval_handler'
|
|
23
|
+
require 'ronin/yard/handlers/ruby/legacy/property_handler'
|
|
24
|
+
require 'ronin/yard/handlers/ruby/legacy/has_handler'
|
|
25
|
+
require 'ronin/yard/handlers/ruby/legacy/belongs_to_handler'
|
|
26
|
+
require 'ronin/yard/handlers/ruby/legacy/scanner_handler'
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
require 'yard'
|
|
2
|
+
|
|
3
|
+
module YARD
|
|
4
|
+
module Handlers
|
|
5
|
+
module Ruby
|
|
6
|
+
module Legacy
|
|
7
|
+
class BelongsToHandler < Base
|
|
8
|
+
|
|
9
|
+
handles /\Abelongs_to\s/
|
|
10
|
+
|
|
11
|
+
def process
|
|
12
|
+
nobj = namespace
|
|
13
|
+
mscope = scope
|
|
14
|
+
name = statement.tokens[2,1].to_s[1..-1]
|
|
15
|
+
|
|
16
|
+
register MethodObject.new(nobj, name, :class) do |o|
|
|
17
|
+
o.visibility = :public
|
|
18
|
+
o.source = statement.source
|
|
19
|
+
o.signature = "def self.#{name}"
|
|
20
|
+
o.parameters = [['repository', 'nil']]
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
register MethodObject.new(nobj, name, mscope) do |o|
|
|
24
|
+
o.visibility = :public
|
|
25
|
+
o.source = statement.source
|
|
26
|
+
o.signature = "def #{name}"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
register MethodObject.new(nobj, "#{name}=", mscope) do |o|
|
|
30
|
+
o.visibility = :public
|
|
31
|
+
o.source = statement.source
|
|
32
|
+
o.signature = "def #{name}=(resource)"
|
|
33
|
+
o.parameters = [['resource', nil]]
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'yard/handlers/ruby/legacy/base'
|
|
2
|
+
|
|
3
|
+
module YARD
|
|
4
|
+
module Handlers
|
|
5
|
+
module Ruby
|
|
6
|
+
module Legacy
|
|
7
|
+
class EvalBlockHandler < Base
|
|
8
|
+
|
|
9
|
+
handles /(\A|\.)(module|class|instance)_eval(\s+|\()/
|
|
10
|
+
|
|
11
|
+
def process
|
|
12
|
+
parse_block if statement.block
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require 'yard'
|
|
2
|
+
|
|
3
|
+
module YARD
|
|
4
|
+
module Handlers
|
|
5
|
+
module Ruby
|
|
6
|
+
module Legacy
|
|
7
|
+
class HasHandler < Base
|
|
8
|
+
|
|
9
|
+
handles /\Ahas\s+([1-9]\d*|n|(0|1)\.\.n),\s/
|
|
10
|
+
|
|
11
|
+
def process
|
|
12
|
+
nobj = namespace
|
|
13
|
+
mscope = scope
|
|
14
|
+
name = statement.tokens[2..-1].to_s[/:[^,]+/][1..-1]
|
|
15
|
+
|
|
16
|
+
register MethodObject.new(nobj, name, :class) do |o|
|
|
17
|
+
o.visibility = :public
|
|
18
|
+
o.source = statement.source
|
|
19
|
+
o.signature = "def self.#{name}"
|
|
20
|
+
o.parameters = [['repository', 'nil']]
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
register MethodObject.new(nobj, name, mscope) do |o|
|
|
24
|
+
o.visibility = :public
|
|
25
|
+
o.source = statement.source
|
|
26
|
+
o.signature = "def #{name}"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|