metasploit-credential 0.14.0 → 0.14.1

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.
@@ -1,7 +1,7 @@
1
1
  FactoryGirl.define do
2
2
  factory :metasploit_credential_core,
3
3
  class: Metasploit::Credential::Core do
4
- ignore do
4
+ transient do
5
5
  origin_factory { generate :metasploit_credential_core_origin_factory }
6
6
  private_factory { generate :metasploit_credential_core_private_factory }
7
7
  realm_factory { generate :metasploit_credential_core_realm_factory }
@@ -34,25 +34,25 @@ FactoryGirl.define do
34
34
  }
35
35
 
36
36
  factory :metasploit_credential_core_import do
37
- ignore do
37
+ transient do
38
38
  origin_factory :metasploit_credential_origin_import
39
39
  end
40
40
  end
41
41
 
42
42
  factory :metasploit_credential_core_manual do
43
- ignore do
43
+ transient do
44
44
  origin_factory :metasploit_credential_origin_manual
45
45
  end
46
46
  end
47
47
 
48
48
  factory :metasploit_credential_core_service do
49
- ignore do
49
+ transient do
50
50
  origin_factory :metasploit_credential_origin_service
51
51
  end
52
52
  end
53
53
 
54
54
  factory :metasploit_credential_core_session do
55
- ignore do
55
+ transient do
56
56
  origin_factory :metasploit_credential_origin_session
57
57
  end
58
58
  end
@@ -1,7 +1,7 @@
1
1
  FactoryGirl.define do
2
2
  factory :metasploit_credential_login,
3
3
  class: Metasploit::Credential::Login do
4
- ignore do
4
+ transient do
5
5
  host {
6
6
  FactoryGirl.build(
7
7
  :mdm_host, workspace: workspace
@@ -1,7 +1,7 @@
1
1
  FactoryGirl.define do
2
2
  factory :metasploit_credential_origin_service,
3
3
  class: Metasploit::Credential::Origin::Service do
4
- ignore do
4
+ transient do
5
5
  module_type { generate :metasploit_credential_origin_service_module_type }
6
6
  reference_name { generate :metasploit_credential_origin_service_reference_name }
7
7
  end
@@ -4,7 +4,7 @@ FactoryGirl.define do
4
4
  # uses its own data sequence to differentiate password hashes from other private data and #type is
5
5
  # automatically set by ActiveRecord because Metasploit::Credential::Password is an STI subclass.
6
6
  class: Metasploit::Credential::Password do
7
- ignore do
7
+ transient do
8
8
  password_data { generate :metasploit_credential_password_data }
9
9
  end
10
10
 
@@ -0,0 +1,11 @@
1
+ FactoryGirl.define do
2
+ klass = Metasploit::Credential::PostgresMD5
3
+
4
+ factory :metasploit_credential_postgres_md5,
5
+ class: klass,
6
+ parent: :metasploit_credential_replayable_hash do
7
+ data {
8
+ "md5#{SecureRandom.hex(16)}"
9
+ }
10
+ end
11
+ end
@@ -1,7 +1,7 @@
1
1
  FactoryGirl.define do
2
2
  factory :metasploit_credential_public,
3
3
  class: Metasploit::Credential::Username do
4
- ignore do
4
+ transient do
5
5
  public_factory { [
6
6
  :metasploit_credential_username,
7
7
  :metasploit_credential_blank_username
@@ -1,7 +1,7 @@
1
1
  FactoryGirl.define do
2
2
  factory :metasploit_credential_ssh_key,
3
3
  class: Metasploit::Credential::SSHKey do
4
- ignore do
4
+ transient do
5
5
  key_type { generate :metasploit_credential_ssh_key_key_type }
6
6
  # key size tuned for speed. DO NOT use for production, it is below current recommended key size of 2048
7
7
  key_size { 512 }
@@ -13,13 +13,13 @@ FactoryGirl.define do
13
13
  }
14
14
 
15
15
  factory :metasploit_credential_dsa_key do
16
- ignore do
16
+ transient do
17
17
  key_type :DSA
18
18
  end
19
19
  end
20
20
 
21
21
  factory :metasploit_credential_rsa_key do
22
- ignore do
22
+ transient do
23
23
  key_type :RSA
24
24
  end
25
25
  end
@@ -0,0 +1,124 @@
1
+ require 'spec_helper'
2
+
3
+ describe Metasploit::Credential::PostgresMD5 do
4
+ it_should_behave_like 'Metasploit::Concern.run'
5
+
6
+ it { should be_a Metasploit::Credential::ReplayableHash }
7
+
8
+ context 'CONSTANTS' do
9
+ context 'DATA_REGEXP' do
10
+ subject(:data_regexp) do
11
+ described_class::DATA_REGEXP
12
+ end
13
+
14
+ it 'is valid if the string is md5 and 32 hex chars' do
15
+ hash = "md5#{SecureRandom.hex(16)}"
16
+ expect(data_regexp).to match(hash)
17
+ end
18
+
19
+ it 'is not valid if it does not start with md5' do
20
+ expect(data_regexp).not_to match(SecureRandom.hex(16))
21
+ end
22
+
23
+ it 'is not valid for an invalid length' do
24
+ expect(data_regexp).not_to match(SecureRandom.hex(6))
25
+ end
26
+
27
+ it 'is not valid if it is not hex chars after the md5 tag' do
28
+ bogus = "md5#{SecureRandom.hex(15)}jk"
29
+ expect(data_regexp).not_to match(bogus)
30
+ end
31
+
32
+ end
33
+ end
34
+
35
+ context 'callbacks' do
36
+ context 'before_validation' do
37
+ context '#data' do
38
+ subject(:data) do
39
+ postgres_md5.data
40
+ end
41
+
42
+ let(:postgres_md5) do
43
+ FactoryGirl.build(
44
+ :metasploit_credential_postgres_md5,
45
+ data: given_data
46
+ )
47
+ end
48
+
49
+ before(:each) do
50
+ postgres_md5.valid?
51
+ end
52
+
53
+ context 'with nil' do
54
+ let(:given_data) do
55
+ nil
56
+ end
57
+
58
+ it { should be_nil }
59
+ end
60
+
61
+ context 'with upper case characters' do
62
+ let(:given_data) do
63
+ 'ABCDEF1234567890'
64
+ end
65
+
66
+ it 'makes them lower case' do
67
+ expect(data).to eq(given_data.downcase)
68
+ end
69
+ end
70
+
71
+ context 'with all lower case characters' do
72
+ let(:given_data) do
73
+ 'abcdef1234567890'
74
+ end
75
+
76
+ it 'does not change the case' do
77
+ expect(data).to eq(given_data)
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
83
+
84
+ context 'factories' do
85
+ context 'metasploit_credential_ntlm_hash' do
86
+ subject(:metasploit_credential_postgres_md5) do
87
+ FactoryGirl.build(:metasploit_credential_postgres_md5)
88
+ end
89
+
90
+ it { should be_valid }
91
+ end
92
+ end
93
+
94
+ context 'validations' do
95
+ context '#data_format' do
96
+ subject(:data_errors) do
97
+ postgres_md5.errors[:data]
98
+ end
99
+
100
+ let(:data) { "md5#{SecureRandom.hex(16)}" }
101
+
102
+ let(:postgres_md5) do
103
+ FactoryGirl.build(
104
+ :metasploit_credential_postgres_md5,
105
+ data: data
106
+ )
107
+ end
108
+
109
+ context 'with a valid postgres md5 hash' do
110
+ it 'should be valid' do
111
+ expect(postgres_md5).to be_valid
112
+ end
113
+ end
114
+
115
+ context 'with an invalid postgres md5 hash' do
116
+ let(:data) { "invalidstring" }
117
+ it 'should not be valid' do
118
+ expect(postgres_md5).to_not be_valid
119
+ end
120
+ end
121
+ end
122
+ end
123
+
124
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metasploit-credential
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.14.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luke Imhoff
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-02-18 00:00:00.000000000 Z
12
+ date: 2015-03-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: metasploit-concern
@@ -143,6 +143,7 @@ files:
143
143
  - app/models/metasploit/credential/origin/session.rb
144
144
  - app/models/metasploit/credential/password.rb
145
145
  - app/models/metasploit/credential/password_hash.rb
146
+ - app/models/metasploit/credential/postgres_md5.rb
146
147
  - app/models/metasploit/credential/private.rb
147
148
  - app/models/metasploit/credential/public.rb
148
149
  - app/models/metasploit/credential/realm.rb
@@ -193,6 +194,7 @@ files:
193
194
  - lib/metasploit/credential/origin.rb
194
195
  - lib/metasploit/credential/text.rb
195
196
  - lib/metasploit/credential/version.rb
197
+ - lib/metasploit/credential/version.rb.orig
196
198
  - lib/tasks/databases.rake
197
199
  - lib/tasks/yard.rake
198
200
  - spec/dummy/README.rdoc
@@ -221,6 +223,7 @@ files:
221
223
  - spec/dummy/config/locales/en.yml
222
224
  - spec/dummy/config/routes.rb
223
225
  - spec/dummy/db/structure.sql
226
+ - spec/dummy/db/structure.sql.orig
224
227
  - spec/dummy/public/404.html
225
228
  - spec/dummy/public/422.html
226
229
  - spec/dummy/public/500.html
@@ -240,6 +243,7 @@ files:
240
243
  - spec/factories/metasploit/credential/origin/sessions.rb
241
244
  - spec/factories/metasploit/credential/password_hashes.rb
242
245
  - spec/factories/metasploit/credential/passwords.rb
246
+ - spec/factories/metasploit/credential/postgres_md5.rb
243
247
  - spec/factories/metasploit/credential/privates.rb
244
248
  - spec/factories/metasploit/credential/publics.rb
245
249
  - spec/factories/metasploit/credential/realms.rb
@@ -274,6 +278,7 @@ files:
274
278
  - spec/models/metasploit/credential/origin/session_spec.rb
275
279
  - spec/models/metasploit/credential/password_hash_spec.rb
276
280
  - spec/models/metasploit/credential/password_spec.rb
281
+ - spec/models/metasploit/credential/postgres_md5_spec.rb
277
282
  - spec/models/metasploit/credential/private_spec.rb
278
283
  - spec/models/metasploit/credential/public_spec.rb
279
284
  - spec/models/metasploit/credential/realm_spec.rb
@@ -341,6 +346,7 @@ test_files:
341
346
  - spec/dummy/config/locales/en.yml
342
347
  - spec/dummy/config/routes.rb
343
348
  - spec/dummy/db/structure.sql
349
+ - spec/dummy/db/structure.sql.orig
344
350
  - spec/dummy/public/404.html
345
351
  - spec/dummy/public/422.html
346
352
  - spec/dummy/public/500.html
@@ -360,6 +366,7 @@ test_files:
360
366
  - spec/factories/metasploit/credential/origin/sessions.rb
361
367
  - spec/factories/metasploit/credential/password_hashes.rb
362
368
  - spec/factories/metasploit/credential/passwords.rb
369
+ - spec/factories/metasploit/credential/postgres_md5.rb
363
370
  - spec/factories/metasploit/credential/privates.rb
364
371
  - spec/factories/metasploit/credential/publics.rb
365
372
  - spec/factories/metasploit/credential/realms.rb
@@ -394,6 +401,7 @@ test_files:
394
401
  - spec/models/metasploit/credential/origin/session_spec.rb
395
402
  - spec/models/metasploit/credential/password_hash_spec.rb
396
403
  - spec/models/metasploit/credential/password_spec.rb
404
+ - spec/models/metasploit/credential/postgres_md5_spec.rb
397
405
  - spec/models/metasploit/credential/private_spec.rb
398
406
  - spec/models/metasploit/credential/public_spec.rb
399
407
  - spec/models/metasploit/credential/realm_spec.rb