ronin 1.0.0.rc1 → 1.0.0.rc2

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.
Files changed (76) hide show
  1. data/ChangeLog.md +24 -26
  2. data/Gemfile +24 -12
  3. data/README.md +39 -22
  4. data/Rakefile +2 -4
  5. data/gemspec.yml +27 -30
  6. data/lib/ronin/address.rb +3 -6
  7. data/lib/ronin/cached_file.rb +4 -3
  8. data/lib/ronin/campaign.rb +2 -1
  9. data/lib/ronin/credential.rb +3 -2
  10. data/lib/ronin/database/database.rb +3 -0
  11. data/lib/ronin/database/migrations/create_addresses_table.rb +1 -3
  12. data/lib/ronin/database/migrations/create_open_ports_table.rb +0 -3
  13. data/lib/ronin/database/migrations/create_organizations_table.rb +1 -6
  14. data/lib/ronin/database/migrations/create_urls_table.rb +1 -4
  15. data/lib/ronin/database/migrations.rb +0 -2
  16. data/lib/ronin/email_address.rb +5 -3
  17. data/lib/ronin/environment.rb +1 -1
  18. data/lib/ronin/host_name.rb +4 -3
  19. data/lib/ronin/host_name_ip_address.rb +3 -2
  20. data/lib/ronin/ip_address.rb +5 -4
  21. data/lib/ronin/ip_address_mac_address.rb +3 -2
  22. data/lib/ronin/mac_address.rb +3 -1
  23. data/lib/ronin/model/has_authors/class_methods.rb +2 -2
  24. data/lib/ronin/model/has_authors/has_authors.rb +1 -1
  25. data/lib/ronin/model/has_license/class_methods.rb +22 -5
  26. data/lib/ronin/{database/migrations/create_tags_table.rb → model/has_unique_name/class_methods.rb} +20 -15
  27. data/lib/ronin/model/has_unique_name/has_unique_name.rb +72 -0
  28. data/lib/ronin/model/has_unique_name.rb +2 -51
  29. data/lib/ronin/model/model.rb +1 -1
  30. data/lib/ronin/open_port.rb +5 -8
  31. data/lib/ronin/organization.rb +2 -5
  32. data/lib/ronin/os.rb +3 -2
  33. data/lib/ronin/os_guess.rb +3 -2
  34. data/lib/ronin/password.rb +2 -1
  35. data/lib/ronin/port.rb +2 -1
  36. data/lib/ronin/repository.rb +2 -1
  37. data/lib/ronin/service.rb +2 -1
  38. data/lib/ronin/service_credential.rb +2 -1
  39. data/lib/ronin/software.rb +2 -1
  40. data/lib/ronin/spec/database.rb +4 -0
  41. data/lib/ronin/target.rb +3 -2
  42. data/lib/ronin/tcp_port.rb +4 -2
  43. data/lib/ronin/ui/cli/cli.rb +2 -3
  44. data/lib/ronin/ui/cli/command.rb +48 -16
  45. data/lib/ronin/ui.rb +0 -1
  46. data/lib/ronin/url.rb +9 -10
  47. data/lib/ronin/url_scheme.rb +15 -1
  48. data/lib/ronin/version.rb +1 -1
  49. data/lib/ronin/web_credential.rb +3 -2
  50. data/ronin.gemspec +2 -2
  51. data/spec/model/cacheable_spec.rb +9 -6
  52. data/spec/model/has_authors_spec.rb +60 -0
  53. data/spec/model/has_description_spec.rb +8 -6
  54. data/spec/model/has_license_spec.rb +31 -12
  55. data/spec/model/has_name_spec.rb +12 -10
  56. data/spec/model/has_title_spec.rb +8 -6
  57. data/spec/model/has_version_spec.rb +58 -0
  58. data/spec/model/model_spec.rb +1 -3
  59. data/spec/model/models/authored_model.rb +11 -0
  60. data/spec/model/models/described_model.rb +0 -1
  61. data/spec/model/models/licensed_model.rb +0 -1
  62. data/spec/model/models/named_model.rb +0 -1
  63. data/spec/model/models/titled_model.rb +0 -1
  64. data/spec/model/models/versioned_model.rb +11 -0
  65. data/spec/model/spec_helper.rb +2 -2
  66. data/spec/ui/cli/classes/test_command.rb +7 -1
  67. data/spec/ui/cli/command_spec.rb +6 -0
  68. metadata +94 -267
  69. data/lib/ronin/database/migrations/create_taggings_table.rb +0 -45
  70. data/lib/ronin/ui/hexdump/extensions/file.rb +0 -39
  71. data/lib/ronin/ui/hexdump/extensions/kernel.rb +0 -31
  72. data/lib/ronin/ui/hexdump/extensions.rb +0 -21
  73. data/lib/ronin/ui/hexdump/hexdump.rb +0 -92
  74. data/lib/ronin/ui/hexdump.rb +0 -21
  75. data/spec/model/models/lazy_model.rb +0 -9
  76. data/spec/support/inflector_spec.rb +0 -20
@@ -1,45 +0,0 @@
1
- #
2
- # Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
3
- #
4
- # This file is part of Ronin.
5
- #
6
- # Ronin is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # Ronin is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU General Public License
17
- # along with Ronin. If not, see <http://www.gnu.org/licenses/>.
18
- #
19
-
20
- require 'ronin/database/migrations/create_tags_table'
21
- require 'ronin/database/migrations/migrations'
22
-
23
- module Ronin
24
- module Database
25
- module Migrations
26
- migration(:create_taggings_table, :need => :create_tags_table) do
27
- up do
28
- create_table :taggings do
29
- column :id, Integer, :serial => true
30
- column :taggable_id, Integer, :not_null => true
31
- column :taggable_type, String, :not_null => true
32
- column :tag_context, String, :not_null => true
33
- column :tag_id, Integer, :not_null => true
34
- end
35
-
36
- create_index :taggings, :tag_id, :name => :index_taggings_tag
37
- end
38
-
39
- down do
40
- drop_table :taggings
41
- end
42
- end
43
- end
44
- end
45
- end
@@ -1,39 +0,0 @@
1
- #
2
- # Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
3
- #
4
- # This file is part of Ronin.
5
- #
6
- # Ronin is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # Ronin is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU General Public License
17
- # along with Ronin. If not, see <http://www.gnu.org/licenses/>.
18
- #
19
-
20
- require 'ronin/ui/hexdump/hexdump'
21
-
22
- class File
23
-
24
- #
25
- # Hexdumps the contents of the File.
26
- #
27
- # @param [String] path
28
- # The path to the File to hexdump.
29
- #
30
- # @param [IO] output
31
- # The output stream to print the hexdump to.
32
- #
33
- def self.hexdump(path,output=STDOUT)
34
- self.open(path) do |file|
35
- Ronin::UI::Hexdump.dump(file,output)
36
- end
37
- end
38
-
39
- end
@@ -1,31 +0,0 @@
1
- #
2
- # Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
3
- #
4
- # This file is part of Ronin.
5
- #
6
- # Ronin is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # Ronin is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU General Public License
17
- # along with Ronin. If not, see <http://www.gnu.org/licenses/>.
18
- #
19
-
20
- require 'ronin/ui/hexdump/hexdump'
21
-
22
- module Kernel
23
- #
24
- # Hexdumps an object.
25
- #
26
- # @see Ronin::UI::Hexdump.dump
27
- #
28
- def hexdump(object,output=STDOUT)
29
- Ronin::UI::Hexdump.dump(object,output)
30
- end
31
- end
@@ -1,21 +0,0 @@
1
- #
2
- # Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
3
- #
4
- # This file is part of Ronin.
5
- #
6
- # Ronin is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # Ronin is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU General Public License
17
- # along with Ronin. If not, see <http://www.gnu.org/licenses/>.
18
- #
19
-
20
- require 'ronin/ui/hexdump/extensions/file'
21
- require 'ronin/ui/hexdump/extensions/kernel'
@@ -1,92 +0,0 @@
1
- #
2
- # Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
3
- #
4
- # This file is part of Ronin.
5
- #
6
- # Ronin is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # Ronin is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU General Public License
17
- # along with Ronin. If not, see <http://www.gnu.org/licenses/>.
18
- #
19
-
20
- module Ronin
21
- module UI
22
- #
23
- # Methods for hexdumping data.
24
- #
25
- module Hexdump
26
- #
27
- # Hexdumps an object.
28
- #
29
- # @param [#each_byte] object
30
- # The object to hexdump, must respond to the `each_byte` method.
31
- #
32
- # @param [IO] output
33
- # The output stream to print the hexdump to.
34
- #
35
- # @return [nil]
36
- #
37
- # @raise [ArgumentError]
38
- # The given object does not respond to the `#each_byte` method.
39
- #
40
- def Hexdump.dump(object,output=STDOUT)
41
- unless object.respond_to?(:each_byte)
42
- raise(ArgumentError,"argument must respond to #each_byte")
43
- end
44
-
45
- index = 0
46
- offset = 0
47
- hex_segment = nil
48
- print_segment = nil
49
-
50
- segment = lambda {
51
- output.printf(
52
- "%.8x %s |%s|\n",
53
- index,
54
- hex_segment.join(' ').ljust(47).insert(23,' '),
55
- print_segment.join
56
- )
57
- }
58
-
59
- object.each_byte do |b|
60
- if offset == 0
61
- hex_segment = []
62
- print_segment = []
63
- end
64
-
65
- hex_segment << ("%.2x" % b)
66
-
67
- print_segment[offset] = case b
68
- when (0x20..0x7e)
69
- b.chr
70
- else
71
- '.'
72
- end
73
-
74
- offset += 1
75
-
76
- if (offset >= 16)
77
- segment.call
78
-
79
- offset = 0
80
- index += 16
81
- end
82
- end
83
-
84
- unless offset == 0
85
- segment.call
86
- end
87
-
88
- return nil
89
- end
90
- end
91
- end
92
- end
@@ -1,21 +0,0 @@
1
- #
2
- # Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
3
- #
4
- # This file is part of Ronin.
5
- #
6
- # Ronin is free software: you can redistribute it and/or modify
7
- # it under the terms of the GNU General Public License as published by
8
- # the Free Software Foundation, either version 3 of the License, or
9
- # (at your option) any later version.
10
- #
11
- # Ronin is distributed in the hope that it will be useful,
12
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU General Public License for more details.
15
- #
16
- # You should have received a copy of the GNU General Public License
17
- # along with Ronin. If not, see <http://www.gnu.org/licenses/>.
18
- #
19
-
20
- require 'ronin/ui/hexdump/hexdump'
21
- require 'ronin/ui/hexdump/extensions'
@@ -1,9 +0,0 @@
1
- require 'ronin/model'
2
-
3
- class LazyModel
4
-
5
- include Ronin::Model
6
-
7
- property :id, Serial
8
-
9
- end
@@ -1,20 +0,0 @@
1
- require 'spec_helper'
2
- require 'ronin/support/inflector'
3
-
4
- describe Ronin::Support::Inflector do
5
- it "should not be nil" do
6
- subject.should_not be_nil
7
- end
8
-
9
- it "should support pluralizing words" do
10
- subject.pluralize('word').should == 'words'
11
- end
12
-
13
- it "should support singularizing words" do
14
- subject.singularize('words').should == 'word'
15
- end
16
-
17
- it "should support humanizing words" do
18
- subject.humanize('word_id').should == 'Word'
19
- end
20
- end