ronin 0.1.4 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. data/History.txt +50 -0
  2. data/Manifest.txt +31 -19
  3. data/README.txt +27 -19
  4. data/Rakefile +1 -1
  5. data/TODO.txt +1 -7
  6. data/lib/ronin.rb +1 -11
  7. data/lib/ronin/database/database.rb +1 -1
  8. data/lib/ronin/{cache/config.rb → environment.rb} +10 -8
  9. data/lib/ronin/formatting.rb +0 -1
  10. data/lib/ronin/formatting/extensions.rb +0 -1
  11. data/lib/ronin/formatting/extensions/binary/integer.rb +10 -0
  12. data/lib/ronin/formatting/extensions/binary/string.rb +11 -0
  13. data/lib/ronin/formatting/extensions/http/string.rb +1 -1
  14. data/lib/ronin/network/extensions/http/net.rb +8 -0
  15. data/lib/ronin/objectify/objectify.rb +0 -47
  16. data/lib/ronin/os.rb +89 -0
  17. data/lib/ronin/platform.rb +4 -77
  18. data/lib/ronin/{cache → platform}/exceptions.rb +2 -2
  19. data/lib/ronin/{cache → platform}/exceptions/extension_not_found.rb +1 -1
  20. data/lib/ronin/{cache → platform}/exceptions/overlay_cached.rb +1 -1
  21. data/lib/ronin/{cache → platform}/exceptions/overlay_not_found.rb +1 -1
  22. data/lib/ronin/{cache → platform}/extension.rb +68 -177
  23. data/lib/ronin/{cache → platform}/extension_cache.rb +9 -7
  24. data/lib/ronin/{cache → platform}/maintainer.rb +1 -1
  25. data/lib/ronin/platform/object_cache.rb +94 -0
  26. data/lib/ronin/platform/overlay.rb +274 -0
  27. data/lib/ronin/platform/overlay_cache.rb +318 -0
  28. data/lib/ronin/platform/platform.rb +195 -0
  29. data/lib/ronin/{cache → platform}/ronin.rb +7 -6
  30. data/lib/ronin/target.rb +5 -5
  31. data/lib/ronin/ui.rb +4 -1
  32. data/lib/ronin/ui/command_line/command_line.rb +0 -1
  33. data/lib/ronin/ui/command_line/commands/add.rb +21 -6
  34. data/lib/ronin/ui/command_line/commands/default.rb +6 -1
  35. data/lib/ronin/ui/command_line/commands/extension.rb +3 -3
  36. data/lib/ronin/ui/command_line/commands/install.rb +16 -5
  37. data/lib/ronin/ui/command_line/commands/list.rb +31 -8
  38. data/lib/ronin/ui/command_line/commands/overlay.rb +10 -9
  39. data/lib/ronin/ui/command_line/commands/remove.rb +16 -5
  40. data/lib/ronin/ui/command_line/commands/uninstall.rb +16 -5
  41. data/lib/ronin/ui/command_line/commands/update.rb +16 -3
  42. data/lib/ronin/ui/console.rb +81 -77
  43. data/lib/ronin/ui/diagnostics.rb +73 -0
  44. data/lib/ronin/version.rb +1 -1
  45. data/spec/chars/chars_spec.rb +1 -3
  46. data/spec/formatting/binary/integer_spec.rb +48 -36
  47. data/spec/formatting/binary/string_spec.rb +66 -4
  48. data/spec/os_spec.rb +24 -0
  49. data/spec/platform/extension_cache_spec.rb +42 -0
  50. data/spec/platform/extension_spec.rb +62 -0
  51. data/spec/platform/helpers/overlays.rb +18 -0
  52. data/spec/platform/helpers/overlays.yaml.erb +10 -0
  53. data/spec/platform/helpers/overlays/hello/hello/extension.rb +7 -0
  54. data/spec/platform/helpers/overlays/hello/ronin.xml +26 -0
  55. data/spec/platform/helpers/overlays/test1/ronin.xml +26 -0
  56. data/spec/platform/helpers/overlays/test1/test/extension.rb +7 -0
  57. data/spec/platform/helpers/overlays/test2/ronin.xml +26 -0
  58. data/spec/platform/helpers/overlays/test2/test/extension.rb +7 -0
  59. data/spec/platform/overlay_cache_spec.rb +63 -0
  60. data/spec/platform/platform_spec.rb +14 -0
  61. data/spec/platform/ronin_spec.rb +22 -0
  62. data/spec/target_spec.rb +1 -1
  63. data/spec/ui/diagnostics_spec.rb +17 -0
  64. metadata +34 -22
  65. data/lib/ronin/cache.rb +0 -27
  66. data/lib/ronin/cache/cache.rb +0 -78
  67. data/lib/ronin/cache/overlay.rb +0 -470
  68. data/lib/ronin/cache/overlay_cache.rb +0 -216
  69. data/lib/ronin/formatting/extensions/html.rb +0 -24
  70. data/lib/ronin/formatting/extensions/html/string.rb +0 -75
  71. data/lib/ronin/formatting/html.rb +0 -24
  72. data/spec/formatting/html_spec.rb +0 -46
  73. data/spec/platform_spec.rb +0 -24
data/lib/ronin/version.rb CHANGED
@@ -23,5 +23,5 @@
23
23
 
24
24
  module Ronin
25
25
  # Ronin version
26
- VERSION = '0.1.4'
26
+ VERSION = '0.2.0'
27
27
  end
@@ -66,8 +66,6 @@ describe Chars do
66
66
  end
67
67
 
68
68
  it "should provide a symbols CharSet" do
69
- pending "need to fix the testing regex" do
70
- (@symbols_string =~ /[\@\#\$\%\^\&\*\_\+\=\|\\\<\>\/]{10}/).should_not be_nil
71
- end
69
+ (@symbols_string =~ /[\@\#\$\%\^\&\*\_\+\=\|\\\<\>\/]/).should_not be_nil
72
70
  end
73
71
  end
@@ -3,53 +3,65 @@ require 'ronin/formatting/binary'
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Integer do
6
- before(:all) do
7
- @integer = 0x1337
8
-
9
- @i386_packed_int = "7\023\000\000"
10
- @i386_packed_short = "7\023"
11
- @i386_packed_long = "7\023\000\000"
12
- @i386_packed_quad = "7\023\000\000\000\000\000\000"
13
-
14
- @ppc_packed_int = "\000\000\0237"
15
- @ppc_packed_short = "\0237"
16
- @ppc_packed_long = "\000\000\0237"
17
- @ppc_packed_quad = "\000\000\000\000\000\000\0237"
18
- end
19
-
20
6
  it "should provide Integer#pack" do
21
- @integer.respond_to?('pack').should == true
7
+ Integer.instance_method('pack').should_not be_nil
22
8
  end
23
9
 
24
- it "Integer#pack should pack itself for a little-endian architecture" do
25
- @integer.pack(Arch.i386).should == @i386_packed_int
10
+ it "should provide Integer#hex_escape" do
11
+ Integer.instance_method('hex_escape').should_not be_nil
26
12
  end
27
13
 
28
- it "Integer#pack should pack itself as a short for a little-endian architecture" do
29
- @integer.pack(Arch.i386,2).should == @i386_packed_short
30
- end
14
+ describe "pack" do
15
+ before(:all) do
16
+ @integer = 0x1337
31
17
 
32
- it "Integer#pack should pack itself as a long for a little-endian architecture" do
33
- @integer.pack(Arch.i386,4).should == @i386_packed_long
34
- end
18
+ @i386_packed_int = "7\023\000\000"
19
+ @i386_packed_short = "7\023"
20
+ @i386_packed_long = "7\023\000\000"
21
+ @i386_packed_quad = "7\023\000\000\000\000\000\000"
35
22
 
36
- it "Integer#pack should pack itself as a quad for a little-endian architecture" do
37
- @integer.pack(Arch.i386,8).should == @i386_packed_quad
38
- end
23
+ @ppc_packed_int = "\000\000\0237"
24
+ @ppc_packed_short = "\0237"
25
+ @ppc_packed_long = "\000\000\0237"
26
+ @ppc_packed_quad = "\000\000\000\000\000\000\0237"
27
+ end
39
28
 
40
- it "Integer#pack should pack itself for a big-endian architecture" do
41
- @integer.pack(Arch.ppc).should == @ppc_packed_int
42
- end
29
+ it "should pack itself for a little-endian architecture" do
30
+ @integer.pack(Arch.i386).should == @i386_packed_int
31
+ end
43
32
 
44
- it "Integer#pack should pack itself as a short for a big-endian architecture" do
45
- @integer.pack(Arch.ppc,2).should == @ppc_packed_short
46
- end
33
+ it "should pack itself as a short for a little-endian architecture" do
34
+ @integer.pack(Arch.i386,2).should == @i386_packed_short
35
+ end
36
+
37
+ it "Integer#pack should pack itself as a long for a little-endian architecture" do
38
+ @integer.pack(Arch.i386,4).should == @i386_packed_long
39
+ end
40
+
41
+ it "should pack itself as a quad for a little-endian architecture" do
42
+ @integer.pack(Arch.i386,8).should == @i386_packed_quad
43
+ end
44
+
45
+ it "should pack itself for a big-endian architecture" do
46
+ @integer.pack(Arch.ppc).should == @ppc_packed_int
47
+ end
48
+
49
+ it "should pack itself as a short for a big-endian architecture" do
50
+ @integer.pack(Arch.ppc,2).should == @ppc_packed_short
51
+ end
52
+
53
+ it "should pack itself as a long for a big-endian architecture" do
54
+ @integer.pack(Arch.ppc,4).should == @ppc_packed_long
55
+ end
47
56
 
48
- it "Integer#pack should pack itself as a long for a big-endian architecture" do
49
- @integer.pack(Arch.ppc,4).should == @ppc_packed_long
57
+ it "should pack itself as a quad for a big-endian architecture" do
58
+ @integer.pack(Arch.ppc,8).should == @ppc_packed_quad
59
+ end
50
60
  end
51
61
 
52
- it "Integer#pack should pack itself as a quad for a big-endian architecture" do
53
- @integer.pack(Arch.ppc,8).should == @ppc_packed_quad
62
+ describe "hex_escape" do
63
+ it "should hex escape an Integer" do
64
+ 42.hex_escape.should == "\\x2a"
65
+ end
54
66
  end
55
67
  end
@@ -3,12 +3,74 @@ require 'ronin/formatting/binary'
3
3
  require 'spec_helper'
4
4
 
5
5
  describe String do
6
- before(:all) do
7
- @packed_integer = ""
6
+ it "should provide String#depack" do
7
+ String.instance_method('depack').should_not be_nil
8
8
  end
9
9
 
10
- it "should provide String#depack" do
11
- @packed_integer.respond_to?('depack').should == true
10
+ it "should provide String#hex_escape" do
11
+ String.instance_method('hex_escape').should_not be_nil
12
+ end
13
+
14
+ it "should provide String#xor" do
15
+ String.instance_method('xor').should_not be_nil
16
+ end
17
+
18
+ describe "pack" do
19
+ before(:all) do
20
+ @integer = 0x1337
21
+
22
+ @i386_packed_int = "7\023\000\000"
23
+ @i386_packed_short = "7\023"
24
+ @i386_packed_long = "7\023\000\000"
25
+ @i386_packed_quad = "7\023\000\000\000\000\000\000"
26
+
27
+ @ppc_packed_int = "\000\000\0237"
28
+ @ppc_packed_short = "\0237"
29
+ @ppc_packed_long = "\000\000\0237"
30
+ @ppc_packed_quad = "\000\000\000\000\000\000\0237"
31
+ end
32
+
33
+ it "should pack itself for a little-endian architecture" do
34
+ @i386_packed_int.depack(Arch.i386).should == @integer
35
+ end
36
+
37
+ it "should pack itself as a short for a little-endian architecture" do
38
+ @i386_packed_short.depack(Arch.i386,2).should == @integer
39
+ end
40
+
41
+ it "Integer#pack should pack itself as a long for a little-endian architecture" do
42
+ @i386_packed_long.depack(Arch.i386,4).should == @integer
43
+ end
44
+
45
+ it "should pack itself as a quad for a little-endian architecture" do
46
+ @i386_packed_quad.depack(Arch.i386,8).should == @integer
47
+ end
48
+
49
+ it "should pack itself for a big-endian architecture" do
50
+ @ppc_packed_int.depack(Arch.ppc).should == @integer
51
+ end
52
+
53
+ it "should pack itself as a short for a big-endian architecture" do
54
+ @ppc_packed_short.depack(Arch.ppc,2).should == @integer
55
+ end
56
+
57
+ it "should pack itself as a long for a big-endian architecture" do
58
+ @ppc_packed_long.depack(Arch.ppc,4).should == @integer
59
+ end
60
+
61
+ it "should pack itself as a quad for a big-endian architecture" do
62
+ @ppc_packed_quad.depack(Arch.ppc,8).should == @integer
63
+ end
64
+ end
65
+
66
+ describe "hex_escape" do
67
+ before(:all) do
68
+ @binary_string = "hello\x4e"
69
+ end
70
+
71
+ it "should hex escape a String" do
72
+ @binary_string.hex_escape.should == "\\x68\\x65\\x6c\\x6c\\x6f\\x4e"
73
+ end
12
74
  end
13
75
 
14
76
  describe "xor" do
data/spec/os_spec.rb ADDED
@@ -0,0 +1,24 @@
1
+ require 'ronin/os'
2
+
3
+ require 'helpers/database'
4
+
5
+ describe OS do
6
+ it "should require os and version attributes" do
7
+ @os = OS.new
8
+ @os.should_not be_valid
9
+
10
+ @os.name = 'test'
11
+ @os.should_not be_valid
12
+
13
+ @os.version = '0.0.1'
14
+ @os.should be_valid
15
+ end
16
+
17
+ it "should provide methods for built-in OSes" do
18
+ OS.linux.should_not be_nil
19
+ end
20
+
21
+ it "should provide methods for creating OSes with versions" do
22
+ OS.linux_version('2.6.11').should be_valid
23
+ end
24
+ end
@@ -0,0 +1,42 @@
1
+ require 'ronin/platform/extension_cache'
2
+
3
+ require 'platform/helpers/overlays'
4
+ require 'spec_helper'
5
+
6
+ describe Platform::ExtensionCache do
7
+ before(:all) do
8
+ Platform.load_overlays(overlay_cache_path)
9
+
10
+ @cache = Platform::ExtensionCache.new
11
+ end
12
+
13
+ it "should be able to load an extension from the overlays" do
14
+ ext = @cache.load_extension('test')
15
+
16
+ ext.should_not be_nil
17
+ ext.name.should == 'test'
18
+ end
19
+
20
+ it "should provide transparent caching of extensions" do
21
+ ext = @cache['test']
22
+ ext.should_not be_nil
23
+ ext.name.should == 'test'
24
+
25
+ @cache['test'].should == ext
26
+ end
27
+
28
+ it "should load together the extension from all overlays" do
29
+ ext = @cache.load_extension('test')
30
+
31
+ ext.should_not be_nil
32
+ ext.test1.should == 'test one'
33
+ ext.test2.should == 'test two'
34
+ end
35
+
36
+ it "should have loaded extensions with multiple paths" do
37
+ paths = @cache.load_extension('test').paths
38
+
39
+ paths.length.should == 2
40
+ paths.select { |path| path =~ /test$/ }.should == paths
41
+ end
42
+ end
@@ -0,0 +1,62 @@
1
+ require 'ronin/platform/extension'
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Platform::Extension do
6
+ before(:each) do
7
+ @ext = Platform::Extension.new('test') do
8
+ setup do
9
+ @var = :setup
10
+ end
11
+
12
+ teardown do
13
+ @var = :toredown
14
+ end
15
+
16
+ def test_method
17
+ :method
18
+ end
19
+
20
+ def run_method
21
+ @var = :running
22
+ end
23
+ end
24
+ end
25
+
26
+ it "should allow for custom methods" do
27
+ @ext.has_method?(:test_method).should == true
28
+ @ext.test_method.should == :method
29
+ end
30
+
31
+ it "should have a setup state" do
32
+ @ext.setup!
33
+ @ext.should be_setup
34
+ end
35
+
36
+ it "should have setup blocks" do
37
+ @ext.setup!
38
+ @ext.instance_eval { @var }.should == :setup
39
+ end
40
+
41
+ it "should have a toredown state" do
42
+ @ext.teardown!
43
+ @ext.should be_toredown
44
+ end
45
+
46
+ it "should have teardown blocks" do
47
+ @ext.setup!
48
+ @ext.teardown!
49
+ @ext.instance_eval { @var }.should == :toredown
50
+ end
51
+
52
+ it "should not be torendown before it is setup" do
53
+ @ext.teardown!
54
+ @ext.instance_eval { @var }.should be_nil
55
+ end
56
+
57
+ it "should be able to be ran" do
58
+ @ext.run do |ext|
59
+ ext.run_method.should == :running
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,18 @@
1
+ require 'tempfile'
2
+ require 'erb'
3
+
4
+ OVERLAY_CACHE = File.expand_path(File.join(File.dirname(__FILE__),'overlays'))
5
+
6
+ def overlay_cache_path(&block)
7
+ file = Tempfile.new('overlays.yaml')
8
+ path = file.path
9
+
10
+ template_path = File.join(File.dirname(__FILE__),'overlays.yaml.erb')
11
+ template = ERB.new(File.read(template_path))
12
+
13
+ file.write(template.result(binding))
14
+ file.close
15
+
16
+ block.call(path) if block
17
+ return path
18
+ end
@@ -0,0 +1,10 @@
1
+ ---
2
+ - :media:
3
+ :uri:
4
+ :path: <%= File.join(OVERLAY_CACHE,'test1') %>
5
+ - :media:
6
+ :uri:
7
+ :path: <%= File.join(OVERLAY_CACHE,'test2') %>
8
+ - :media:
9
+ :uri:
10
+ :path: <%= File.join(OVERLAY_CACHE,'hello') %>
@@ -0,0 +1,7 @@
1
+ ronin_extension do
2
+
3
+ def greatings
4
+ 'hello'
5
+ end
6
+
7
+ end
@@ -0,0 +1,26 @@
1
+ <?xml version='1.0'?>
2
+ <?xml-stylesheet type="text/xsl" href="http://ronin.rubyforge.org/dist/overlay.xsl"?>
3
+ <ronin-overlay version='0.1.5'>
4
+ <title>
5
+ Hello World
6
+ </title>
7
+ <website>
8
+ http://ronin.rubyforge.org/
9
+ </website>
10
+ <license>
11
+ GPL-2
12
+ </license>
13
+ <maintainers>
14
+ <maintainer>
15
+ <name>
16
+ Postmodern
17
+ </name>
18
+ <email>
19
+ postmodern.mod3@gmail.com
20
+ </email>
21
+ </maintainer>
22
+ </maintainers>
23
+ <description>
24
+ This is a test overlay used in Ronin&apos;s specs.
25
+ </description>
26
+ </ronin-overlay>
@@ -0,0 +1,26 @@
1
+ <?xml version='1.0'?>
2
+ <?xml-stylesheet type="text/xsl" href="http://ronin.rubyforge.org/dist/overlay.xsl"?>
3
+ <ronin-overlay version='0.1.5'>
4
+ <title>
5
+ Test One
6
+ </title>
7
+ <website>
8
+ http://ronin.rubyforge.org/
9
+ </website>
10
+ <license>
11
+ GPL-2
12
+ </license>
13
+ <maintainers>
14
+ <maintainer>
15
+ <name>
16
+ Postmodern
17
+ </name>
18
+ <email>
19
+ postmodern.mod3@gmail.com
20
+ </email>
21
+ </maintainer>
22
+ </maintainers>
23
+ <description>
24
+ This is a test overlay used in Ronin&apos;s specs.
25
+ </description>
26
+ </ronin-overlay>
@@ -0,0 +1,7 @@
1
+ ronin_extension do
2
+
3
+ def test1
4
+ "test one"
5
+ end
6
+
7
+ end
@@ -0,0 +1,26 @@
1
+ <?xml version='1.0'?>
2
+ <?xml-stylesheet type="text/xsl" href="http://ronin.rubyforge.org/dist/overlay.xsl"?>
3
+ <ronin-overlay version='0.1.5'>
4
+ <title>
5
+ Test Two
6
+ </title>
7
+ <website>
8
+ http://ronin.rubyforge.org/
9
+ </website>
10
+ <license>
11
+ GPL-2
12
+ </license>
13
+ <maintainers>
14
+ <maintainer>
15
+ <name>
16
+ Postmodern
17
+ </name>
18
+ <email>
19
+ postmodern.mod3@gmail.com
20
+ </email>
21
+ </maintainer>
22
+ </maintainers>
23
+ <description>
24
+ This is a test overlay used in Ronin&apos;s specs.
25
+ </description>
26
+ </ronin-overlay>