def setRPCOptions(self, rpc_mode, rpc_use_smb, auth_smb, hashes_smb, rpc_smb_port): self.rpc_mode = rpc_mode self.rpc_use_smb = rpc_use_smb self.smbdomain, self.smbuser, self.smbpass = parse_credentials(auth_smb) if hashes_smb is not None: self.smblmhash, self.smbnthash = hashes_smb.split(':') else: self.smblmhash = '' self.smbnthash = '' self.rpc_smb_port = rpc_smb_port
def test_parse_credentials(self): # Parse credentials returns a tuple with: domain, username, password creds = { "": ("", "", ""), "UserName": ("", "UserName", ""), "UserName:Password": ("", "UserName", "Password"), "UserName:Password:123": ("", "UserName", "Password:123"), "DOMAIN/UserName": ("DOMAIN", "UserName", ""), "DOMAIN/UserName:Password": ("DOMAIN", "UserName", "Password"), "DOMAIN/UserName:Password/123": ("DOMAIN", "UserName", "Password/123"), } for cred, result in creds.items(): self.assertTupleEqual(parse_credentials(cred), result)
def parse_identity(args): domain, username, password = utils.parse_credentials(args.identity) if domain == '': logging.critical('Domain should be specified!') sys.exit(1) if password == '' and username != '' and args.hashes is None and args.no_pass is False and args.aesKey is None: from getpass import getpass logging.info("No credentials supplied, supply password") password = getpass("Password:") if args.aesKey is not None: args.k = True if args.hashes is not None: lmhash, nthash = args.hashes.split(':') else: lmhash = '' nthash = '' return domain, username, password, lmhash, nthash
parser.add_argument('credentials', action='store', help='domain/username[:password]. Valid domain credentials to use ' 'for grabbing targetUser\'s PAC') parser.add_argument('-targetUser', action='store', required=True, help='the target user to retrieve the PAC of') parser.add_argument('-debug', action='store_true', help='Turn DEBUG output ON') group = parser.add_argument_group('authentication') group.add_argument('-hashes', action="store", metavar = "LMHASH:NTHASH", help='NTLM hashes, format is LMHASH:NTHASH') if len(sys.argv)==1: parser.print_help() sys.exit(1) options = parser.parse_args() domain, username, password = parse_credentials(options.credentials) if domain is None: domain = '' if password == '' and username != '' and options.hashes is None: from getpass import getpass password = getpass("Password:") if options.debug is True: logging.getLogger().setLevel(logging.DEBUG) # Print the Library's installation path logging.debug(version.getInstallationPath()) else: logging.getLogger().setLevel(logging.INFO)
'if -target-domain is specified.') if len(sys.argv)==1: parser.print_help() sys.exit(1) options = parser.parse_args() if options.debug is True: logging.getLogger().setLevel(logging.DEBUG) # Print the Library's installation path logging.debug(version.getInstallationPath()) else: logging.getLogger().setLevel(logging.INFO) userDomain, username, password = parse_credentials(options.target) if userDomain == '': logging.critical('userDomain should be specified!') sys.exit(1) if options.target_domain: targetDomain = options.target_domain else: targetDomain = userDomain if password == '' and username != '' and options.hashes is None and options.no_pass is False and options.aesKey is None: from getpass import getpass password = getpass("Password:") if options.aesKey is not None:
help='don\'t ask for passwords') if len(sys.argv) == 1: parser.print_help() sys.exit(1) options = parser.parse_args() if options.debug is True: logging.getLogger().setLevel(logging.DEBUG) # Print the Library's installation path logging.debug(version.getInstallationPath()) else: logging.getLogger().setLevel(logging.INFO) rpcdomain, rpcuser, rpcpass = parse_credentials(options.auth_rpc) transportdomain, transportuser, transportpass = parse_credentials( options.auth_transport) if options.brute_opnums and options.brute_versions: logging.error("Specify only -brute-opnums or -brute-versions") sys.exit(1) if rpcdomain is None: rpcdomain = '' if transportdomain is None: transportdomain = '' if rpcpass == '' and rpcuser != '' and options.hashes_rpc is None and options.no_pass is False: from getpass import getpass