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/formatting/extensions/binary/integer'
|
|
@@ -30,12 +27,22 @@ require 'base64'
|
|
|
30
27
|
class String
|
|
31
28
|
|
|
32
29
|
#
|
|
33
|
-
# Packs
|
|
34
|
-
#
|
|
35
|
-
# length of the _arch_.
|
|
30
|
+
# Packs an Integer from a String, which was originally packed for
|
|
31
|
+
# a specific architecture and address-length.
|
|
36
32
|
#
|
|
33
|
+
# @param [Ronin::Arch] arch
|
|
34
|
+
# The architecture that the Integer was originally packed with.
|
|
35
|
+
#
|
|
36
|
+
# @param [Integer] address_length
|
|
37
|
+
# The number of bytes to depack.
|
|
38
|
+
#
|
|
39
|
+
# @return [Integer]
|
|
40
|
+
# The depacked Integer.
|
|
41
|
+
#
|
|
42
|
+
# @example
|
|
37
43
|
# 0x41.pack(Arch('i686')) # => "A\000\000\000"
|
|
38
44
|
#
|
|
45
|
+
# @example
|
|
39
46
|
# 0x41.pack(Arch('ppc'),2) # => "\000A"
|
|
40
47
|
#
|
|
41
48
|
def depack(arch,address_length=arch.address_length)
|
|
@@ -61,8 +68,10 @@ class String
|
|
|
61
68
|
end
|
|
62
69
|
|
|
63
70
|
#
|
|
64
|
-
#
|
|
71
|
+
# @return [String]
|
|
72
|
+
# The hex escaped version of the String.
|
|
65
73
|
#
|
|
74
|
+
# @example
|
|
66
75
|
# "hello".hex_escape
|
|
67
76
|
# # => "\\x68\\x65\\x6c\\x6c\\x6f"
|
|
68
77
|
#
|
|
@@ -71,8 +80,10 @@ class String
|
|
|
71
80
|
end
|
|
72
81
|
|
|
73
82
|
#
|
|
74
|
-
#
|
|
83
|
+
# @return [String]
|
|
84
|
+
# The unescaped version of the hex escaped String.
|
|
75
85
|
#
|
|
86
|
+
# @example
|
|
76
87
|
# "\\x68\\x65\\x6c\\x6c\\x6f".hex_unescape
|
|
77
88
|
# # => "hello"
|
|
78
89
|
#
|
|
@@ -126,7 +137,17 @@ class String
|
|
|
126
137
|
end
|
|
127
138
|
|
|
128
139
|
#
|
|
129
|
-
# XOR encodes the
|
|
140
|
+
# XOR encodes the String.
|
|
141
|
+
#
|
|
142
|
+
# @param [Integer] key
|
|
143
|
+
# The byte to XOR against each byte in the String.
|
|
144
|
+
#
|
|
145
|
+
# @return [String]
|
|
146
|
+
# The XOR encoded String.
|
|
147
|
+
#
|
|
148
|
+
# @example
|
|
149
|
+
# "hello".xor(0x41)
|
|
150
|
+
# # => ")$--."
|
|
130
151
|
#
|
|
131
152
|
def xor(key)
|
|
132
153
|
encoded = ''
|
|
@@ -136,14 +157,20 @@ class String
|
|
|
136
157
|
end
|
|
137
158
|
|
|
138
159
|
#
|
|
139
|
-
#
|
|
160
|
+
# Base64 encodes a string.
|
|
161
|
+
#
|
|
162
|
+
# @return [String]
|
|
163
|
+
# The base64 encoded form of the string.
|
|
140
164
|
#
|
|
141
165
|
def base64_encode
|
|
142
166
|
Base64.encode64(self)
|
|
143
167
|
end
|
|
144
168
|
|
|
145
169
|
#
|
|
146
|
-
#
|
|
170
|
+
# Base64 decodes a string.
|
|
171
|
+
#
|
|
172
|
+
# @return [String]
|
|
173
|
+
# The base64 decoded form of the string.
|
|
147
174
|
#
|
|
148
175
|
def base64_decode
|
|
149
176
|
Base64.decode64(self)
|
|
@@ -151,31 +178,27 @@ class String
|
|
|
151
178
|
|
|
152
179
|
#
|
|
153
180
|
# Converts a multitude of hexdump formats back into the original
|
|
154
|
-
# raw-data
|
|
181
|
+
# raw-data.
|
|
182
|
+
#
|
|
183
|
+
# @param [Hash] options
|
|
184
|
+
# Additional options.
|
|
185
|
+
#
|
|
186
|
+
# @option options [Symbol] :format
|
|
187
|
+
# The expected format of the hexdump. Must be either +:od+ or
|
|
188
|
+
# +:hexdump+.
|
|
189
|
+
#
|
|
190
|
+
# @option options [Symbol] :encoding
|
|
191
|
+
# Denotes the encoding used for the bytes within the hexdump.
|
|
192
|
+
# Must be one of the following: +:binary+, +:octal+, +:octal_bytes+
|
|
193
|
+
# +:octal_shorts+, +:octal_ints+, :octal_quads+, +:decimal+,
|
|
194
|
+
# +:decimal_bytes+, +:decimal_shorts+, +:decimal_ints+,
|
|
195
|
+
# +:decimal_quads+, +:hex+ +:hex_bytes+, +:hex_shorts+, +:hex_ints+ or
|
|
196
|
+
# +:hex_quads+.
|
|
197
|
+
#
|
|
198
|
+
# @option options [Integer] :segment (16)
|
|
199
|
+
# The length in bytes of each segment in the hexdump.
|
|
155
200
|
#
|
|
156
|
-
#
|
|
157
|
-
# <tt>:format</tt>:: The expected format of the hexdump. Must be either
|
|
158
|
-
# <tt>:od</tt> or <tt>:hexdump</tt>.
|
|
159
|
-
# <tt>:encoding</tt>:: Denotes the encoding used for the bytes within the
|
|
160
|
-
# hexdump. Must be one of the following:
|
|
161
|
-
# <tt>:binary</tt>:: Binary encoded bytes.
|
|
162
|
-
# <tt>:octal</tt>:: Octal encoding.
|
|
163
|
-
# <tt>:octal_bytes</tt>:: Octal encoded bytes.
|
|
164
|
-
# <tt>:octal_shorts</tt>:: Octal encoded shorts.
|
|
165
|
-
# <tt>:octal_ints</tt>:: Octal encoded integers.
|
|
166
|
-
# <tt>:octal_quads</tt>:: Octal encoded quads.
|
|
167
|
-
# <tt>:decimal</tt>:: Unsigned decimal encoding.
|
|
168
|
-
# <tt>:decimal_bytes</tt>:: Unsigned decimal bytes.
|
|
169
|
-
# <tt>:decimal_shorts</tt>:: Unsigned decimal shorts.
|
|
170
|
-
# <tt>:decimal_ints</tt>:: Unsigned decimal ints.
|
|
171
|
-
# <tt>:decimal_quads</tt>:: Unsigned decimal quads.
|
|
172
|
-
# <tt>:hex</tt>:: Hexadecimal encoding.
|
|
173
|
-
# <tt>:hex_bytes</tt>:: Hexadecimal bytes.
|
|
174
|
-
# <tt>:hex_shorts</tt>:: Hexadecimal shorts.
|
|
175
|
-
# <tt>:hex_ints</tt>:: Hexadecimal ints.
|
|
176
|
-
# <tt>:hex_quads</tt>:: Hexadecimal quads.
|
|
177
|
-
# <tt>:segment</tt>:: The length in bytes of each segment in the hexdump.
|
|
178
|
-
# Defaults to 16, if not specified.
|
|
201
|
+
# @return [String] The raw-data from the hexdump.
|
|
179
202
|
#
|
|
180
203
|
def unhexdump(options={})
|
|
181
204
|
case (format = options[:format])
|
|
@@ -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/formatting/extensions/digest/string'
|
|
@@ -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 'digest/md5'
|
|
@@ -28,35 +25,60 @@ require 'digest/sha2'
|
|
|
28
25
|
class String
|
|
29
26
|
|
|
30
27
|
#
|
|
31
|
-
#
|
|
28
|
+
# @return [String]
|
|
29
|
+
# The MD5 checksum of the String.
|
|
30
|
+
#
|
|
31
|
+
# @example
|
|
32
|
+
# "hello".md5
|
|
33
|
+
# # => "5d41402abc4b2a76b9719d911017c592"
|
|
32
34
|
#
|
|
33
35
|
def md5
|
|
34
36
|
Digest::MD5.hexdigest(self)
|
|
35
37
|
end
|
|
36
38
|
|
|
37
39
|
#
|
|
38
|
-
#
|
|
40
|
+
# @return [String]
|
|
41
|
+
# The SHA1 checksum of the String.
|
|
42
|
+
#
|
|
43
|
+
# @example
|
|
44
|
+
# "hello".sha1
|
|
45
|
+
# # => "aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d"
|
|
39
46
|
#
|
|
40
47
|
def sha1
|
|
41
48
|
Digest::SHA1.hexdigest(self)
|
|
42
49
|
end
|
|
43
50
|
|
|
44
51
|
#
|
|
45
|
-
#
|
|
52
|
+
# @return [String]
|
|
53
|
+
# The SHA2 checksum of the String.
|
|
54
|
+
#
|
|
55
|
+
# @example
|
|
56
|
+
# "hello".sha2
|
|
57
|
+
# # => "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"
|
|
46
58
|
#
|
|
47
59
|
def sha2
|
|
48
60
|
Digest::SHA2.hexdigest(self)
|
|
49
61
|
end
|
|
50
62
|
|
|
51
63
|
#
|
|
52
|
-
#
|
|
64
|
+
# @return [String]
|
|
65
|
+
# The SHA256 checksum of the String.
|
|
66
|
+
#
|
|
67
|
+
# @example
|
|
68
|
+
# "hello".sha256
|
|
69
|
+
# # => "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"
|
|
53
70
|
#
|
|
54
71
|
def sha256
|
|
55
72
|
Digest::SHA256.hexdigest(self)
|
|
56
73
|
end
|
|
57
74
|
|
|
58
75
|
#
|
|
59
|
-
#
|
|
76
|
+
# @return [String]
|
|
77
|
+
# The SHA512 checksum of the String.
|
|
78
|
+
#
|
|
79
|
+
# @example
|
|
80
|
+
# "hello".sha512
|
|
81
|
+
# # => "9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043"
|
|
60
82
|
#
|
|
61
83
|
def sha512
|
|
62
84
|
Digest::SHA512.hexdigest(self)
|
|
@@ -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/formatting/extensions/http/string'
|
|
@@ -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/formatting/extensions/text'
|
|
@@ -29,8 +26,10 @@ require 'cgi'
|
|
|
29
26
|
class String
|
|
30
27
|
|
|
31
28
|
#
|
|
32
|
-
#
|
|
29
|
+
# @return [String]
|
|
30
|
+
# The URI encoded form of the String.
|
|
33
31
|
#
|
|
32
|
+
# @example
|
|
34
33
|
# "art is graffiti".uri_encode
|
|
35
34
|
# # => "art%20is%20graffiti"
|
|
36
35
|
#
|
|
@@ -39,8 +38,10 @@ class String
|
|
|
39
38
|
end
|
|
40
39
|
|
|
41
40
|
#
|
|
42
|
-
#
|
|
41
|
+
# @return [String]
|
|
42
|
+
# The decoded URI form of the String.
|
|
43
43
|
#
|
|
44
|
+
# @example
|
|
44
45
|
# "genre%3f".uri_decode
|
|
45
46
|
# # => "genre?"
|
|
46
47
|
#
|
|
@@ -49,8 +50,10 @@ class String
|
|
|
49
50
|
end
|
|
50
51
|
|
|
51
52
|
#
|
|
52
|
-
#
|
|
53
|
+
# @return [String]
|
|
54
|
+
# The URI escaped form of the String.
|
|
53
55
|
#
|
|
56
|
+
# @example
|
|
54
57
|
# "x > y".uri_escape
|
|
55
58
|
# # => "x+%3E+y"
|
|
56
59
|
#
|
|
@@ -59,8 +62,10 @@ class String
|
|
|
59
62
|
end
|
|
60
63
|
|
|
61
64
|
#
|
|
62
|
-
#
|
|
65
|
+
# @return [String]
|
|
66
|
+
# The unescaped URI form of the String.
|
|
63
67
|
#
|
|
68
|
+
# @example
|
|
64
69
|
# "sweet+%26+sour".uri_unescape
|
|
65
70
|
# # => "sweet & sour"
|
|
66
71
|
#
|
|
@@ -69,8 +74,10 @@ class String
|
|
|
69
74
|
end
|
|
70
75
|
|
|
71
76
|
#
|
|
72
|
-
#
|
|
77
|
+
# @return [String]
|
|
78
|
+
# The HTTP hexidecimal encoded form of the String.
|
|
73
79
|
#
|
|
80
|
+
# @example
|
|
74
81
|
# "hello".format_http
|
|
75
82
|
# # => "hello"
|
|
76
83
|
#
|
|
@@ -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/formatting/extensions/text/string'
|
|
@@ -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,22 @@
|
|
|
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
|
class Array
|
|
25
22
|
|
|
26
23
|
#
|
|
27
|
-
#
|
|
24
|
+
# Decodes the bytes contained within the Array. The Array may contain
|
|
25
|
+
# both Integer and String objects.
|
|
28
26
|
#
|
|
27
|
+
# @return [Array]
|
|
28
|
+
# The bytes contained in the Array.
|
|
29
|
+
#
|
|
30
|
+
# @example
|
|
29
31
|
# [0x41, 0x41, 0x20].bytes
|
|
30
32
|
# # => [0x41, 0x41, 0x20]
|
|
31
33
|
#
|
|
34
|
+
# @example
|
|
32
35
|
# ['A', 'BB', 0x90].bytes
|
|
33
36
|
# # => [0x41, 0x42, 0x42, 0x90]
|
|
34
37
|
#
|
|
@@ -45,8 +48,13 @@ class Array
|
|
|
45
48
|
end
|
|
46
49
|
|
|
47
50
|
#
|
|
48
|
-
#
|
|
51
|
+
# Decodes the characters contained within the Array. The Array may contain
|
|
52
|
+
# either Integer or String objects.
|
|
53
|
+
#
|
|
54
|
+
# @return [Array]
|
|
55
|
+
# The characters generated from the array.
|
|
49
56
|
#
|
|
57
|
+
# @example
|
|
50
58
|
# [0x41, 0x41, 0x20].chars
|
|
51
59
|
# # => ["A", "A", " "]
|
|
52
60
|
#
|
|
@@ -55,8 +63,10 @@ class Array
|
|
|
55
63
|
end
|
|
56
64
|
|
|
57
65
|
#
|
|
58
|
-
#
|
|
66
|
+
# @return [String]
|
|
67
|
+
# The String created from the characters within the Array.
|
|
59
68
|
#
|
|
69
|
+
# @example
|
|
60
70
|
# [0x41, 0x41, 0x20].char_string
|
|
61
71
|
# # => "AA "
|
|
62
72
|
#
|
|
@@ -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 'chars'
|
|
@@ -26,23 +23,38 @@ require 'chars'
|
|
|
26
23
|
class String
|
|
27
24
|
|
|
28
25
|
#
|
|
29
|
-
# Creates a new String by
|
|
30
|
-
# using the given _options_.
|
|
26
|
+
# Creates a new String by formatting each byte.
|
|
31
27
|
#
|
|
32
|
-
#
|
|
33
|
-
#
|
|
34
|
-
#
|
|
35
|
-
#
|
|
28
|
+
# @param [Hash] options
|
|
29
|
+
# Additional options.
|
|
30
|
+
#
|
|
31
|
+
# @option options [Array, Range] :included (0x00..0xff)
|
|
32
|
+
# The bytes to format.
|
|
33
|
+
#
|
|
34
|
+
# @option options [Array, Range] :excluded
|
|
35
|
+
# The bytes not to format.
|
|
36
|
+
#
|
|
37
|
+
# @yield [byte]
|
|
38
|
+
# The block which will return the formatted version of each byte
|
|
39
|
+
# within the String.
|
|
40
|
+
#
|
|
41
|
+
# @yieldparam [Integer] byte
|
|
42
|
+
# The byte to format.
|
|
43
|
+
#
|
|
44
|
+
# @return [String]
|
|
45
|
+
# The formatted version of the String.
|
|
36
46
|
#
|
|
37
47
|
def format_bytes(options={},&block)
|
|
38
|
-
included = (options[:included] ||
|
|
48
|
+
included = (options[:included] || (0x00..0xff))
|
|
39
49
|
excluded = (options[:excluded] || [])
|
|
40
50
|
|
|
41
|
-
targeted = included - excluded
|
|
42
51
|
formatted = ''
|
|
43
52
|
|
|
44
53
|
self.each_byte do |b|
|
|
45
|
-
|
|
54
|
+
c = b.chr
|
|
55
|
+
|
|
56
|
+
if ((included.include?(b) || included.include?(c)) \
|
|
57
|
+
&& !(excluded.include?(b) || excluded.include?(c)))
|
|
46
58
|
formatted << block.call(b)
|
|
47
59
|
else
|
|
48
60
|
formatted << b
|
|
@@ -53,13 +65,26 @@ class String
|
|
|
53
65
|
end
|
|
54
66
|
|
|
55
67
|
#
|
|
56
|
-
# Creates a new String by
|
|
57
|
-
#
|
|
68
|
+
# Creates a new String by formatting each character.
|
|
69
|
+
#
|
|
70
|
+
# @param [Hash] options
|
|
71
|
+
# Additional options.
|
|
72
|
+
#
|
|
73
|
+
# @option options [Array, Range] :included (0x00..0xff)
|
|
74
|
+
# The bytes to format.
|
|
75
|
+
#
|
|
76
|
+
# @option options [Array, Range] :excluded
|
|
77
|
+
# The bytes not to format.
|
|
58
78
|
#
|
|
59
|
-
#
|
|
60
|
-
#
|
|
61
|
-
#
|
|
62
|
-
#
|
|
79
|
+
# @yield [char]
|
|
80
|
+
# The block which will return the formatted version of each character
|
|
81
|
+
# within the String.
|
|
82
|
+
#
|
|
83
|
+
# @yieldparam [String] char
|
|
84
|
+
# The character to format.
|
|
85
|
+
#
|
|
86
|
+
# @return [String]
|
|
87
|
+
# The formatted version of the String.
|
|
63
88
|
#
|
|
64
89
|
def format_chars(options={},&block)
|
|
65
90
|
format_bytes(options) do |b|
|
|
@@ -68,13 +93,22 @@ class String
|
|
|
68
93
|
end
|
|
69
94
|
|
|
70
95
|
#
|
|
71
|
-
# Creates a new String by randomizing the case of each character
|
|
72
|
-
#
|
|
96
|
+
# Creates a new String by randomizing the case of each character in the
|
|
97
|
+
# String.
|
|
98
|
+
#
|
|
99
|
+
# @param [Hash] options
|
|
100
|
+
# Additional options.
|
|
101
|
+
#
|
|
102
|
+
# @option options [Array, Range] :included (0x00..0xff)
|
|
103
|
+
# The bytes to format.
|
|
73
104
|
#
|
|
74
|
-
#
|
|
75
|
-
#
|
|
76
|
-
# case changed; defaults to 0.5.
|
|
105
|
+
# @option options [Array, Range] :excluded
|
|
106
|
+
# The bytes not to format.
|
|
77
107
|
#
|
|
108
|
+
# @option options [Float] :probability (0.5)
|
|
109
|
+
# The probability that a character will have it's case changed.
|
|
110
|
+
#
|
|
111
|
+
# @example
|
|
78
112
|
# "get out your checkbook".random_case
|
|
79
113
|
# # => "gEt Out YOur CHEckbook"
|
|
80
114
|
#
|
|
@@ -91,10 +125,19 @@ class String
|
|
|
91
125
|
end
|
|
92
126
|
|
|
93
127
|
#
|
|
94
|
-
#
|
|
95
|
-
#
|
|
96
|
-
#
|
|
128
|
+
# Creates a new String by padding the String with repeating text,
|
|
129
|
+
# out to a specified length.
|
|
130
|
+
#
|
|
131
|
+
# @param [String] padding
|
|
132
|
+
# The text to pad the new String with.
|
|
133
|
+
#
|
|
134
|
+
# @param [String] max_length
|
|
135
|
+
# The maximum length to pad the new String out to.
|
|
136
|
+
#
|
|
137
|
+
# @return [String]
|
|
138
|
+
# The padded version of the String.
|
|
97
139
|
#
|
|
140
|
+
# @example
|
|
98
141
|
# "hello".pad('A',50)
|
|
99
142
|
# # => "helloAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
|
100
143
|
#
|