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
data/bin/ronin CHANGED
@@ -9,4 +9,4 @@ end
9
9
 
10
10
  require 'ronin/ui/command_line'
11
11
 
12
- Ronin::UI::CommandLine.run(*ARGV)
12
+ Ronin::UI::CommandLine.start
data/bin/ronin-add CHANGED
@@ -9,4 +9,4 @@ end
9
9
 
10
10
  require 'ronin/ui/command_line/commands/add'
11
11
 
12
- Ronin::UI::CommandLine::Commands::Add.run(*ARGV)
12
+ Ronin::UI::CommandLine::Commands::Add.start
data/bin/ronin-console CHANGED
@@ -9,4 +9,4 @@ end
9
9
 
10
10
  require 'ronin/ui/command_line/commands/console'
11
11
 
12
- Ronin::UI::CommandLine::Commands::Console.run(*ARGV)
12
+ Ronin::UI::CommandLine::Commands::Console.start
data/bin/ronin-help CHANGED
@@ -9,4 +9,4 @@ end
9
9
 
10
10
  require 'ronin/ui/command_line/commands/help'
11
11
 
12
- Ronin::UI::CommandLine::Commands::Help.run(*ARGV)
12
+ Ronin::UI::CommandLine::Commands::Help.start
data/bin/ronin-install CHANGED
@@ -9,4 +9,4 @@ end
9
9
 
10
10
  require 'ronin/ui/command_line/commands/install'
11
11
 
12
- Ronin::UI::CommandLine::Commands::Install.run(*ARGV)
12
+ Ronin::UI::CommandLine::Commands::Install.start
data/bin/ronin-list CHANGED
@@ -9,4 +9,4 @@ end
9
9
 
10
10
  require 'ronin/ui/command_line/commands/list'
11
11
 
12
- Ronin::UI::CommandLine::Commands::List.run(*ARGV)
12
+ Ronin::UI::CommandLine::Commands::List.start
data/bin/ronin-remove CHANGED
@@ -9,4 +9,4 @@ end
9
9
 
10
10
  require 'ronin/ui/command_line/commands/remove'
11
11
 
12
- Ronin::UI::CommandLine::Commands::Remove.run(*ARGV)
12
+ Ronin::UI::CommandLine::Commands::Remove.start
data/bin/ronin-uninstall CHANGED
@@ -9,4 +9,4 @@ end
9
9
 
10
10
  require 'ronin/ui/command_line/commands/uninstall'
11
11
 
12
- Ronin::UI::CommandLine::Commands::Uninstall.run(*ARGV)
12
+ Ronin::UI::CommandLine::Commands::Uninstall.start
data/bin/ronin-update CHANGED
@@ -9,4 +9,4 @@ end
9
9
 
10
10
  require 'ronin/ui/command_line/commands/update'
11
11
 
12
- Ronin::UI::CommandLine::Commands::Update.run(*ARGV)
12
+ Ronin::UI::CommandLine::Commands::Update.start
data/lib/ronin.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,8 +16,8 @@
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/environment'
22
+ require 'ronin/platform'
25
23
  require 'ronin/version'
data/lib/ronin/arch.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
  require 'ronin/extensions/meta'
@@ -54,34 +51,82 @@ module Ronin
54
51
  validates_is_number :address_length
55
52
 
56
53
  #
57
- # Returns the name of the arch as a String.
54
+ # Converts the architecture to a String.
55
+ #
56
+ # @return [String]
57
+ # The name of the architecture.
58
58
  #
59
59
  def to_s
60
- @name.to_s
60
+ self.name.to_s
61
61
  end
62
62
 
63
63
  #
64
64
  # Defines a new builtin Arch with the specified _name_ and the given
65
65
  # _options_.
66
66
  #
67
- def self.define(name,options={})
67
+ # @param [Symbol, String] name
68
+ # The name of the architecture.
69
+ #
70
+ # @param [Hash] options
71
+ # Additional options.
72
+ #
73
+ # @option options [Symbol, String] :endian
74
+ # The endianness of the architecture.
75
+ #
76
+ # @option options [Integer] :address_length
77
+ # The address-length of the architecture.
78
+ #
79
+ # @example Defining a builtin Arch
80
+ # Arch.predefine :alpha, :endian => :big, :address_length => 8
81
+ #
82
+ # @example Retrieving a predefined Arch
83
+ # Arch.alpha
84
+ #
85
+ def self.predefine(name,options={})
68
86
  super(name,options.merge(:name => name))
69
87
  end
70
88
 
71
- define :i386, :endian => :little, :address_length => 4
72
- define :i486, :endian => :little, :address_length => 4
73
- define :i686, :endian => :little, :address_length => 4
74
- define :i986, :endian => :little, :address_length => 4
75
- define :x86_64, :endian => :little, :address_length => 8
76
- define :ia64, :endian => :little, :address_length => 8
77
- define :ppc, :endian => :big, :address_length => 4
78
- define :ppc64, :endian => :big, :address_length => 8
79
- define :sparc, :endian => :big, :address_length => 4
80
- define :sparc64, :endian => :big, :address_length => 8
81
- define :mips_le, :endian => :little, :address_length => 4
82
- define :mips_be, :endian => :big, :address_length => 4
83
- define :arm_le, :endian => :little, :address_length => 4
84
- define :arm_be, :endian => :big, :address_length => 4
89
+ # The i386 Architecture
90
+ predefine :i386, :endian => :little, :address_length => 4
91
+
92
+ # The i486 Architecture
93
+ predefine :i486, :endian => :little, :address_length => 4
94
+
95
+ # The i686 Architecture
96
+ predefine :i686, :endian => :little, :address_length => 4
97
+
98
+ # The i986 Architecture
99
+ predefine :i986, :endian => :little, :address_length => 4
100
+
101
+ # The x86_64 Architecture
102
+ predefine :x86_64, :endian => :little, :address_length => 8
103
+
104
+ # The ia64 Architecture
105
+ predefine :ia64, :endian => :little, :address_length => 8
106
+
107
+ # The 32-bit PowerPC Architecture
108
+ predefine :ppc, :endian => :big, :address_length => 4
109
+
110
+ # The 64-bit PowerPC Architecture
111
+ predefine :ppc64, :endian => :big, :address_length => 8
112
+
113
+ # The 32-bit SPARC Architecture
114
+ predefine :sparc, :endian => :big, :address_length => 4
115
+
116
+ # The 64-bit SPARC Architecture
117
+ predefine :sparc64, :endian => :big, :address_length => 8
118
+
119
+ # The MIPS (little-endian) Architecture
120
+ predefine :mips_le, :endian => :little, :address_length => 4
121
+
122
+ # The MIPS (big-endian) Architecture
123
+ predefine :mips_be, :endian => :big, :address_length => 4
124
+
125
+ # The ARM (little-endian) Architecture
126
+ predefine :arm_le, :endian => :little, :address_length => 4
127
+
128
+ # The ARM (big-endian) Architecture
129
+ predefine :arm_be, :endian => :big, :address_length => 4
85
130
 
86
131
  end
87
132
  end
data/lib/ronin/author.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
  require 'ronin/model'
@@ -32,7 +29,7 @@ module Ronin
32
29
  include Model
33
30
 
34
31
  # Anonymouse author name
35
- ANONYMOUSE = 'anonymous'
32
+ ANONYMOUSE = 'Anonymous'
36
33
 
37
34
  # Primary key of the author
38
35
  property :id, Serial
@@ -59,13 +56,26 @@ module Ronin
59
56
  # Creates a new Author object with the given _options_. If _block_ is
60
57
  # given, it will be passed the newly created Author object.
61
58
  #
62
- # _info_ may contain the following keys:
63
- # <tt>:name</tt>:: The name of the author. Defaults to +ANONYMOUSE+.
64
- # <tt>:organization</tt>:: The organization of the author.
65
- # <tt>:pgp_signature</tt>:: The PGP signature of the author.
66
- # <tt>:email</tt>:: The email address of the author.
67
- # <tt>:url</tt>:: The URL for the author.
68
- # <tt>:biography</tt>:: The biography of the author.
59
+ # @param [Hash] options
60
+ # Additional options.
61
+ #
62
+ # @option options [String] :name (ANONYMOUSE)
63
+ # The name of the author.
64
+ #
65
+ # @option options [String] :organization
66
+ # The organization the author belongs to.
67
+ #
68
+ # @option options [String] :pgp_signature
69
+ # The PGP fingerprint of the author.
70
+ #
71
+ # @option options [String] :email
72
+ # The email to contact the author.
73
+ #
74
+ # @option options [String] :url
75
+ # The URL of the author.
76
+ #
77
+ # @option options [String] :biography
78
+ # The biography of the author.
69
79
  #
70
80
  def initialize(options={},&block)
71
81
  super(options)
@@ -73,15 +83,14 @@ module Ronin
73
83
  block.call(self) if block
74
84
  end
75
85
 
76
- def name
77
- @name || ANONYMOUSE
78
- end
79
-
80
86
  #
81
- # Returns the name of the author.
87
+ # Converts the author to a String.
88
+ #
89
+ # @return [String]
90
+ # The name of the author.
82
91
  #
83
92
  def to_s
84
- @name.to_s
93
+ self.name.to_s
85
94
  end
86
95
 
87
96
  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
  require 'ronin/model'
@@ -102,13 +99,32 @@ module Ronin
102
99
  end
103
100
 
104
101
  #
105
- # Loads the first object with the matching _attributes_.
102
+ # Loads the first object with matching attributes.
106
103
  #
107
- def self.load_first(attributes={})
108
- if (obj = self.first(attributes))
109
- obj.load_original!
110
- end
104
+ # @param [Hash] attributes
105
+ # Attributes to search for.
106
+ #
107
+ # @yield [objs]
108
+ # If a block is given, it will be passed all matching
109
+ # objects to be filtered down. The first object from the filtered
110
+ # objects will end up being selected.
111
+ #
112
+ # @yieldparam [Array<Cacheable>] objs
113
+ # All matching objects.
114
+ #
115
+ # @return [Cacheable]
116
+ # The loaded cached objects.
117
+ #
118
+ def self.load_first(attributes={},&block)
119
+ obj = if block
120
+ objs = self.all(attributes)
121
+
122
+ (block.call(objs) || objs).first
123
+ else
124
+ self.first(attributes)
125
+ end
111
126
 
127
+ obj.load_original! if obj
112
128
  return obj
113
129
  end
114
130
  end
@@ -119,15 +135,27 @@ module Ronin
119
135
  end
120
136
 
121
137
  #
122
- # List of cacheable models.
138
+ # @return [Array]
139
+ # List of cacheable models.
123
140
  #
124
141
  def Cacheable.models
125
142
  @@ronin_cacheable_models ||= []
126
143
  end
127
144
 
128
145
  #
129
- # Loads all cacheable objects from the specified _path_. If a _block_
130
- # is given, it will be passed each loaded object.
146
+ # Loads all cacheable objects from the specified _path_.
147
+ #
148
+ # @param [String] path
149
+ # The path to load the objects from.
150
+ #
151
+ # @yield [obj]
152
+ # If a block is given, it will be passed each loaded object.
153
+ #
154
+ # @yieldparam [Cacheable] obj
155
+ # An object loaded from the specified _path_.
156
+ #
157
+ # @return [Array]
158
+ # All objects loaded from the specified _path_.
131
159
  #
132
160
  def Cacheable.load_all_from(path,&block)
133
161
  path = File.expand_path(path)
@@ -148,7 +176,10 @@ module Ronin
148
176
  end
149
177
 
150
178
  #
151
- # Cache all objects defined in the file at the specified _path_.
179
+ # Cache all objects defined in a file.
180
+ #
181
+ # @param [String] path
182
+ # The path to cache all objects from.
152
183
  #
153
184
  def Cacheable.cache_all(path)
154
185
  path = File.expand_path(path)
@@ -159,15 +190,17 @@ module Ronin
159
190
  end
160
191
 
161
192
  #
162
- # Returns +true+ if the original code has been loaded, returns +false+
163
- # otherwise.
193
+ # @return [Boolean]
194
+ # Specifies whether the original code has been loaded into the
195
+ # object.
164
196
  #
165
197
  def original_loaded?
166
198
  @original_loaded == true
167
199
  end
168
200
 
169
201
  #
170
- # Load the code from the cached file for the object.
202
+ # Loads the code from the cached file for the object, and instance evals
203
+ # it into the object.
171
204
  #
172
205
  def load_original!
173
206
  if (self.cached_path && !(@original_loaded))
@@ -182,8 +215,10 @@ module Ronin
182
215
 
183
216
  #
184
217
  # Deletes any previously cached copies of the object and caches it into
185
- # the database. Returns +true+ if the object was successfully cached,
186
- # returns +false+ otherwise.
218
+ # the database.
219
+ #
220
+ # @return [Boolean]
221
+ # Specifies whether the object was successfully cached,
187
222
  #
188
223
  def cache!
189
224
  if self.cached_path
@@ -201,9 +236,10 @@ module Ronin
201
236
  # Deletes any previous cached copies of the object and caches it into
202
237
  # the database, only if the file where the object was originally cached
203
238
  # from was modified. The object will also be destroyed if the file
204
- # where the object was originally cached from is missing. Returns
205
- # +true+ if the object was successfully synced, returns +false+
206
- # otherwise.
239
+ # where the object was originally cached from is missing.
240
+ #
241
+ # @return [Boolean]
242
+ # Specifies whether the object was successfully synced.
207
243
  #
208
244
  def sync!
209
245
  if (self.cached_path && self.cached_timestamp)
@@ -224,8 +260,8 @@ module Ronin
224
260
  end
225
261
 
226
262
  #
227
- # Returns +true+ if the object has been prepared to be cached,
228
- # returns +false+ otherwise.
263
+ # @return [Boolean]
264
+ # Specifies whether the object has been prepared to be cached,
229
265
  #
230
266
  def prepared_for_cache?
231
267
  @cache_prepared == true
@@ -246,6 +282,10 @@ module Ronin
246
282
  #
247
283
  # Will run the specified _block_ when the object is about to be cached.
248
284
  #
285
+ # @yield []
286
+ # The block will be ran inside the object when the object is to be
287
+ # prepared for caching.
288
+ #
249
289
  def cache(&block)
250
290
  @cache_block = block
251
291
  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