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,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
- # _options_ may contain the following keys:
35
- # <tt>:name</tt>:: Name of the shell.
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
- # Equivalent to <tt>STDOUT.putc(char)</tt>.
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
- # Equivalent to <tt>STDOUT.print(string)</tt>.
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
- # Equivalent to <tt>STDOUT.puts(string)</tt>.
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
- # Equivalent to <tt>STDOUT.printf(string,*objects)</tt>.
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.2.4'
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
- module Ronin
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 'ronin/ui/console'
25
-
26
- module Ronin
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