CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
rapid7

CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!

GitHub Repository: rapid7/metasploit-framework
Path: blob/master/lib/metasploit/framework/login_scanner/afp.rb
Views: 1904
1
require 'metasploit/framework/tcp/client'
2
require 'metasploit/framework/afp/client'
3
require 'metasploit/framework/login_scanner/base'
4
require 'metasploit/framework/login_scanner/rex_socket'
5
6
module Metasploit
7
module Framework
8
module LoginScanner
9
10
# This is the LoginScanner class for dealing with Apple Filing
11
# Protocol.
12
class AFP
13
include Metasploit::Framework::LoginScanner::Base
14
include Metasploit::Framework::LoginScanner::RexSocket
15
include Metasploit::Framework::Tcp::Client
16
include Metasploit::Framework::AFP::Client
17
18
DEFAULT_PORT = 548
19
LIKELY_PORTS = [ DEFAULT_PORT ]
20
LIKELY_SERVICE_NAMES = [ "afp" ]
21
PRIVATE_TYPES = [ :password ]
22
REALM_KEY = nil
23
24
# @!attribute login_timeout
25
# @return [Integer] Number of seconds to wait before giving up
26
attr_accessor :login_timeout
27
28
def attempt_login(credential)
29
begin
30
connect
31
rescue Rex::ConnectionError, EOFError, Timeout::Error
32
status = Metasploit::Model::Login::Status::UNABLE_TO_CONNECT
33
else
34
begin
35
success = login(credential.public, credential.private)
36
rescue RuntimeError => e
37
return {:status => Metasploit::Model::Login::Status::UNABLE_TO_CONNECT, :proof => e.message}
38
end
39
40
status = (success == true) ? Metasploit::Model::Login::Status::SUCCESSFUL : Metasploit::Model::Login::Status::INCORRECT
41
end
42
43
result = Result.new(credential: credential, status: status)
44
result.host = host
45
result.port = port
46
result.protocol = 'tcp'
47
result.service_name = 'afp'
48
result
49
end
50
51
def set_sane_defaults
52
self.connection_timeout ||= 30
53
self.port ||= DEFAULT_PORT
54
self.max_send_size ||= 0
55
self.send_delay ||= 0
56
end
57
end
58
end
59
end
60
end
61
62