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
  require 'ronin/network/extensions/telnet/net'
@@ -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/network/telnet'
@@ -27,47 +24,70 @@ require 'net/telnet'
27
24
 
28
25
  module Net
29
26
  #
30
- # Creates a new Telnet object with the specified _host_, given port
31
- # and the given _options_. If a _block_ is given, it will be passed
32
- # the newly created Telnet object.
33
- #
34
- # _options_ may contain the following keys:
35
- # <tt>:port</tt>:: The port to connect to. Defaults to
36
- # <tt>Ronin::Network::Telnet.default_port</tt>, if not
37
- # given.
38
- # <tt>:binmode</tt>:: Indicates that newline substitution shall not
39
- # be performed.
40
- # <tt>:output_log</tt>:: The name of the file to write connection
41
- # status messages and all received traffic to.
42
- # <tt>:dump_log</tt>:: Similar to the <tt>:output_log</tt> option,
43
- # but connection output is also written in
44
- # hexdump format.
45
- # <tt>:prompt</tt>:: A regular expression matching the host's
46
- # command-line prompt sequence, used to determine
47
- # when a command has finished. Defaults to
48
- # <tt>Ronin::Network::Telnet.default_prompt</tt>, if
49
- # not given.
50
- # <tt>:telnet</tt>:: Indicates that the connection shall behave as a
51
- # telnet connection. Defaults to +true+.
52
- # <tt>:plain</tt>:: Indicates that the connection shall behave as a
53
- # normal TCP connection.
54
- # <tt>:timeout</tt>:: The number of seconds to wait before timing out
55
- # both the initial attempt to connect to host,
56
- # and all attempts to read data from the host.
57
- # Defaults to
58
- # <tt>Ronin::Network::Telnet.default_timeout</tt>,
59
- # if not given.
60
- # <tt>:wait_time</tt>:: The amount of time to wait after seeing what
61
- # looks like a prompt.
62
- # <tt>:proxy</tt>:: A proxy object to used instead of opening a
63
- # direct connection to the host. Must be either
64
- # another telnet object or an IO object.
65
- # Defaults to
66
- # <tt>Ronin::Network::Telnet.proxy</tt>, if not given.
67
- # <tt>:user</tt>:: The user to login with.
68
- # <tt>:password</tt>:: The password to login with.
69
- #
70
- # Telnet.connect('towel.blinkenlights.nl') # => Telnet
27
+ # Creates a new Telnet connection.
28
+ #
29
+ # @param [String] host
30
+ # The host to connect to.
31
+ #
32
+ # @param [Hash] options
33
+ # Additional options.
34
+ #
35
+ # @option options [Integer] :port (Ronin::Network::Telnet.default_port)
36
+ # The port to connect to.
37
+ #
38
+ # @option options [Boolean] :binmode
39
+ # Indicates that newline substitution shall not be performed.
40
+ #
41
+ # @option options [String] :output_log
42
+ # The name of the file to write connection status messages and all
43
+ # received traffic to.
44
+ #
45
+ # @option options [String] :dump_log
46
+ # Similar to the +:output_log+ option, but connection output is also
47
+ # written in hexdump format.
48
+ #
49
+ # @option options [Regexp] :prompt (Ronin::Network::Telnet.default_prompt)
50
+ # A regular expression matching the host command-line prompt sequence,
51
+ # used to determine when a command has finished.
52
+ #
53
+ # @option options [Boolean] :telnet (true)
54
+ # Indicates that the connection shall behave as a telnet connection.
55
+ #
56
+ # @option options [Boolean] :plain
57
+ # Indicates that the connection shall behave as a normal TCP
58
+ # connection.
59
+ #
60
+ # @option options [Integer] :timeout (Ronin::Network::Telnet.default_timeout)
61
+ # The number of seconds to wait before timing out both the initial
62
+ # attempt to connect to host, and all attempts to read data from the
63
+ # host.
64
+ #
65
+ # @option options [Integer] :wait_time
66
+ # The amount of time to wait after seeing what looks like a prompt.
67
+ #
68
+ # @option options [Net::Telnet, IO] :proxy (Ronin::Network::Telnet.proxy)
69
+ # A proxy object to used instead of opening a direct connection to the
70
+ # host.
71
+ #
72
+ # @option options [String] :user
73
+ # The user to login as.
74
+ #
75
+ # @option options [String] :password
76
+ # The password to login with.
77
+ #
78
+ # @yield [session]
79
+ # If a block is given, it will be passed the newly created Telnet
80
+ # session.
81
+ #
82
+ # @yieldparam [Net::Telnet] session
83
+ # The newly created Telnet session.
84
+ #
85
+ # @return [Net::Telnet]
86
+ # The Telnet session
87
+ #
88
+ # @example
89
+ # Net.telnet_connect('towel.blinkenlights.nl')
90
+ # # => #<Net::Telnet: ...>
71
91
  #
72
92
  def Net.telnet_connect(host,options={},&block)
73
93
  sess_opts = {}
@@ -97,17 +117,29 @@ module Net
97
117
  end
98
118
 
99
119
  #
100
- # Creates a new Telnet object with the specified _host, given port
101
- # and the given _options_. See telnet for a complete listing the
102
- # _options_. If a _block_ is given, it will be passed the newly
103
- # created Telnet object. After the telnet connection has been
104
- # established, and the given _block_ has completed, the connection
105
- # is then closed.
120
+ # Starts a new Telnet session.
106
121
  #
122
+ # @param [String] host
123
+ # The host to connect to.
124
+ #
125
+ # @param [Hash] options
126
+ # Additional options.
127
+ #
128
+ # @yield [session]
129
+ # If a block is given, it will be passed the newly created
130
+ # Telnet session. After the block has returned, the Telnet session
131
+ # will be closed.
132
+ #
133
+ # @yieldparam [Net::Telnet] session
134
+ # The newly created Telnet session.
135
+ #
136
+ # @example
107
137
  # Net.telnet_session('towel.blinkenlights.nl') do |movie|
108
138
  # movie.each_line { |line| puts line }
109
139
  # end
110
140
  #
141
+ # @see Net.telnet_session
142
+ #
111
143
  def Net.telnet_session(host,options={},&block)
112
144
  Net.telnet_connect(host,options) do |sess|
113
145
  block.call(sess) if block
@@ -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/network/extensions/udp/net'
@@ -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,38 +16,83 @@
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 'socket'
25
22
 
26
23
  module Net
27
24
  #
28
- # Creates a new UDPSocket object with the specified _rhost_, _rport_
29
- # and the given _lhost_ and _lport_. If _block_ is given, it will be
30
- # passed the newly created UDPSocket object.
25
+ # Creates a new UDPSocket object with the specified _host_, _port_
26
+ # and the given _local_host_ and _local_port_.
31
27
  #
32
- # Net.udp_connect('www.hackety.org',80) # => UDPSocket
28
+ # @param [String] host
29
+ # The host to connect to.
33
30
  #
31
+ # @param [Integer] port
32
+ # The port to connect to.
33
+ #
34
+ # @param [String] local_host
35
+ # The local host to bind to.
36
+ #
37
+ # @param [Integer] local_port
38
+ # The local port to bind to.
39
+ #
40
+ # @yield [socket]
41
+ # If a block is given, it will be passed the newly created socket.
42
+ #
43
+ # @yieldparam [UDPsocket] socket
44
+ # The newly created UDPSocket object.
45
+ #
46
+ # @return [UDPSocket]
47
+ # The newly created UDPSocket object.
48
+ #
49
+ # @example
50
+ # Net.udp_connect('www.hackety.org',80)
51
+ # # => UDPSocket
52
+ #
53
+ # @example
34
54
  # Net.udp_connect('www.wired.com',80) do |sock|
35
55
  # puts sock.readlines
36
56
  # end
37
57
  #
38
- def Net.udp_connect(rhost,rport,lhost=nil,lport=nil,&block)
39
- sock = UDPSocket.new(@rhost,@rport,@lhost,@lport)
58
+ def Net.udp_connect(host,port,local_host=nil,local_port=nil,&block)
59
+ sock = UDPSocket.new(host,port,local_host,local_port)
40
60
  block.call(sock) if block
41
61
 
42
62
  return sock
43
63
  end
44
64
 
45
65
  #
46
- # Creates a new UDPSocket object with the specified _rhost_
47
- # _rport_, and the given _lhost_ and _lport_. The specified _data_ will
48
- # then be written to the newly created UDPSocket. If a _block_ is given
49
- # it will be passed the UDPSocket object.
66
+ # Creates a new UDPSocket object with the specified _host_, _port_, and
67
+ # the given _local_host_ and _local_port_. The specified _data_ will
68
+ # then be written to the newly created UDPSocket.
69
+ #
70
+ # @param [String] data
71
+ # The data to send through the connection.
72
+ #
73
+ # @param [String] host
74
+ # The host to connect to.
75
+ #
76
+ # @param [Integer] port
77
+ # The port to connect to.
78
+ #
79
+ # @param [String] local_host
80
+ # The local host to bind to.
81
+ #
82
+ # @param [Integer] local_port
83
+ # The local port to bind to.
84
+ #
85
+ # @yield [socket]
86
+ # If a block is given, it will be passed the newly created socket.
50
87
  #
51
- def Net.udp_connect_and_send(data,rhost,rport,lhost=nil,lport=nil,&block)
52
- Net.udp_connect(rhost,rport,lhost,lport) do |sock|
88
+ # @yieldparam [UDPsocket] socket
89
+ # The newly created UDPSocket object.
90
+ #
91
+ # @return [UDPSocket]
92
+ # The newly created UDPSocket object.
93
+ #
94
+ def Net.udp_connect_and_send(data,host,port,local_host=nil,local_port=nil,&block)
95
+ Net.udp_connect(host,port,local_host,local_port) do |sock|
53
96
  sock.write(data)
54
97
 
55
98
  block.call(sock) if block
@@ -57,13 +100,30 @@ module Net
57
100
  end
58
101
 
59
102
  #
60
- # Creates a new UDPSocket object with the specified _rhost_, _rport_
61
- # and the given _lhost_ and _lport_. If _block_ is given, it will be
62
- # passed the newly created UDPSocket object. After the UDPSocket object
63
- # has been passed to the given _block_ it will be closed.
103
+ # Creates a new UDPSocket object with the specified _host_, _port_
104
+ # and the given _local_host_ and _local_port_.
105
+ #
106
+ # @param [String] host
107
+ # The host to connect to.
108
+ #
109
+ # @param [Integer] port
110
+ # The port to connect to.
111
+ #
112
+ # @param [String] local_host
113
+ # The local host to bind to.
114
+ #
115
+ # @param [Integer] local_port
116
+ # The local port to bind to.
117
+ #
118
+ # @yield [socket]
119
+ # If a block is given, it will be passed the newly created socket.
120
+ # After the block has returned, the socket will then be closed.
64
121
  #
65
- def Net.udp_session(rhost,rport,lhost=nil,lport=nil,&block)
66
- Net.udp_connect(rhost,rport,lhost,lport) do |sock|
122
+ # @yieldparam [UDPsocket] socket
123
+ # The newly created UDPSocket object.
124
+ #
125
+ def Net.udp_session(host,port,local_host=nil,local_port=nil,&block)
126
+ Net.udp_connect(host,port,local_host,local_port) do |sock|
67
127
  block.call(sock) if block
68
128
  sock.close
69
129
  end
@@ -72,16 +132,93 @@ module Net
72
132
  end
73
133
 
74
134
  #
75
- # Connects to the specified _rhost_ and _rport_ with the given _lhost_
76
- # and _lport_, reads the banner then closes the connection, returning the
77
- # received banner. If a _block_ is given it will be passed the banner.
135
+ # Connects to the specified _host_ and _port_ with the given _local_host_
136
+ # and _local_port_, reads the banner then closes the connection,
137
+ # returning the received banner.
138
+ #
139
+ # @param [String] host
140
+ # The host to connect to.
141
+ #
142
+ # @param [Integer] port
143
+ # The port to connect to.
144
+ #
145
+ # @param [String] local_host
146
+ # The local host to bind to.
147
+ #
148
+ # @param [Integer] local_port
149
+ # The local port to bind to.
150
+ #
151
+ # @yield [banner]
152
+ # If a block is given, it will be passed the grabbed banner.
78
153
  #
79
- def Net.udp_banner(rhost,rport,lhost=nil,lport=nil,&block)
80
- Net.udp_session(rhost,rport,lhost,lport) do |sock|
154
+ # @yieldparam [String] banner
155
+ # The grabbed banner.
156
+ #
157
+ # @return [String]
158
+ # The grabbed banner.
159
+ #
160
+ def Net.udp_banner(host,port,local_host=nil,local_port=nil,&block)
161
+ Net.udp_session(host,port,local_host,local_port) do |sock|
81
162
  banner = sock.readline
82
163
  end
83
164
 
84
165
  block.call(banner) if block
85
166
  return banner
86
167
  end
168
+
169
+ #
170
+ # Creates a new UDPServer listening on the specified _host_ and _port_.
171
+ #
172
+ # @param [Integer] port
173
+ # The local port to listen on.
174
+ #
175
+ # @param [String] host
176
+ # The host to bind to.
177
+ #
178
+ # @return [UDPServer]
179
+ # The new UDP server.
180
+ #
181
+ # @example
182
+ # Net.udp_server(1337)
183
+ #
184
+ # @since 0.3.0
185
+ #
186
+ def Net.udp_server(port,host='0.0.0.0',&block)
187
+ server = UDPServer.new(host,port)
188
+
189
+ block.call(server) if block
190
+ return server
191
+ end
192
+
193
+ #
194
+ # Creates a new UDPServer listening on the specified _host_ and _port_,
195
+ # passing it to the given _block_ and then closing the server.
196
+ #
197
+ # @param [Integer] port
198
+ # The local port to bind to.
199
+ #
200
+ # @param [String] host
201
+ # The host to bind to.
202
+ #
203
+ # @yield [server]
204
+ # The block which will be called after the _server_ has been created.
205
+ # After the block has finished, the _server_ will be closed.
206
+ #
207
+ # @yieldparam [UDPServer] server
208
+ # The newly created UDP server.
209
+ #
210
+ # @return [nil]
211
+ #
212
+ # @example
213
+ # Net.udp_server_session(1337) do |server|
214
+ # data, sender = server.recvfrom(1024)
215
+ # end
216
+ #
217
+ # @since 0.3.0
218
+ #
219
+ def Net.udp_server_session(port,host='0.0.0.0',&block)
220
+ server = Net.udp_server(port,host,&block)
221
+ server.close()
222
+ return nil
223
+ end
87
224
  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,15 +16,14 @@
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/sessions/session'
25
- require 'ronin/sessions/tcp'
26
- require 'ronin/sessions/udp'
27
- require 'ronin/sessions/smtp'
28
- require 'ronin/sessions/esmtp'
29
- require 'ronin/sessions/pop3'
30
- require 'ronin/sessions/imap'
31
- require 'ronin/sessions/telnet'
32
- require 'ronin/sessions/web'
21
+ require 'ronin/network/helpers/helper'
22
+ require 'ronin/network/helpers/tcp'
23
+ require 'ronin/network/helpers/udp'
24
+ require 'ronin/network/helpers/smtp'
25
+ require 'ronin/network/helpers/esmtp'
26
+ require 'ronin/network/helpers/pop3'
27
+ require 'ronin/network/helpers/imap'
28
+ require 'ronin/network/helpers/telnet'
29
+ require 'ronin/network/helpers/web'