ronin 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. data/History.txt +53 -0
  2. data/Manifest.txt +26 -18
  3. data/README.txt +12 -19
  4. data/Rakefile +9 -9
  5. data/TODO.txt +5 -5
  6. data/lib/ronin/cacheable.rb +246 -0
  7. data/lib/ronin/database/database.rb +21 -3
  8. data/lib/ronin/database/exceptions/invalid_config.rb +1 -1
  9. data/lib/ronin/environment.rb +5 -2
  10. data/lib/ronin/extensions.rb +2 -0
  11. data/lib/ronin/{models.rb → extensions/array.rb} +19 -6
  12. data/lib/ronin/extensions/ip_addr.rb +127 -0
  13. data/lib/ronin/{objectify/exceptions/object_context_not_found.rb → extensions/kernel.rb} +14 -3
  14. data/lib/ronin/extensions/uri/query_params.rb +4 -2
  15. data/lib/ronin/formatting/extensions/binary/integer.rb +6 -0
  16. data/lib/ronin/formatting/extensions/binary/string.rb +14 -12
  17. data/lib/ronin/formatting/extensions/text/string.rb +37 -19
  18. data/lib/ronin/has_license.rb +4 -2
  19. data/lib/ronin/model.rb +0 -1
  20. data/lib/ronin/network/extensions/http/net.rb +30 -3
  21. data/lib/ronin/network/extensions/telnet/net.rb +0 -18
  22. data/lib/ronin/network/http/exceptions/unknown_request.rb +1 -1
  23. data/lib/ronin/platform/exceptions/extension_not_found.rb +1 -1
  24. data/lib/ronin/platform/exceptions/overlay_cached.rb +1 -1
  25. data/lib/ronin/platform/exceptions/overlay_not_found.rb +1 -1
  26. data/lib/ronin/platform/extension.rb +18 -3
  27. data/lib/ronin/platform/extension_cache.rb +7 -1
  28. data/lib/ronin/platform/object_cache.rb +13 -12
  29. data/lib/ronin/platform/overlay.rb +14 -6
  30. data/lib/ronin/platform/overlay_cache.rb +11 -5
  31. data/lib/ronin/product.rb +20 -3
  32. data/lib/ronin/ronin.rb +0 -15
  33. data/lib/ronin/rpc/exceptions/response_missing.rb +1 -1
  34. data/lib/ronin/sessions/esmtp.rb +1 -10
  35. data/lib/ronin/{objectify.rb → sessions/exceptions.rb} +3 -3
  36. data/lib/ronin/{objectify/exceptions/unknown_object_context.rb → sessions/exceptions/variable_missing.rb} +4 -4
  37. data/lib/ronin/sessions/http.rb +3 -10
  38. data/lib/ronin/sessions/imap.rb +1 -10
  39. data/lib/ronin/sessions/pop3.rb +1 -9
  40. data/lib/ronin/sessions/session.rb +11 -21
  41. data/lib/ronin/sessions/smtp.rb +1 -10
  42. data/lib/ronin/sessions/tcp.rb +10 -13
  43. data/lib/ronin/sessions/telnet.rb +2 -17
  44. data/lib/ronin/sessions/udp.rb +6 -11
  45. data/lib/ronin/static/finders.rb +24 -0
  46. data/lib/ronin/ui/command_line/command_line.rb +41 -21
  47. data/lib/ronin/ui/command_line/commands/help.rb +7 -3
  48. data/lib/ronin/ui/command_line/commands/ls.rb +1 -1
  49. data/lib/ronin/ui/command_line/commands/rm.rb +1 -1
  50. data/lib/ronin/ui/command_line/exceptions/unknown_command.rb +1 -1
  51. data/lib/ronin/ui/diagnostics.rb +12 -5
  52. data/lib/ronin/ui/hexdump/extensions/file.rb +3 -1
  53. data/lib/ronin/ui/hexdump/hexdump.rb +1 -1
  54. data/lib/ronin/ui/verbose.rb +14 -0
  55. data/lib/ronin/version.rb +1 -1
  56. data/spec/cacheable_spec.rb +150 -0
  57. data/spec/classes/cacheable_model.rb +15 -0
  58. data/spec/classes/licensed_model.rb +12 -0
  59. data/spec/code/classes/thing.rb +13 -0
  60. data/spec/code/reference_spec.rb +1 -14
  61. data/spec/extensions/array_spec.rb +34 -0
  62. data/spec/extensions/ip_addr_spec.rb +44 -0
  63. data/spec/extensions/kernel_spec.rb +19 -0
  64. data/spec/extensions/uri/query_params_spec.rb +8 -0
  65. data/spec/formatting/binary/string_spec.rb +1 -1
  66. data/spec/formatting/digest/string_spec.rb +84 -0
  67. data/spec/formatting/http/string_spec.rb +84 -0
  68. data/spec/formatting/text/string_spec.rb +51 -0
  69. data/spec/has_license_spec.rb +29 -0
  70. data/spec/helpers/cacheable.rb +7 -0
  71. data/spec/helpers/contexts/ronin_cacheable_model.rb +13 -0
  72. data/spec/helpers/database.rb +5 -0
  73. data/spec/platform/helpers/overlays/hello/lib/init.rb +1 -0
  74. data/spec/platform/helpers/overlays/hello/lib/stuff/another_test.rb +6 -0
  75. data/spec/platform/helpers/overlays/hello/lib/stuff/test.rb +4 -0
  76. data/spec/platform/overlay_cache_spec.rb +1 -1
  77. data/spec/platform/overlay_spec.rb +28 -0
  78. data/spec/product_spec.rb +7 -0
  79. data/spec/sessions/classes/test_session.rb +11 -0
  80. data/spec/sessions/classes/uses_test_session.rb +10 -0
  81. data/spec/sessions/session_spec.rb +13 -44
  82. data/spec/spec_helper.rb +0 -5
  83. data/spec/static/{helpers → classes}/static_class.rb +0 -0
  84. data/spec/static/helpers/static.rb +0 -1
  85. data/spec/static/static_spec.rb +1 -0
  86. metadata +44 -35
  87. data/lib/ronin/objectify/exceptions.rb +0 -25
  88. data/lib/ronin/objectify/objectify.rb +0 -240
  89. data/lib/ronin/target.rb +0 -44
  90. data/lib/ronin/ui/command_line/param_parser.rb +0 -93
  91. data/spec/formatting/digest_spec.rb +0 -54
  92. data/spec/formatting/http_spec.rb +0 -53
  93. data/spec/formatting/text_spec.rb +0 -40
  94. data/spec/helpers.rb +0 -0
  95. data/spec/objectify/objectify_spec.rb +0 -31
  96. data/spec/target_spec.rb +0 -16
  97. data/spec/ui/command_line/helpers/example_command.rb +0 -21
  98. data/spec/ui/command_line/param_parser_spec.rb +0 -49
data/lib/ronin/target.rb DELETED
@@ -1,44 +0,0 @@
1
- #
2
- # Ronin - A Ruby platform designed for information security and data
3
- # exploration tasks.
4
- #
5
- # Copyright (c) 2007-2008 Hal Brodigan (postmodern.mod3 at gmail.com)
6
- #
7
- # This program is free software; you can redistribute it and/or modify
8
- # it under the terms of the GNU General Public License as published by
9
- # the Free Software Foundation; either version 2 of the License, or
10
- # (at your option) any later version.
11
- #
12
- # This program is distributed in the hope that it will be useful,
13
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- # GNU General Public License for more details.
16
- #
17
- # You should have received a copy of the GNU General Public License
18
- # along with this program; if not, write to the Free Software
19
- # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20
- #
21
-
22
- require 'ronin/model'
23
- require 'ronin/os'
24
- require 'ronin/arch'
25
-
26
- module Ronin
27
- class Target
28
-
29
- include Model
30
-
31
- # Primary key
32
- property :id, Serial
33
-
34
- # Targeted architecture
35
- belongs_to :arch
36
-
37
- # Targeted OS
38
- belongs_to :os, :class_name => 'OS'
39
-
40
- # Validates
41
- validates_present :arch, :os
42
-
43
- end
44
- end
@@ -1,93 +0,0 @@
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 'uri'
25
-
26
- module Ronin
27
- module UI
28
- module CommandLine
29
- module ParamParser
30
- # The params Hash
31
- attr_reader :params
32
-
33
- #
34
- # The Array of parameter patterns and their parsers.
35
- #
36
- def ParamParser.formats
37
- @@ronin_param_formats ||= []
38
- end
39
-
40
- #
41
- # Itereates over each parameter pattern and parser, passing them to the
42
- # specified _block_.
43
- #
44
- def ParamParser.each_format(&block)
45
- ParamParser.formats.each do |format|
46
- block.call(format[:pattern],format[:parser])
47
- end
48
- end
49
-
50
- #
51
- # Adds a new parameter _pattern_ using the specified _block_ as the parser.
52
- #
53
- def ParamParser.recognize(pattern,&block)
54
- ParamParser.formats.unshift({
55
- :pattern => pattern,
56
- :parser => block
57
- })
58
- end
59
-
60
- protected
61
-
62
- #
63
- # Parses the specified _name_and_value_ string of the form
64
- # "name=value" and extracts both the _name_ and the _value_, saving
65
- # both the _name_ and _value_ within the +params+ Hash. If the
66
- # extracted _value_ matches one of the patterns within +FORMATS+,
67
- # then the associated parser will first parse the _value_.
68
- #
69
- def parse_param(name_and_value)
70
- name, value = name_and_value.split('=',2)
71
-
72
- if value
73
- ParamParser.each_format do |pattern,parser|
74
- if value.match(pattern)
75
- value = parser.call(value)
76
- break
77
- end
78
- end
79
- end
80
-
81
- return {name.to_sym => value}
82
- end
83
-
84
- ParamParser.recognize(/^[a-zA-Z][a-zA-Z0-9]*:\/\//) { |value| URI(value) }
85
- ParamParser.recognize('false') { |value| false }
86
- ParamParser.recognize('true') { |value| true }
87
- ParamParser.recognize(/^0x[0-9a-fA-F]+$/) { |value| value.hex }
88
- ParamParser.recognize(/^[0-9]+$/) { |value| value.to_i }
89
-
90
- end
91
- end
92
- end
93
- end
@@ -1,54 +0,0 @@
1
- require 'ronin/formatting/digest'
2
-
3
- require 'spec_helper'
4
-
5
- describe String do
6
- before(:all) do
7
- @digest_plain_text = "test"
8
- @digest_md5 = "098f6bcd4621d373cade4e832627b4f6"
9
- @digest_sha1 = "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3"
10
- @digest_sha2 = "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
11
- @digest_sha256 = "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
12
- @digest_sha512 = "ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff"
13
- end
14
-
15
- it "should provide String#md5" do
16
- @digest_plain_text.respond_to?('md5').should == true
17
- end
18
-
19
- it "String#md5 should return the MD5 digest of itself" do
20
- @digest_plain_text.md5.should == @digest_md5
21
- end
22
-
23
- it "should provide String#sha1" do
24
- @digest_plain_text.respond_to?('sha1').should == true
25
- end
26
-
27
- it "String#sha1 should return the SHA1 digest of itself" do
28
- @digest_plain_text.sha1.should == @digest_sha1
29
- end
30
-
31
- it "should provide String#sha2" do
32
- @digest_plain_text.respond_to?('sha2').should == true
33
- end
34
-
35
- it "String#sha2 should return the SHA2 digest of itself" do
36
- @digest_plain_text.sha2.should == @digest_sha2
37
- end
38
-
39
- it "should provide String#sha256" do
40
- @digest_plain_text.respond_to?('sha256').should == true
41
- end
42
-
43
- it "String#sha256 should return the SHA256 digest of itself" do
44
- @digest_plain_text.sha256.should == @digest_sha256
45
- end
46
-
47
- it "should provide String#sha512" do
48
- @digest_plain_text.respond_to?('sha512').should == true
49
- end
50
-
51
- it "String#sha512 should return the SHA512 digest of itself" do
52
- @digest_plain_text.sha512.should == @digest_sha512
53
- end
54
- end
@@ -1,53 +0,0 @@
1
- require 'ronin/formatting/http'
2
-
3
- require 'spec_helper'
4
-
5
- describe String do
6
- before(:all) do
7
- @uri_unencoded = "mod % 3"
8
- @uri_encoded = "mod%20%25%203"
9
- @uri_http_encoded = "%6d%6f%64%20%25%20%33"
10
- @uri_unescaped = "x + y"
11
- @uri_escaped = "x+%2B+y"
12
- end
13
-
14
- it "should provide String#uri_encode" do
15
- @uri_unencoded.respond_to?('uri_encode').should == true
16
- end
17
-
18
- it "String#uri_encode should URI encode itself" do
19
- @uri_unencoded.uri_encode.should == @uri_encoded
20
- end
21
-
22
- it "should provide String#uri_decode" do
23
- @uri_encoded.respond_to?('uri_decode').should == true
24
- end
25
-
26
- it "String#uri_decode should URI decode itself" do
27
- @uri_encoded.uri_decode.should == @uri_unencoded
28
- end
29
-
30
- it "should provide String#uri_escape" do
31
- @uri_unescaped.respond_to?('uri_escape').should == true
32
- end
33
-
34
- it "String#uri_escape should URI escape itself" do
35
- @uri_unescaped.uri_escape.should == @uri_escaped
36
- end
37
-
38
- it "should provide String#uri_unescape" do
39
- @uri_escaped.respond_to?('uri_unescape').should == true
40
- end
41
-
42
- it "String#uri_unescape should URI unescape itself" do
43
- @uri_escaped.uri_unescape.should == @uri_unescaped
44
- end
45
-
46
- it "should provide String#format_http" do
47
- @uri_unencoded.respond_to?('format_http').should == true
48
- end
49
-
50
- it "String#format_http should format each byte of the String" do
51
- @uri_unencoded.format_http.should == @uri_http_encoded
52
- end
53
- end
@@ -1,40 +0,0 @@
1
- require 'ronin/formatting/text'
2
-
3
- require 'spec_helper'
4
-
5
- describe String do
6
- before(:all) do
7
- @string = "hello"
8
- end
9
-
10
- it "should provide String#format_chars" do
11
- @string.respond_to?('format_chars').should == true
12
- end
13
-
14
- it "String#format_chars should format each character in the String" do
15
- @string.format_chars { |c|
16
- "_#{c}"
17
- }.should == "_h_e_l_l_o"
18
- end
19
-
20
- it "should provide String#format_bytes" do
21
- @string.respond_to?('format_bytes').should == true
22
- end
23
-
24
- it "String#format_bytes should format each byte in the String" do
25
- @string.format_bytes { |b|
26
- sprintf("%%%x",b)
27
- }.should == "%68%65%6c%6c%6f"
28
- end
29
-
30
- it "should provide String#random_case" do
31
- @string.respond_to?('random_case').should == true
32
- end
33
-
34
- it "String#random_case should randomly capitalize each character" do
35
- new_string = @string.random_case
36
-
37
- new_string.should_not == @string
38
- new_string.downcase.should == @string
39
- end
40
- end
data/spec/helpers.rb DELETED
File without changes
@@ -1,31 +0,0 @@
1
- require 'ronin/objectify'
2
-
3
- require 'spec_helper'
4
-
5
- describe Objectify do
6
- before(:all) do
7
- class TestObject
8
-
9
- include Objectify
10
-
11
- objectify :test
12
-
13
- property :id, Serial
14
-
15
- property :mesg, String
16
-
17
- parameter :x
18
-
19
- parameter :y
20
-
21
- end
22
- end
23
-
24
- it "should create an object with a Hash of attributes and params" do
25
- test = TestObject.new(:mesg => 'hello', :x => 3, :y => 9)
26
-
27
- test.mesg.should == 'hello'
28
- test.x.should == 3
29
- test.y.should == 9
30
- end
31
- end
data/spec/target_spec.rb DELETED
@@ -1,16 +0,0 @@
1
- require 'ronin/target'
2
-
3
- require 'helpers/database'
4
-
5
- describe Target do
6
- it "should require an arch and a platform" do
7
- @target = Target.new
8
- @target.should_not be_valid
9
-
10
- @target.arch = Arch.i386
11
- @target.should_not be_valid
12
-
13
- @target.os = OS.linux_version('2.6.11')
14
- @target.should be_valid
15
- end
16
- end
@@ -1,21 +0,0 @@
1
- require 'ronin/ui/command_line/command'
2
-
3
- class ExampleCommand < UI::CommandLine::Command
4
-
5
- include UI::CommandLine::ParamParser
6
-
7
- attr_reader :params
8
-
9
- def initialize(name)
10
- @params = {}
11
-
12
- super(name)
13
- end
14
-
15
- def param_parser(name_and_value)
16
- @params.merge!(parse_param(name_and_value))
17
-
18
- return @params
19
- end
20
-
21
- end
@@ -1,49 +0,0 @@
1
- require 'ronin/ui/command_line/param_parser'
2
-
3
- require 'spec_helper'
4
- require 'ui/command_line/helpers/example_command'
5
-
6
- describe UI::CommandLine::ParamParser do
7
- before(:all) do
8
- @command = ExampleCommand.new('example')
9
- end
10
-
11
- it "should parse params of the form 'name'" do
12
- @command.param_parser('var')
13
-
14
- @command.params.has_key?(:var).should == true
15
- @command.params[:var].should be_nil
16
- end
17
-
18
- it "should parse params of the form 'name=value'" do
19
- @command.param_parser('var1=test')
20
- @command.params[:var1].should == 'test'
21
- end
22
-
23
- it "should parse params which have numeric values" do
24
- @command.param_parser('var2=100')
25
- @command.params[:var2].should == 100
26
- end
27
-
28
- it "should parse params with hexadecimal values" do
29
- @command.param_parser('var3=0x2a')
30
- @command.params[:var3].should == 0x2a
31
- end
32
-
33
- it "should parse params with URI values" do
34
- url = 'http://example.com/'
35
-
36
- @command.param_parser("var4=#{url}")
37
- @command.params[:var4].should == URI(url)
38
- end
39
-
40
- it "should parse params with true boolean values" do
41
- @command.param_parser('var5=true')
42
- @command.params[:var5].should == true
43
- end
44
-
45
- it "should parse params with false boolean values" do
46
- @command.param_parser('var6=false')
47
- @command.params[:var6].should == false
48
- end
49
- end