ronin 1.1.0.rc3 → 1.1.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.
Files changed (66) hide show
  1. data/ChangeLog.md +10 -5
  2. data/Gemfile +1 -1
  3. data/README.md +1 -1
  4. data/Rakefile +4 -4
  5. data/bin/ronin +2 -2
  6. data/bin/ronin-campaigns +2 -2
  7. data/bin/ronin-console +2 -2
  8. data/bin/ronin-creds +2 -2
  9. data/bin/ronin-database +2 -2
  10. data/bin/ronin-emails +2 -2
  11. data/bin/ronin-exec +2 -2
  12. data/bin/ronin-help +2 -2
  13. data/bin/ronin-hosts +2 -2
  14. data/bin/ronin-ips +2 -2
  15. data/bin/ronin-repos +2 -2
  16. data/bin/ronin-urls +2 -2
  17. data/gemspec.yml +2 -4
  18. data/lib/ronin/database/database.rb +12 -13
  19. data/lib/ronin/database/migrations.rb +2 -29
  20. data/lib/ronin/database/migrations/1.0.0.rb +568 -0
  21. data/lib/ronin/database/migrations/1.1.0.rb +125 -0
  22. data/lib/ronin/spec/database.rb +1 -4
  23. data/lib/ronin/target.rb +0 -19
  24. data/lib/ronin/ui/cli/cli.rb +1 -1
  25. data/lib/ronin/ui/cli/commands/database.rb +15 -22
  26. data/lib/ronin/ui/output/output.rb +1 -1
  27. data/lib/ronin/url.rb +23 -24
  28. data/lib/ronin/url_query_param.rb +4 -6
  29. data/lib/ronin/url_query_param_name.rb +89 -0
  30. data/lib/ronin/user_name.rb +0 -2
  31. data/lib/ronin/version.rb +1 -1
  32. data/ronin.gemspec +129 -13
  33. data/spec/host_name_spec.rb +9 -10
  34. data/spec/ip_address.rb +3 -3
  35. data/spec/url_query_param_spec.rb +5 -3
  36. data/spec/url_spec.rb +14 -9
  37. metadata +9 -35
  38. data/lib/ronin/database/migrations/add_created_at_column_to_targets_table.rb +0 -48
  39. data/lib/ronin/database/migrations/add_updated_at_column_to_campaigns_table.rb +0 -47
  40. data/lib/ronin/database/migrations/create_addresses_table.rb +0 -49
  41. data/lib/ronin/database/migrations/create_arches_table.rb +0 -43
  42. data/lib/ronin/database/migrations/create_authors_table.rb +0 -46
  43. data/lib/ronin/database/migrations/create_campaigns_table.rb +0 -43
  44. data/lib/ronin/database/migrations/create_countries_table.rb +0 -43
  45. data/lib/ronin/database/migrations/create_credentials_table.rb +0 -64
  46. data/lib/ronin/database/migrations/create_email_addresses_table.rb +0 -50
  47. data/lib/ronin/database/migrations/create_host_name_ip_addresses_table.rb +0 -50
  48. data/lib/ronin/database/migrations/create_ip_address_mac_addresses_table.rb +0 -50
  49. data/lib/ronin/database/migrations/create_licenses_table.rb +0 -43
  50. data/lib/ronin/database/migrations/create_open_ports_table.rb +0 -56
  51. data/lib/ronin/database/migrations/create_organizations_table.rb +0 -43
  52. data/lib/ronin/database/migrations/create_os_guesses_table.rb +0 -49
  53. data/lib/ronin/database/migrations/create_os_table.rb +0 -42
  54. data/lib/ronin/database/migrations/create_passwords_table.rb +0 -41
  55. data/lib/ronin/database/migrations/create_ports_table.rb +0 -47
  56. data/lib/ronin/database/migrations/create_proxies_table.rb +0 -54
  57. data/lib/ronin/database/migrations/create_repositories_table.rb +0 -60
  58. data/lib/ronin/database/migrations/create_script_paths_table.rb +0 -46
  59. data/lib/ronin/database/migrations/create_services_table.rb +0 -46
  60. data/lib/ronin/database/migrations/create_softwares_table.rb +0 -45
  61. data/lib/ronin/database/migrations/create_targets_table.rb +0 -49
  62. data/lib/ronin/database/migrations/create_url_query_params_table.rb +0 -41
  63. data/lib/ronin/database/migrations/create_url_schemes_table.rb +0 -39
  64. data/lib/ronin/database/migrations/create_urls_table.rb +0 -65
  65. data/lib/ronin/database/migrations/create_user_names_table.rb +0 -42
  66. data/lib/ronin/database/migrations/create_vendors_table.rb +0 -41
@@ -19,8 +19,6 @@
19
19
 
20
20
  require 'ronin/model'
21
21
  require 'ronin/model/has_unique_name'
22
- require 'ronin/credential'
23
- require 'ronin/email_address'
24
22
 
25
23
  require 'dm-timestamps'
26
24
 
data/lib/ronin/version.rb CHANGED
@@ -19,5 +19,5 @@
19
19
 
20
20
  module Ronin
21
21
  # Ronin version
22
- VERSION = '1.1.0.rc3'
22
+ VERSION = '1.1.0'
23
23
  end
data/ronin.gemspec CHANGED
@@ -1,15 +1,131 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- begin
4
- Ore::Specification.new do |gemspec|
5
- # custom logic here
6
- end
7
- rescue NameError
8
- begin
9
- require 'ore/specification'
10
- retry
11
- rescue LoadError
12
- STDERR.puts "The '#{__FILE__}' file requires Ore."
13
- STDERR.puts "Run `gem install ore-core` to install Ore."
1
+ # encoding: utf-8
2
+
3
+ require 'yaml'
4
+
5
+ Gem::Specification.new do |gemspec|
6
+ root = File.dirname(__FILE__)
7
+ lib_dir = File.join(root,'lib')
8
+ files = if File.directory?('.git')
9
+ `git ls-files`.split($/)
10
+ elsif File.directory?('.hg')
11
+ `hg manifest`.split($/)
12
+ elsif File.directory?('.svn')
13
+ `svn ls -R`.split($/).select { |path| File.file?(path) }
14
+ else
15
+ Dir['{**/}{.*,*}'].select { |path| File.file?(path) }
16
+ end
17
+
18
+ filter_files = lambda { |paths|
19
+ case paths
20
+ when Array
21
+ (files & paths)
22
+ when String
23
+ (files & Dir[paths])
24
+ end
25
+ }
26
+
27
+ version = {
28
+ :file => 'ronin/version',
29
+ :constant => 'Ronin::VERSION'
30
+ }
31
+
32
+ defaults = {
33
+ 'name' => File.basename(root),
34
+ 'files' => files,
35
+ 'executables' => filter_files['bin/*'].map { |path| File.basename(path) },
36
+ 'test_files' => filter_files['{test/{**/}*_test.rb,spec/{**/}*_spec.rb}'],
37
+ 'extra_doc_files' => filter_files['*.{txt,rdoc,md,markdown,tt,textile}'],
38
+ }
39
+
40
+ metadata = defaults.merge(YAML.load_file('gemspec.yml'))
41
+
42
+ gemspec.name = metadata.fetch('name',defaults[:name])
43
+ gemspec.version = if metadata['version']
44
+ metadata['version']
45
+ else
46
+ $LOAD_PATH << lib_dir unless $LOAD_PATH.include?(lib_dir)
47
+
48
+ require version[:file]
49
+ eval(version[:constant])
50
+ end
51
+
52
+ gemspec.summary = metadata.fetch('summary',metadata['description'])
53
+ gemspec.description = metadata.fetch('description',metadata['summary'])
54
+
55
+ case metadata['license']
56
+ when Array
57
+ gemspec.licenses = metadata['license']
58
+ when String
59
+ gemspec.license = metadata['license']
60
+ end
61
+
62
+ case metadata['authors']
63
+ when Array
64
+ gemspec.authors = metadata['authors']
65
+ when String
66
+ gemspec.author = metadata['authors']
67
+ end
68
+
69
+ gemspec.email = metadata['email']
70
+ gemspec.homepage = metadata['homepage']
71
+
72
+ case metadata['require_paths']
73
+ when Array
74
+ gemspec.require_paths = metadata['require_paths']
75
+ when String
76
+ gemspec.require_path = metadata['require_paths']
77
+ end
78
+
79
+ gemspec.files = filter_files[metadata['files']]
80
+
81
+ gemspec.executables = metadata['executables']
82
+ gemspec.extensions = metadata['extensions']
83
+
84
+ if Gem::VERSION < '1.7.'
85
+ gemspec.default_executable = gemspec.executables.first
86
+ end
87
+
88
+ gemspec.test_files = filter_files[metadata['test_files']]
89
+
90
+ unless gemspec.files.include?('.document')
91
+ gemspec.extra_rdoc_files = metadata['extra_doc_files']
92
+ end
93
+
94
+ gemspec.post_install_message = metadata['post_install_message']
95
+ gemspec.requirements = metadata['requirements']
96
+
97
+ if gemspec.respond_to?(:required_ruby_version=)
98
+ gemspec.required_ruby_version = metadata['required_ruby_version']
99
+ end
100
+
101
+ if gemspec.respond_to?(:required_rubygems_version=)
102
+ gemspec.required_rubygems_version = metadata['required_ruby_version']
103
+ end
104
+
105
+ parse_versions = lambda { |versions|
106
+ case versions
107
+ when Array
108
+ versions.map { |v| v.to_s }
109
+ when String
110
+ versions.split(/,\s*/)
111
+ end
112
+ }
113
+
114
+ if metadata['dependencies']
115
+ metadata['dependencies'].each do |name,versions|
116
+ gemspec.add_dependency(name,parse_versions[versions])
117
+ end
118
+ end
119
+
120
+ if metadata['runtime_dependencies']
121
+ metadata['runtime_dependencies'].each do |name,versions|
122
+ gemspec.add_runtime_dependency(name,parse_versions[versions])
123
+ end
124
+ end
125
+
126
+ if metadata['development_dependencies']
127
+ metadata['development_dependencies'].each do |name,versions|
128
+ gemspec.add_development_dependency(name,parse_versions[versions])
129
+ end
14
130
  end
15
131
  end
@@ -2,10 +2,10 @@ require 'spec_helper'
2
2
  require 'ronin/host_name'
3
3
 
4
4
  describe HostName do
5
- let(:example_domain) { 'www.example.com' }
6
- let(:example_ip) { '192.0.32.10' }
5
+ let(:domain) { 'localhost' }
6
+ let(:ip) { '127.0.0.1' }
7
7
 
8
- subject { HostName.new(:address => example_domain) }
8
+ subject { HostName.new(:address => domain) }
9
9
 
10
10
  it "should require an address" do
11
11
  host_name = HostName.new
@@ -23,17 +23,16 @@ describe HostName do
23
23
  let(:bad_ip) { '0.0.0.0' }
24
24
 
25
25
  it "should look up the host names for an IP Address" do
26
- host_names = subject.lookup(example_ip)
26
+ host_names = subject.lookup(ip).map { |name| name.address }
27
27
 
28
- host_names.should_not be_empty
29
- host_names[0].address.should == example_domain
28
+ host_names.should include(domain)
30
29
  end
31
30
 
32
31
  it "should associate the host names with the original IP address" do
33
- host_names = subject.lookup(example_ip)
32
+ host_names = subject.lookup(ip)
34
33
 
35
34
  host_names.each do |host|
36
- host.ip_addresses[0].address.should == example_ip
35
+ host.ip_addresses[0].address.should == ip
37
36
  end
38
37
  end
39
38
 
@@ -51,14 +50,14 @@ describe HostName do
51
50
  ips = subject.lookup!
52
51
 
53
52
  ips.should_not be_empty
54
- ips[0].address.should == example_ip
53
+ ips[0].address.should == ip
55
54
  end
56
55
 
57
56
  it "should associate the IP addresses with the original host name" do
58
57
  ips = subject.lookup!
59
58
 
60
59
  ips.each do |ip|
61
- ip.host_names[0].address.should == example_domain
60
+ ip.host_names[0].address.should == domain
62
61
  end
63
62
  end
64
63
 
data/spec/ip_address.rb CHANGED
@@ -2,8 +2,8 @@ require 'spec_helper'
2
2
  require 'ronin/ip_address'
3
3
 
4
4
  describe IPAddress do
5
- let(:example_domain) { 'www.example.com' }
6
- let(:example_ip) { '192.0.32.10' }
5
+ let(:example_domain) { 'localhost' }
6
+ let(:example_ip) { '127.0.0.1' }
7
7
 
8
8
  subject { IPAddress.new(:address => example_ip) }
9
9
 
@@ -67,7 +67,7 @@ describe IPAddress do
67
67
  end
68
68
 
69
69
  describe "#version" do
70
- let(:ipv4) { IPAddress.new(:address => '192.168.1.1') }
70
+ let(:ipv4) { IPAddress.new(:address => '127.0.0.1') }
71
71
  let(:ipv6) { IPAddress.new(:address => '::1') }
72
72
 
73
73
  it "should only accept 4 or 6" do
@@ -9,20 +9,22 @@ describe URLQueryParam do
9
9
  end
10
10
 
11
11
  describe "#to_s" do
12
+ let(:name) { URLQueryParamName.new(:name => 'foo') }
13
+
12
14
  it "should dump a name and a value into a String" do
13
- param = URLQueryParam.new(:name => 'foo', :value => 'bar')
15
+ param = URLQueryParam.new(:name => name, :value => 'bar')
14
16
 
15
17
  param.to_s.should == "foo=bar"
16
18
  end
17
19
 
18
20
  it "should ignore empty or nil values" do
19
- param = URLQueryParam.new(:name => 'foo')
21
+ param = URLQueryParam.new(:name => name)
20
22
 
21
23
  param.to_s.should == "foo="
22
24
  end
23
25
 
24
26
  it "should escape special characters" do
25
- param = URLQueryParam.new(:name => 'foo', :value => 'bar baz')
27
+ param = URLQueryParam.new(:name => name, :value => 'bar baz')
26
28
 
27
29
  param.to_s.should == "foo=bar%20baz"
28
30
  end
data/spec/url_spec.rb CHANGED
@@ -21,17 +21,22 @@ describe URL do
21
21
  :fragment => fragment
22
22
  )
23
23
 
24
- @url = URL.create(
25
- :scheme => {:name => scheme},
26
- :host_name => {:address => host_name},
27
- :port => {:number => port},
24
+ @url = URL.new(
25
+ :scheme => URLScheme.first_or_create(:name => scheme),
26
+ :host_name => HostName.first_or_create(:address => host_name),
27
+ :port => TCPPort.first_or_create(:number => port),
28
28
  :path => path,
29
- :fragment => fragment,
30
- :query_params => [{
31
- :name => query_params.keys[0],
32
- :value => query_params.values[0]
33
- }]
29
+ :fragment => fragment
30
+ )
31
+
32
+ @url.query_params.new(
33
+ :name => URLQueryParamName.first_or_create(
34
+ :name => query_params.keys[0]
35
+ ),
36
+ :value => query_params.values[0]
34
37
  )
38
+
39
+ @url.save
35
40
  end
36
41
 
37
42
  it "should have a host String" do
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ronin
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: 6
5
- version: 1.1.0.rc3
4
+ prerelease:
5
+ version: 1.1.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Postmodern
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-06-07 00:00:00 Z
13
+ date: 2011-07-04 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: dm-sqlite-adapter
@@ -171,7 +171,7 @@ dependencies:
171
171
  requirements:
172
172
  - - ~>
173
173
  - !ruby/object:Gem::Version
174
- version: 0.3.0.rc1
174
+ version: "0.3"
175
175
  type: :runtime
176
176
  prerelease: false
177
177
  version_requirements: *id014
@@ -284,7 +284,7 @@ dependencies:
284
284
  requirements:
285
285
  - - ~>
286
286
  - !ruby/object:Gem::Version
287
- version: 0.2.0.rc2
287
+ version: "0.2"
288
288
  type: :runtime
289
289
  prerelease: false
290
290
  version_requirements: *id024
@@ -393,35 +393,8 @@ files:
393
393
  - lib/ronin/database/exceptions/invalid_config.rb
394
394
  - lib/ronin/database/exceptions/unknown_repository.rb
395
395
  - lib/ronin/database/migrations.rb
396
- - lib/ronin/database/migrations/add_created_at_column_to_targets_table.rb
397
- - lib/ronin/database/migrations/add_updated_at_column_to_campaigns_table.rb
398
- - lib/ronin/database/migrations/create_addresses_table.rb
399
- - lib/ronin/database/migrations/create_arches_table.rb
400
- - lib/ronin/database/migrations/create_authors_table.rb
401
- - lib/ronin/database/migrations/create_campaigns_table.rb
402
- - lib/ronin/database/migrations/create_countries_table.rb
403
- - lib/ronin/database/migrations/create_credentials_table.rb
404
- - lib/ronin/database/migrations/create_email_addresses_table.rb
405
- - lib/ronin/database/migrations/create_host_name_ip_addresses_table.rb
406
- - lib/ronin/database/migrations/create_ip_address_mac_addresses_table.rb
407
- - lib/ronin/database/migrations/create_licenses_table.rb
408
- - lib/ronin/database/migrations/create_open_ports_table.rb
409
- - lib/ronin/database/migrations/create_organizations_table.rb
410
- - lib/ronin/database/migrations/create_os_guesses_table.rb
411
- - lib/ronin/database/migrations/create_os_table.rb
412
- - lib/ronin/database/migrations/create_passwords_table.rb
413
- - lib/ronin/database/migrations/create_ports_table.rb
414
- - lib/ronin/database/migrations/create_proxies_table.rb
415
- - lib/ronin/database/migrations/create_repositories_table.rb
416
- - lib/ronin/database/migrations/create_script_paths_table.rb
417
- - lib/ronin/database/migrations/create_services_table.rb
418
- - lib/ronin/database/migrations/create_softwares_table.rb
419
- - lib/ronin/database/migrations/create_targets_table.rb
420
- - lib/ronin/database/migrations/create_url_query_params_table.rb
421
- - lib/ronin/database/migrations/create_url_schemes_table.rb
422
- - lib/ronin/database/migrations/create_urls_table.rb
423
- - lib/ronin/database/migrations/create_user_names_table.rb
424
- - lib/ronin/database/migrations/create_vendors_table.rb
396
+ - lib/ronin/database/migrations/1.0.0.rb
397
+ - lib/ronin/database/migrations/1.1.0.rb
425
398
  - lib/ronin/database/migrations/exceptions.rb
426
399
  - lib/ronin/database/migrations/exceptions/duplicate_migration.rb
427
400
  - lib/ronin/database/migrations/exceptions/unknown_migration.rb
@@ -536,6 +509,7 @@ files:
536
509
  - lib/ronin/ui/shell.rb
537
510
  - lib/ronin/url.rb
538
511
  - lib/ronin/url_query_param.rb
512
+ - lib/ronin/url_query_param_name.rb
539
513
  - lib/ronin/url_scheme.rb
540
514
  - lib/ronin/user_name.rb
541
515
  - lib/ronin/vendor.rb
@@ -660,7 +634,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
660
634
  requirements: []
661
635
 
662
636
  rubyforge_project: ronin
663
- rubygems_version: 1.8.1
637
+ rubygems_version: 1.8.5
664
638
  signing_key:
665
639
  specification_version: 3
666
640
  summary: A Ruby platform for exploit development and security research.
@@ -1,48 +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_targets_table'
21
- require 'ronin/database/migrations/migrations'
22
- require 'ronin/campaign'
23
- require 'ronin/target'
24
-
25
- module Ronin
26
- module Database
27
- module Migrations
28
- migration(
29
- :add_created_at_column_to_targets_table,
30
- :needs => :create_targets_table
31
- ) do
32
- up do
33
- modify_table :ronin_targets do
34
- add_column :created_at, Time
35
- end
36
-
37
- # set the updated_at column to the created_at of the Campaign
38
- Target.each do |target|
39
- target.update(:created_at => target.campaign.created_at)
40
- end
41
- end
42
-
43
- down do
44
- end
45
- end
46
- end
47
- end
48
- end
@@ -1,47 +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_campaigns_table'
21
- require 'ronin/database/migrations/migrations'
22
- require 'ronin/campaign'
23
-
24
- module Ronin
25
- module Database
26
- module Migrations
27
- migration(
28
- :add_updated_at_column_to_campaigns_table,
29
- :needs => :create_campaigns_table
30
- ) do
31
- up do
32
- modify_table :ronin_campaigns do
33
- add_column :updated_at, Time
34
- end
35
-
36
- # set the updated_at column to created_at
37
- Campaign.each do |campaign|
38
- campaign.update(:updated_at => campaign.created_at)
39
- end
40
- end
41
-
42
- down do
43
- end
44
- end
45
- end
46
- end
47
- end