ronin 0.2.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data.tar.gz.sig +0 -0
- data/History.txt +95 -0
- data/Manifest.txt +55 -25
- data/README.txt +64 -52
- data/Rakefile +21 -14
- data/bin/ronin +1 -1
- data/bin/ronin-add +1 -1
- data/bin/ronin-console +1 -1
- data/bin/ronin-help +1 -1
- data/bin/ronin-install +1 -1
- data/bin/ronin-list +1 -1
- data/bin/ronin-remove +1 -1
- data/bin/ronin-uninstall +1 -1
- data/bin/ronin-update +1 -1
- data/lib/ronin.rb +2 -4
- data/lib/ronin/arch.rb +66 -21
- data/lib/ronin/author.rb +27 -18
- data/lib/ronin/cacheable.rb +63 -23
- data/lib/ronin/code/emittable.rb +1 -4
- data/lib/ronin/code/reference.rb +2 -5
- data/lib/ronin/code/symbol_table.rb +1 -4
- data/lib/ronin/code/token.rb +1 -4
- data/lib/ronin/config.rb +31 -10
- data/lib/ronin/database.rb +1 -4
- data/lib/ronin/database/database.rb +42 -23
- data/lib/ronin/database/exceptions.rb +1 -4
- data/lib/ronin/database/exceptions/invalid_config.rb +1 -4
- data/lib/ronin/environment.rb +1 -5
- data/lib/ronin/extensions.rb +1 -5
- data/lib/ronin/extensions/array.rb +8 -6
- data/lib/ronin/extensions/file.rb +9 -4
- data/lib/ronin/extensions/ip_addr.rb +33 -13
- data/lib/ronin/extensions/kernel.rb +44 -9
- data/lib/ronin/extensions/meta.rb +1 -4
- data/lib/ronin/extensions/string.rb +8 -7
- data/lib/ronin/extensions/uri.rb +1 -4
- data/lib/ronin/extensions/uri/http.rb +1 -48
- data/lib/ronin/extensions/uri/query_params.rb +27 -8
- data/lib/ronin/formatting.rb +1 -4
- data/lib/ronin/formatting/binary.rb +1 -4
- data/lib/ronin/formatting/digest.rb +1 -4
- data/lib/ronin/formatting/extensions.rb +1 -4
- data/lib/ronin/formatting/extensions/binary.rb +1 -4
- data/lib/ronin/formatting/extensions/binary/file.rb +3 -28
- data/lib/ronin/formatting/extensions/binary/integer.rb +31 -12
- data/lib/ronin/formatting/extensions/binary/string.rb +59 -36
- data/lib/ronin/formatting/extensions/digest.rb +1 -4
- data/lib/ronin/formatting/extensions/digest/string.rb +31 -9
- data/lib/ronin/formatting/extensions/http.rb +1 -4
- data/lib/ronin/formatting/extensions/http/string.rb +16 -9
- data/lib/ronin/formatting/extensions/text.rb +1 -4
- data/lib/ronin/formatting/extensions/text/array.rb +17 -7
- data/lib/ronin/formatting/extensions/text/string.rb +70 -27
- data/lib/ronin/formatting/http.rb +1 -4
- data/lib/ronin/formatting/text.rb +1 -4
- data/lib/ronin/license.rb +72 -65
- data/lib/ronin/model.rb +1 -4
- data/lib/ronin/model/has_description.rb +37 -8
- data/lib/ronin/model/has_license.rb +12 -8
- data/lib/ronin/model/has_name.rb +10 -7
- data/lib/ronin/model/has_version.rb +14 -4
- data/lib/ronin/model/model.rb +71 -14
- data/lib/ronin/network.rb +1 -4
- data/lib/ronin/network/esmtp.rb +1 -4
- data/lib/ronin/network/extensions.rb +1 -4
- data/lib/ronin/network/extensions/esmtp.rb +1 -4
- data/lib/ronin/network/extensions/esmtp/net.rb +49 -21
- data/lib/ronin/network/extensions/http.rb +1 -4
- data/lib/ronin/network/extensions/http/net.rb +319 -531
- data/lib/ronin/network/extensions/imap.rb +1 -4
- data/lib/ronin/network/extensions/imap/net.rb +50 -23
- data/lib/ronin/network/extensions/pop3.rb +1 -4
- data/lib/ronin/network/extensions/pop3/net.rb +40 -17
- data/lib/ronin/network/extensions/smtp.rb +1 -4
- data/lib/ronin/network/extensions/smtp/net.rb +49 -21
- data/lib/ronin/network/extensions/tcp.rb +1 -4
- data/lib/ronin/network/extensions/tcp/net.rb +234 -31
- data/lib/ronin/network/extensions/telnet.rb +1 -4
- data/lib/ronin/network/extensions/telnet/net.rb +83 -51
- data/lib/ronin/network/extensions/udp.rb +1 -4
- data/lib/ronin/network/extensions/udp/net.rb +164 -27
- data/lib/ronin/{sessions.rb → network/helpers.rb} +10 -13
- data/lib/ronin/network/helpers/esmtp.rb +129 -0
- data/lib/ronin/{sessions/session.rb → network/helpers/helper.rb} +25 -17
- data/lib/ronin/network/helpers/http.rb +444 -0
- data/lib/ronin/network/helpers/imap.rb +115 -0
- data/lib/ronin/network/helpers/pop3.rb +110 -0
- data/lib/ronin/network/helpers/smtp.rb +123 -0
- data/lib/ronin/network/helpers/tcp.rb +309 -0
- data/lib/ronin/network/helpers/telnet.rb +158 -0
- data/lib/ronin/network/helpers/udp.rb +197 -0
- data/lib/ronin/network/http.rb +3 -156
- data/lib/ronin/network/http/exceptions.rb +1 -4
- data/lib/ronin/network/http/exceptions/unknown_request.rb +1 -4
- data/lib/ronin/network/http/http.rb +214 -0
- data/lib/ronin/network/http/proxy.rb +308 -0
- data/lib/ronin/network/imap.rb +7 -6
- data/lib/ronin/network/pop3.rb +7 -6
- data/lib/ronin/network/smtp.rb +1 -4
- data/lib/ronin/network/smtp/email.rb +34 -18
- data/lib/ronin/network/smtp/smtp.rb +19 -7
- data/lib/ronin/network/tcp.rb +1 -4
- data/lib/ronin/network/telnet.rb +25 -12
- data/lib/ronin/network/udp.rb +1 -4
- data/lib/ronin/os.rb +43 -21
- data/lib/ronin/path.rb +29 -9
- data/lib/ronin/platform.rb +1 -4
- data/lib/ronin/platform/exceptions.rb +1 -4
- data/lib/ronin/platform/exceptions/extension_not_found.rb +1 -4
- data/lib/ronin/platform/exceptions/overlay_cached.rb +1 -4
- data/lib/ronin/platform/exceptions/overlay_not_found.rb +1 -4
- data/lib/ronin/platform/extension.rb +195 -52
- data/lib/ronin/platform/extension_cache.rb +60 -24
- data/lib/ronin/platform/maintainer.rb +15 -8
- data/lib/ronin/platform/object_cache.rb +29 -8
- data/lib/ronin/platform/overlay.rb +82 -26
- data/lib/ronin/platform/overlay_cache.rb +179 -56
- data/lib/ronin/platform/platform.rb +154 -58
- data/lib/ronin/platform/ronin.rb +38 -11
- data/lib/ronin/product.rb +17 -17
- data/lib/ronin/rpc.rb +1 -4
- data/lib/ronin/rpc/call.rb +1 -4
- data/lib/ronin/rpc/client.rb +1 -4
- data/lib/ronin/rpc/console.rb +1 -4
- data/lib/ronin/rpc/exceptions.rb +1 -4
- data/lib/ronin/rpc/exceptions/not_implemented.rb +1 -4
- data/lib/ronin/rpc/exceptions/response_missing.rb +1 -4
- data/lib/ronin/rpc/response.rb +1 -4
- data/lib/ronin/rpc/service.rb +1 -4
- data/lib/ronin/rpc/shell.rb +1 -4
- data/lib/ronin/scanners.rb +1 -4
- data/lib/ronin/scanners/exceptions.rb +1 -4
- data/lib/ronin/scanners/exceptions/unknown_category.rb +1 -4
- data/lib/ronin/scanners/scanner.rb +82 -26
- data/lib/ronin/static.rb +1 -4
- data/lib/ronin/static/finders.rb +1 -4
- data/lib/ronin/static/static.rb +16 -7
- data/lib/ronin/templates.rb +2 -4
- data/lib/ronin/templates/erb.rb +24 -10
- data/lib/ronin/templates/template.rb +130 -0
- data/lib/ronin/ui.rb +2 -6
- data/lib/ronin/ui/command_line.rb +1 -4
- data/lib/ronin/ui/command_line/command.rb +137 -68
- data/lib/ronin/ui/command_line/command_line.rb +52 -29
- data/lib/ronin/ui/command_line/commands/add.rb +39 -67
- data/lib/ronin/ui/command_line/commands/console.rb +23 -27
- data/lib/ronin/ui/command_line/commands/help.rb +10 -29
- data/lib/ronin/ui/command_line/commands/install.rb +31 -56
- data/lib/ronin/ui/command_line/commands/list.rb +34 -52
- data/lib/ronin/ui/command_line/commands/remove.rb +12 -32
- data/lib/ronin/ui/command_line/commands/uninstall.rb +11 -31
- data/lib/ronin/ui/command_line/commands/update.rb +15 -35
- data/lib/ronin/ui/command_line/exceptions.rb +1 -4
- data/lib/ronin/ui/command_line/exceptions/unknown_command.rb +1 -4
- data/lib/ronin/ui/console.rb +54 -23
- data/lib/ronin/ui/hexdump.rb +1 -4
- data/lib/ronin/ui/hexdump/extensions.rb +1 -4
- data/lib/ronin/ui/hexdump/extensions/file.rb +8 -6
- data/lib/ronin/ui/hexdump/extensions/kernel.rb +4 -5
- data/lib/ronin/ui/hexdump/hexdump.rb +8 -5
- data/lib/ronin/{sessions/exceptions.rb → ui/output.rb} +3 -5
- data/lib/ronin/ui/output/handler.rb +121 -0
- data/lib/ronin/ui/output/helpers.rb +110 -0
- data/lib/ronin/ui/output/output.rb +144 -0
- data/lib/ronin/ui/shell.rb +38 -12
- data/lib/ronin/version.rb +2 -5
- data/lib/ronin/{sessions/exceptions/variable_missing.rb → yard.rb} +2 -10
- data/lib/ronin/{ronin.rb → yard/handlers.rb} +5 -15
- data/lib/ronin/yard/handlers/ruby.rb +27 -0
- data/lib/ronin/yard/handlers/ruby/base.rb +27 -0
- data/lib/ronin/yard/handlers/ruby/belongs_to_handler.rb +45 -0
- data/lib/ronin/yard/handlers/ruby/eval_block_handler.rb +18 -0
- data/lib/ronin/yard/handlers/ruby/has_handler.rb +49 -0
- data/lib/ronin/yard/handlers/ruby/legacy.rb +26 -0
- data/lib/ronin/yard/handlers/ruby/legacy/belongs_to_handler.rb +41 -0
- data/lib/ronin/yard/handlers/ruby/legacy/eval_block_handler.rb +19 -0
- data/lib/ronin/yard/handlers/ruby/legacy/has_handler.rb +34 -0
- data/lib/ronin/yard/handlers/ruby/legacy/metaclass_eval_handler.rb +21 -0
- data/lib/ronin/yard/handlers/ruby/legacy/property_handler.rb +41 -0
- data/lib/ronin/yard/handlers/ruby/legacy/scanner_handler.rb +61 -0
- data/lib/ronin/yard/handlers/ruby/metaclass_eval_handler.rb +18 -0
- data/lib/ronin/yard/handlers/ruby/property_handler.rb +45 -0
- data/lib/ronin/yard/handlers/ruby/scanner_handler.rb +66 -0
- data/spec/author_spec.rb +3 -3
- data/spec/extensions/classes/some_class.rb +2 -0
- data/spec/extensions/kernel_spec.rb +17 -0
- data/spec/extensions/uri/http_spec.rb +0 -31
- data/spec/formatting/binary/integer_spec.rb +4 -0
- data/spec/formatting/text/string_spec.rb +96 -0
- data/spec/license_spec.rb +6 -6
- data/spec/model/classes/basic_model.rb +13 -0
- data/spec/model/classes/custom_model.rb +17 -0
- data/spec/model/classes/described_model.rb +10 -0
- data/spec/model/has_description_spec.rb +42 -0
- data/spec/model/has_license_spec.rb +18 -4
- data/spec/model/model_spec.rb +68 -0
- data/spec/network/helpers/classes/test_helper.rb +11 -0
- data/spec/network/helpers/classes/uses_test_helper.rb +10 -0
- data/spec/network/helpers/helper_spec.rb +25 -0
- data/spec/network/{http_spec.rb → http/http_spec.rb} +0 -0
- data/spec/network/http/proxy_spec.rb +116 -0
- data/spec/os_spec.rb +4 -4
- data/spec/platform/extension_cache_spec.rb +14 -0
- data/spec/platform/extension_spec.rb +11 -0
- data/spec/platform/platform_spec.rb +8 -0
- data/spec/product_spec.rb +9 -9
- data/spec/spec_helper.rb +1 -1
- data/spec/templates/classes/{uses_erb.rb → example_erb.rb} +1 -1
- data/spec/templates/classes/example_template.rb +21 -0
- data/spec/templates/erb_spec.rb +2 -2
- data/spec/templates/helpers/static.rb +5 -0
- data/spec/templates/helpers/static/templates/_relative.erb +1 -0
- data/spec/templates/helpers/static/templates/example.erb +1 -0
- data/spec/templates/template_spec.rb +41 -0
- data/spec/ui/command_line/classes/test_command.rb +23 -0
- data/spec/ui/command_line/command_spec.rb +31 -0
- data/spec/ui/output_spec.rb +29 -0
- data/static/ronin/platform/overlay.xsl +135 -114
- data/tasks/spec.rb +1 -0
- data/tasks/yard.rb +18 -0
- metadata +98 -59
- metadata.gz.sig +0 -0
- data/TODO.txt +0 -15
- data/lib/ronin/extensions/hash.rb +0 -62
- data/lib/ronin/sessions/esmtp.rb +0 -57
- data/lib/ronin/sessions/http.rb +0 -678
- data/lib/ronin/sessions/imap.rb +0 -54
- data/lib/ronin/sessions/pop3.rb +0 -52
- data/lib/ronin/sessions/smtp.rb +0 -57
- data/lib/ronin/sessions/tcp.rb +0 -100
- data/lib/ronin/sessions/telnet.rb +0 -55
- data/lib/ronin/sessions/udp.rb +0 -73
- data/lib/ronin/ui/command_line/options.rb +0 -136
- data/lib/ronin/ui/diagnostics.rb +0 -66
- data/lib/ronin/ui/verbose.rb +0 -58
- data/spec/extensions/hash_spec.rb +0 -38
- data/spec/sessions/classes/test_session.rb +0 -11
- data/spec/sessions/classes/uses_test_session.rb +0 -10
- data/spec/sessions/session_spec.rb +0 -25
- data/spec/ui/verbose_spec.rb +0 -17
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
#
|
|
2
|
-
|
|
3
|
-
# Ronin - A Ruby platform designed for information security and data
|
|
4
|
-
# exploration tasks.
|
|
2
|
+
# Ronin - A Ruby platform for exploit development and security research.
|
|
5
3
|
#
|
|
6
4
|
# Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
|
|
7
5
|
#
|
|
@@ -18,7 +16,6 @@
|
|
|
18
16
|
# You should have received a copy of the GNU General Public License
|
|
19
17
|
# along with this program; if not, write to the Free Software
|
|
20
18
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
21
|
-
#++
|
|
22
19
|
#
|
|
23
20
|
|
|
24
21
|
require 'ronin/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
|
|
31
|
-
#
|
|
32
|
-
#
|
|
33
|
-
#
|
|
34
|
-
#
|
|
35
|
-
#
|
|
36
|
-
#
|
|
37
|
-
#
|
|
38
|
-
#
|
|
39
|
-
#
|
|
40
|
-
#
|
|
41
|
-
#
|
|
42
|
-
#
|
|
43
|
-
#
|
|
44
|
-
#
|
|
45
|
-
#
|
|
46
|
-
#
|
|
47
|
-
#
|
|
48
|
-
#
|
|
49
|
-
#
|
|
50
|
-
#
|
|
51
|
-
#
|
|
52
|
-
#
|
|
53
|
-
#
|
|
54
|
-
#
|
|
55
|
-
#
|
|
56
|
-
#
|
|
57
|
-
#
|
|
58
|
-
#
|
|
59
|
-
#
|
|
60
|
-
#
|
|
61
|
-
#
|
|
62
|
-
#
|
|
63
|
-
#
|
|
64
|
-
#
|
|
65
|
-
#
|
|
66
|
-
#
|
|
67
|
-
#
|
|
68
|
-
#
|
|
69
|
-
#
|
|
70
|
-
#
|
|
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
|
-
#
|
|
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
|
|
29
|
-
# and the given
|
|
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
|
-
#
|
|
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(
|
|
39
|
-
sock = UDPSocket.new(
|
|
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
|
|
47
|
-
#
|
|
48
|
-
# then be written to the newly created UDPSocket.
|
|
49
|
-
#
|
|
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
|
-
|
|
52
|
-
|
|
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
|
|
61
|
-
# and the given
|
|
62
|
-
#
|
|
63
|
-
#
|
|
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
|
-
|
|
66
|
-
|
|
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
|
|
76
|
-
# and
|
|
77
|
-
#
|
|
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
|
-
|
|
80
|
-
|
|
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/
|
|
25
|
-
require 'ronin/
|
|
26
|
-
require 'ronin/
|
|
27
|
-
require 'ronin/
|
|
28
|
-
require 'ronin/
|
|
29
|
-
require 'ronin/
|
|
30
|
-
require 'ronin/
|
|
31
|
-
require 'ronin/
|
|
32
|
-
require 'ronin/
|
|
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'
|