@@ -49,30 +49,54 @@ def decrypt(hash)
49
49
password = ::Rex ::Text . to_utf8 ( password )
50
50
51
51
user , pass = password . scan ( /[[:print:]]+/ )
52
+ cred_opts = { }
52
53
if pass . nil? or pass . empty?
53
54
print_status ( "Username found: #{ user } , but no password" )
54
- pass = ''
55
+ cred_opts . merge! ( user : user )
55
56
else
56
57
print_good ( "Decrypted Username #{ user } Password: #{ pass } " )
58
+ cred_opts . merge! ( user : user , password : pass )
57
59
end
58
60
59
- store_creds ( user , pass )
61
+ cred_opts . merge! (
62
+ ip : client . sock . peerhost ,
63
+ port : 5222 ,
64
+ service_name : 'spark'
65
+ )
66
+
67
+ report_cred ( cred_opts )
60
68
end
61
69
62
- def store_creds ( user , pass )
63
- if db
64
- report_auth_info (
65
- :host => client . sock . peerhost ,
66
- :port => 5222 ,
67
- :ptype => 'password' ,
68
- :sname => 'spark' ,
69
- :user => user ,
70
- :pass => pass ,
71
- :duplicate_ok => true ,
72
- :active => true
70
+ def report_cred ( opts )
71
+ service_data = {
72
+ address : opts [ :ip ] ,
73
+ port : opts [ :port ] ,
74
+ service_name : opts [ :service_name ] ,
75
+ protocol : 'tcp' ,
76
+ workspace_id : myworkspace_id
77
+ }
78
+
79
+ credential_data = {
80
+ module_fullname : fullname ,
81
+ post_reference_name : self . refname ,
82
+ session_id : session_db_id ,
83
+ origin_type : :session ,
84
+ username : opts [ :user ] ,
85
+ private_type : :password
86
+ } . merge ( service_data )
87
+
88
+ if opts [ :password ]
89
+ credential_data . merge! (
90
+ private_data : opts [ :password ] ,
73
91
)
74
- print_status ( "Loot stored in the db" )
75
92
end
93
+
94
+ login_data = {
95
+ core : create_credential ( credential_data ) ,
96
+ status : Metasploit ::Model ::Login ::Status ::UNTRIED ,
97
+ } . merge ( service_data )
98
+
99
+ create_credential_login ( login_data )
76
100
end
77
101
78
102
# main control method
0 commit comments