MCPcopy Index your code
hub / github.com/XiaoliChan/LDAPShell / ldap_Shell

Class ldap_Shell

ldapshell.py:15–66  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13#from impacket.examples.ldap_shell import LdapShell
14
15class ldap_Shell:
16 def __init__(self, domain, baseDN, username, password, address, options):
17 self.domain = domain
18 self.baseDN = baseDN
19 self.username = username
20 self.password = password
21 self.lmhash = ''
22 self.nthash = ''
23 self.address = address
24 self.ldaps_flag = ''
25
26 if options.ldaps == True:
27 self.ldaps_flag = True
28
29 if options.hashes is not None:
30 self.lmhash, self.nthash = options.hashes.split(':')
31 if self.lmhash == "":
32 self.lmhash = "aad3b435b51404eeaad3b435b51404ee"
33
34 def ldap_connection(self, tls_version):
35 user_withDomain = '%s\\%s' % (self.domain, self.username)
36 if tls_version is not None:
37 use_ssl = True
38 port = 636
39 tls = ldap3.Tls(validate=ssl.CERT_NONE, version=tls_version)
40 else:
41 use_ssl = False
42 port = 389
43 tls = None
44 ldap_server = ldap3.Server(self.address, get_info=ldap3.ALL, port=port, use_ssl=use_ssl, tls=tls)
45 if self.nthash != "":
46 ldap_session = ldap3.Connection(ldap_server, user=user_withDomain, password=self.lmhash + ":" + self.nthash, authentication=ldap3.NTLM, auto_bind=True)
47 else:
48 ldap_session = ldap3.Connection(ldap_server, user=user_withDomain, password=self.password, authentication=ldap3.NTLM, auto_bind=True)
49 return ldap_server, ldap_session
50
51 # For ldap3 with tls mode(only for ldap3).
52 # Picked function from rbcd.py
53 def ldap_sessions(self):
54 if self.ldaps_flag == True:
55 try:
56 return self.ldap_connection(tls_version=ssl.PROTOCOL_TLSv1_2)
57 except ldap3.core.exceptions.LDAPSocketOpenError:
58 return self.ldap_connection(tls_version=ssl.PROTOCOL_TLSv1)
59 else:
60 return self.ldap_connection(tls_version=None)
61
62 def start_LDAPShell(self, ldap_server, ldap_session):
63 domainDumpConfig = ldapdomaindump.domainDumpConfig()
64 domainDumper = ldapdomaindump.domainDumper(ldap_server, ldap_session, domainDumpConfig)
65 ldap_shell = LdapShell(self.baseDN, domainDumper, ldap_session)
66 ldap_shell.cmdloop()
67
68if __name__ == '__main__':
69 logger.init()

Callers 1

ldapshell.pyFile · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected