ronin 1.1.0.rc3 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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