ronin 0.2.1 → 0.2.2
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/History.txt +25 -0
- data/Manifest.txt +36 -11
- data/README.txt +6 -8
- data/Rakefile +2 -1
- data/lib/ronin/config.rb +0 -3
- data/lib/ronin/environment.rb +1 -1
- data/lib/ronin/extensions/string.rb +0 -11
- data/lib/ronin/formatting/extensions/binary/integer.rb +24 -12
- data/lib/ronin/formatting/extensions/binary/string.rb +166 -0
- data/lib/ronin/formatting/extensions/text/string.rb +4 -4
- data/lib/ronin/license.rb +42 -12
- data/lib/ronin/os.rb +3 -2
- data/lib/ronin/platform/extension.rb +11 -141
- data/lib/ronin/platform/extension_cache.rb +11 -0
- data/lib/ronin/platform/overlay.rb +56 -25
- data/lib/ronin/platform/overlay_cache.rb +1 -1
- data/lib/ronin/platform/platform.rb +14 -3
- data/lib/ronin/platform/ronin.rb +20 -1
- data/lib/ronin/platform/tasks/spec.rb +9 -0
- data/lib/ronin/{chars.rb → static.rb} +2 -2
- data/lib/ronin/static/finders.rb +144 -0
- data/lib/ronin/static/static.rb +53 -0
- data/lib/ronin/ui/command_line/commands/add.rb +21 -5
- data/lib/ronin/ui/command_line/commands/install.rb +19 -3
- data/lib/ronin/ui/command_line/commands/rm.rb +1 -1
- data/lib/ronin/ui/command_line/commands/uninstall.rb +1 -1
- data/lib/ronin/ui/command_line/commands/update.rb +9 -2
- data/lib/ronin/version.rb +1 -1
- data/spec/extensions/string_spec.rb +0 -10
- data/spec/formatting/binary/helpers/hexdumps.rb +14 -0
- data/spec/formatting/binary/helpers/hexdumps/hexdump_decimal_shorts.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/hexdump_hex_bytes.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/hexdump_hex_shorts.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/hexdump_octal_bytes.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/hexdump_octal_shorts.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/hexdump_repeated.txt +6 -0
- data/spec/formatting/binary/helpers/hexdumps/od_decimal_bytes.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_decimal_ints.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_decimal_quads.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_decimal_shorts.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_hex_bytes.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_hex_ints.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_hex_quads.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_hex_shorts.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_octal_bytes.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_octal_ints.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_octal_quads.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_octal_shorts.txt +17 -0
- data/spec/formatting/binary/helpers/hexdumps/od_repeated.txt +6 -0
- data/spec/formatting/binary/helpers/hexdumps/repeated.bin +1 -0
- data/spec/formatting/binary/integer_spec.rb +61 -1
- data/spec/formatting/binary/string_spec.rb +166 -9
- data/spec/platform/extension_cache_spec.rb +8 -0
- data/spec/platform/helpers/overlays.yaml.erb +3 -0
- data/spec/platform/helpers/overlays/hello/ronin.xml +1 -1
- data/spec/platform/helpers/overlays/random/random/extension.rb +7 -0
- data/spec/platform/helpers/overlays/random/ronin.xml +26 -0
- data/spec/platform/helpers/overlays/test1/ronin.xml +2 -2
- data/spec/platform/helpers/overlays/test2/ronin.xml +2 -2
- data/spec/platform/overlay_cache_spec.rb +5 -3
- data/spec/platform/overlay_spec.rb +35 -0
- data/spec/platform/ronin_spec.rb +13 -1
- data/spec/static/finders_spec.rb +55 -0
- data/spec/static/helpers/static.rb +11 -0
- data/spec/static/helpers/static1/dir/two.txt +0 -0
- data/spec/static/helpers/static1/one.txt +0 -0
- data/spec/static/helpers/static2/dir/two.txt +0 -0
- data/spec/static/helpers/static_class.rb +7 -0
- data/spec/static/static_spec.rb +24 -0
- data/static/{overlay.xsl → ronin/platform/overlay.xsl} +0 -0
- metadata +50 -17
- data/bin/ronin-ext +0 -12
- data/bin/ronin-overlay +0 -12
- data/lib/ronin/chars/char_set.rb +0 -198
- data/lib/ronin/chars/chars.rb +0 -190
- data/lib/ronin/ui/command_line/commands/ext.rb +0 -70
- data/lib/ronin/ui/command_line/commands/overlay.rb +0 -189
- data/spec/chars/char_set_spec.rb +0 -175
- data/spec/chars/chars_spec.rb +0 -107
- data/static/extension.rb +0 -9
@@ -96,10 +96,21 @@ module Ronin
|
|
96
96
|
# <tt>:media</tt>:: The media of the overlay.
|
97
97
|
#
|
98
98
|
def Platform.install(options={},&block)
|
99
|
-
|
99
|
+
unless options[:uri]
|
100
|
+
raise(ArgumentError,":uri must be passed to Platform.install",caller)
|
101
|
+
end
|
100
102
|
|
101
|
-
|
102
|
-
|
103
|
+
uri = options[:uri].to_s
|
104
|
+
host = (URI(uri).host || 'localhost')
|
105
|
+
host_dir = File.join(OverlayCache::CACHE_DIR,host)
|
106
|
+
options = options.merge(:into => host_dir)
|
107
|
+
|
108
|
+
Repertoire.checkout(options) do |repo|
|
109
|
+
return Platform.add(
|
110
|
+
:path => repo.path,
|
111
|
+
:media => repo.media_name,
|
112
|
+
:uri => uri
|
113
|
+
)
|
103
114
|
end
|
104
115
|
end
|
105
116
|
|
data/lib/ronin/platform/ronin.rb
CHANGED
@@ -23,11 +23,30 @@
|
|
23
23
|
|
24
24
|
require 'ronin/platform/platform'
|
25
25
|
|
26
|
+
require 'extlib'
|
27
|
+
|
26
28
|
module Ronin
|
27
29
|
protected
|
28
30
|
|
29
31
|
#
|
30
|
-
# Provides transparent access to Platform.extension.
|
32
|
+
# Provides transparent access to Platform.extension via constants.
|
33
|
+
#
|
34
|
+
# Ronin::Shellcode
|
35
|
+
# # => #<Ronin::Platform::Extension: ...>
|
36
|
+
#
|
37
|
+
def Ronin.const_missing(name)
|
38
|
+
name = name.to_s
|
39
|
+
ext_name = name.snake_case
|
40
|
+
|
41
|
+
if Platform.has_extension?(ext_name)
|
42
|
+
return Platform.extension(ext_name)
|
43
|
+
end
|
44
|
+
|
45
|
+
return super(name)
|
46
|
+
end
|
47
|
+
|
48
|
+
#
|
49
|
+
# Provides transparent access to Platform.extension via methods.
|
31
50
|
#
|
32
51
|
# Ronin.shellcode
|
33
52
|
# # => #<Ronin::Platform::Extension: ...>
|
@@ -0,0 +1,144 @@
|
|
1
|
+
#
|
2
|
+
#--
|
3
|
+
# Ronin - A Ruby platform designed for information security and data
|
4
|
+
# exploration tasks.
|
5
|
+
#
|
6
|
+
# Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
|
7
|
+
#
|
8
|
+
# This program is free software; you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation; either version 2 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This program is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with this program; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
21
|
+
#++
|
22
|
+
#
|
23
|
+
|
24
|
+
require 'ronin/static/static'
|
25
|
+
|
26
|
+
module Ronin
|
27
|
+
module Static
|
28
|
+
module Finders
|
29
|
+
#
|
30
|
+
# Passes all possible static paths for the specified _path_,
|
31
|
+
# within the static directories, to the specified _block_.
|
32
|
+
#
|
33
|
+
def static_paths(path,&block)
|
34
|
+
Static.static_dirs.each do |dir|
|
35
|
+
block.call(File.join(dir,path))
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
#
|
40
|
+
# Returns the first matching static path for the specified _path_.
|
41
|
+
# If no matching static path can be found, +nil+ will be returned.
|
42
|
+
#
|
43
|
+
def static_find(path)
|
44
|
+
static_paths(path) do |full_path|
|
45
|
+
return full_path if File.exists?(full_path)
|
46
|
+
end
|
47
|
+
|
48
|
+
return nil
|
49
|
+
end
|
50
|
+
|
51
|
+
#
|
52
|
+
# Returns the first matching static file for the specified _path_.
|
53
|
+
# If no matching static file can be found, +nil+ will be returned.
|
54
|
+
#
|
55
|
+
def find_static_file(path)
|
56
|
+
static_paths(path) do |full_path|
|
57
|
+
return full_path if File.file?(full_path)
|
58
|
+
end
|
59
|
+
|
60
|
+
return nil
|
61
|
+
end
|
62
|
+
|
63
|
+
#
|
64
|
+
# Returns the first matching static directory for the specified
|
65
|
+
# _path_. If no matching static directory can be found, +nil+ will be
|
66
|
+
# returned.
|
67
|
+
#
|
68
|
+
def find_static_dir(path)
|
69
|
+
static_paths(path) do |full_path|
|
70
|
+
return full_path if File.directory?(full_path)
|
71
|
+
end
|
72
|
+
|
73
|
+
return nil
|
74
|
+
end
|
75
|
+
|
76
|
+
#
|
77
|
+
# Returns the first set of matching static paths for the specified
|
78
|
+
# _pattern_. If no matching static paths can be found, an empty
|
79
|
+
# Array will be returned.
|
80
|
+
#
|
81
|
+
def static_glob(pattern)
|
82
|
+
static_paths(pattern) do |full_path|
|
83
|
+
paths = Dir[full_path]
|
84
|
+
|
85
|
+
return paths unless paths.empty?
|
86
|
+
end
|
87
|
+
|
88
|
+
return []
|
89
|
+
end
|
90
|
+
|
91
|
+
#
|
92
|
+
# Returns all matching static paths for the specified _path_.
|
93
|
+
#
|
94
|
+
def static_find_all(path)
|
95
|
+
paths = []
|
96
|
+
|
97
|
+
static_paths(path) do |full_path|
|
98
|
+
paths << full_path if File.exists?(full_path)
|
99
|
+
end
|
100
|
+
|
101
|
+
return paths
|
102
|
+
end
|
103
|
+
|
104
|
+
#
|
105
|
+
# Returns all matching static files for the specified _path_.
|
106
|
+
#
|
107
|
+
def find_static_files(path)
|
108
|
+
paths = []
|
109
|
+
|
110
|
+
static_paths(path) do |full_path|
|
111
|
+
paths << full_path if File.file?(full_path)
|
112
|
+
end
|
113
|
+
|
114
|
+
return paths
|
115
|
+
end
|
116
|
+
|
117
|
+
#
|
118
|
+
# Returns all matching static directories for the specified _path_.
|
119
|
+
#
|
120
|
+
def find_static_dirs(path)
|
121
|
+
paths = []
|
122
|
+
|
123
|
+
static_paths(path) do |full_path|
|
124
|
+
paths << full_path if File.directory?(full_path)
|
125
|
+
end
|
126
|
+
|
127
|
+
return paths
|
128
|
+
end
|
129
|
+
|
130
|
+
#
|
131
|
+
# Returns all matching static paths for the specified _pattern_.
|
132
|
+
#
|
133
|
+
def static_glob_all(pattern)
|
134
|
+
paths = []
|
135
|
+
|
136
|
+
static_paths(pattern) do |full_path|
|
137
|
+
paths += Dir[full_path]
|
138
|
+
end
|
139
|
+
|
140
|
+
return paths
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
#
|
2
|
+
#--
|
3
|
+
# Ronin - A Ruby platform designed for information security and data
|
4
|
+
# exploration tasks.
|
5
|
+
#
|
6
|
+
# Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
|
7
|
+
#
|
8
|
+
# This program is free software; you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation; either version 2 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This program is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with this program; if not, write to the Free Software
|
20
|
+
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
21
|
+
#++
|
22
|
+
#
|
23
|
+
|
24
|
+
require 'set'
|
25
|
+
|
26
|
+
module Ronin
|
27
|
+
module Static
|
28
|
+
#
|
29
|
+
# The Set of directories which contain static content.
|
30
|
+
#
|
31
|
+
def Static.static_dirs
|
32
|
+
@@ronin_static_dirs ||= Set[]
|
33
|
+
end
|
34
|
+
|
35
|
+
#
|
36
|
+
# Adds the specified _path_ to the Set of static directories.
|
37
|
+
#
|
38
|
+
def Static.directory(path)
|
39
|
+
path = File.expand_path(path)
|
40
|
+
|
41
|
+
unless File.directory?(path)
|
42
|
+
raise("#{path.dump} must be a directory")
|
43
|
+
end
|
44
|
+
|
45
|
+
Static.static_dirs << path
|
46
|
+
return path
|
47
|
+
end
|
48
|
+
|
49
|
+
protected
|
50
|
+
|
51
|
+
Static.directory(File.join(File.dirname(__FILE__),'..','..','..','static'))
|
52
|
+
end
|
53
|
+
end
|
@@ -45,15 +45,31 @@ module Ronin
|
|
45
45
|
end
|
46
46
|
|
47
47
|
opts.on('-m','--media MEDIA','Spedify the media-type of the overlay') do |media|
|
48
|
-
@media = media
|
48
|
+
@media = media.to_sym
|
49
49
|
end
|
50
50
|
|
51
|
-
opts.on('-
|
52
|
-
@
|
51
|
+
opts.on('-L','--local','Similiar to: -m local') do
|
52
|
+
@media = nil
|
53
|
+
end
|
54
|
+
|
55
|
+
opts.on('--rsync','Alias for -m rsync') do
|
56
|
+
@media = :rsync
|
57
|
+
end
|
58
|
+
|
59
|
+
opts.on('--svn','Alias for -m svn') do
|
60
|
+
@media = :svn
|
53
61
|
end
|
54
62
|
|
55
|
-
opts.on('
|
56
|
-
@media = :
|
63
|
+
opts.on('--hg','Alias for -m hg') do
|
64
|
+
@media = :hg
|
65
|
+
end
|
66
|
+
|
67
|
+
opts.on('--git','Alias for -m git') do
|
68
|
+
@media = :git
|
69
|
+
end
|
70
|
+
|
71
|
+
opts.on('-U','--uri URI','Specify the source URI of the overlay') do |uri|
|
72
|
+
@uri = uri
|
57
73
|
end
|
58
74
|
end
|
59
75
|
|
@@ -43,8 +43,24 @@ module Ronin
|
|
43
43
|
@cache = dir
|
44
44
|
end
|
45
45
|
|
46
|
-
opts.on('-m','--media
|
47
|
-
@media = media
|
46
|
+
opts.on('-m','--media MEDIA','Spedify the media-type of the overlay') do |media|
|
47
|
+
@media = media.to_sym
|
48
|
+
end
|
49
|
+
|
50
|
+
opts.on('--rsync','Alias for -m rsync') do
|
51
|
+
@media = :rsync
|
52
|
+
end
|
53
|
+
|
54
|
+
opts.on('--svn','Alias for -m svn') do
|
55
|
+
@media = :svn
|
56
|
+
end
|
57
|
+
|
58
|
+
opts.on('--hg','Alias for -m hg') do
|
59
|
+
@media = :hg
|
60
|
+
end
|
61
|
+
|
62
|
+
opts.on('--git','Alias for -m git') do
|
63
|
+
@media = :git
|
48
64
|
end
|
49
65
|
end
|
50
66
|
|
@@ -57,7 +73,7 @@ module Ronin
|
|
57
73
|
}
|
58
74
|
end
|
59
75
|
|
60
|
-
def arguments(args)
|
76
|
+
def arguments(*args)
|
61
77
|
unless args.length == 1
|
62
78
|
fail('only one overlay URI maybe specified')
|
63
79
|
end
|
@@ -58,10 +58,17 @@ module Ronin
|
|
58
58
|
def arguments(*args)
|
59
59
|
Platform.load_overlays(@cache) if @cache
|
60
60
|
|
61
|
+
update = lambda { |overlay|
|
62
|
+
puts "Updating Overlay #{overlay.name.dump} ..."
|
63
|
+
overlay.update
|
64
|
+
}
|
65
|
+
|
61
66
|
if args.empty?
|
62
|
-
Platform.overlays.each_overlay
|
67
|
+
Platform.overlays.each_overlay(&update)
|
63
68
|
else
|
64
|
-
args.each
|
69
|
+
args.each do |name|
|
70
|
+
update.call(Platform.overlays.update(name))
|
71
|
+
end
|
65
72
|
end
|
66
73
|
end
|
67
74
|
|
data/lib/ronin/version.rb
CHANGED
@@ -3,16 +3,6 @@ require 'ronin/extensions/string'
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe String do
|
6
|
-
describe "to_method_name" do
|
7
|
-
it "should be able to convert proper names to method names" do
|
8
|
-
"Proper Name".to_method_name.should == 'proper_name'
|
9
|
-
end
|
10
|
-
|
11
|
-
it "should be able to convert Class names to method names" do
|
12
|
-
"Namespace::Test".to_method_name.should == 'namespace_test'
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
6
|
describe "common_prefix" do
|
17
7
|
it "should find the common prefix between two Strings" do
|
18
8
|
one = 'What is puzzling you is the nature of my game'
|
@@ -0,0 +1,14 @@
|
|
1
|
+
def load_binary_data(name)
|
2
|
+
path = File.join(File.dirname(__FILE__),'hexdumps',"#{name}.bin")
|
3
|
+
buffer = []
|
4
|
+
|
5
|
+
File.open(path) do |file|
|
6
|
+
file.each_byte { |b| buffer << b }
|
7
|
+
end
|
8
|
+
|
9
|
+
return buffer
|
10
|
+
end
|
11
|
+
|
12
|
+
def load_hexdump(name)
|
13
|
+
File.read(File.join(File.dirname(__FILE__),'hexdumps',"#{name}.txt"))
|
14
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
0000000 00256 00770 01284 01798 02312 02826 03340 03854
|
2
|
+
0000010 04368 04882 05396 05910 06424 06938 07452 07966
|
3
|
+
0000020 08480 08994 09508 10022 10536 11050 11564 12078
|
4
|
+
0000030 12592 13106 13620 14134 14648 15162 15676 16190
|
5
|
+
0000040 16704 17218 17732 18246 18760 19274 19788 20302
|
6
|
+
0000050 20816 21330 21844 22358 22872 23386 23900 24414
|
7
|
+
0000060 24928 25442 25956 26470 26984 27498 28012 28526
|
8
|
+
0000070 29040 29554 30068 30582 31096 31610 32124 32638
|
9
|
+
0000080 33152 33666 34180 34694 35208 35722 36236 36750
|
10
|
+
0000090 37264 37778 38292 38806 39320 39834 40348 40862
|
11
|
+
00000a0 41376 41890 42404 42918 43432 43946 44460 44974
|
12
|
+
00000b0 45488 46002 46516 47030 47544 48058 48572 49086
|
13
|
+
00000c0 49600 50114 50628 51142 51656 52170 52684 53198
|
14
|
+
00000d0 53712 54226 54740 55254 55768 56282 56796 57310
|
15
|
+
00000e0 57824 58338 58852 59366 59880 60394 60908 61422
|
16
|
+
00000f0 61936 62450 62964 63478 63992 64506 65020 65534
|
17
|
+
0000100
|