|
|
|
@ -185,7 +185,8 @@ def get_response(request_future, error_type, social_network, verbose=False, colo
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def sherlock(username, site_data, verbose=False, tor=False, unique_tor=False,
|
|
|
|
|
proxy=None, print_found_only=False, timeout=None, color=True):
|
|
|
|
|
proxy=None, print_found_only=False, timeout=None, color=True,
|
|
|
|
|
print_output=True):
|
|
|
|
|
"""Run Sherlock Analysis.
|
|
|
|
|
|
|
|
|
|
Checks for existence of username on various social media sites.
|
|
|
|
@ -198,9 +199,12 @@ def sherlock(username, site_data, verbose=False, tor=False, unique_tor=False,
|
|
|
|
|
tor -- Boolean indicating whether to use a tor circuit for the requests.
|
|
|
|
|
unique_tor -- Boolean indicating whether to use a new tor circuit for each request.
|
|
|
|
|
proxy -- String indicating the proxy URL
|
|
|
|
|
print_found_only -- Boolean indicating whether to only print found sites.
|
|
|
|
|
timeout -- Time in seconds to wait before timing out request.
|
|
|
|
|
Default is no timeout.
|
|
|
|
|
color -- Boolean indicating whether to color terminal output
|
|
|
|
|
print_output -- Boolean indicating whether the output should be
|
|
|
|
|
printed. Default is True.
|
|
|
|
|
|
|
|
|
|
Return Value:
|
|
|
|
|
Dictionary containing results from report. Key of dictionary is the name
|
|
|
|
@ -215,7 +219,8 @@ def sherlock(username, site_data, verbose=False, tor=False, unique_tor=False,
|
|
|
|
|
response_text: Text that came back from request. May be None if
|
|
|
|
|
there was an HTTP error when checking for existence.
|
|
|
|
|
"""
|
|
|
|
|
print_info("Checking username", username, color)
|
|
|
|
|
if print_output == True:
|
|
|
|
|
print_info("Checking username", username, color)
|
|
|
|
|
|
|
|
|
|
# Create session based on request methodology
|
|
|
|
|
if tor or unique_tor:
|
|
|
|
@ -265,7 +270,7 @@ def sherlock(username, site_data, verbose=False, tor=False, unique_tor=False,
|
|
|
|
|
regex_check = net_info.get("regexCheck")
|
|
|
|
|
if regex_check and re.search(regex_check, username) is None:
|
|
|
|
|
# No need to do the check at the site: this user name is not allowed.
|
|
|
|
|
if not print_found_only:
|
|
|
|
|
if (print_output == True) and not print_found_only:
|
|
|
|
|
print_invalid(social_network, "Illegal Username Format For This Site!", color)
|
|
|
|
|
|
|
|
|
|
results_site['status'] = QueryResult(QueryStatus.ILLEGAL)
|
|
|
|
@ -398,20 +403,22 @@ def sherlock(username, site_data, verbose=False, tor=False, unique_tor=False,
|
|
|
|
|
f"site '{social_network}'")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if result.status == QueryStatus.CLAIMED:
|
|
|
|
|
print_found(social_network, url, response_time, verbose, color)
|
|
|
|
|
elif result.status == QueryStatus.AVAILABLE:
|
|
|
|
|
if not print_found_only:
|
|
|
|
|
print_not_found(social_network, response_time, verbose, color)
|
|
|
|
|
elif result.status == QueryStatus.UNKNOWN:
|
|
|
|
|
print_error(social_network, expection_text, error_text, "", verbose, color)
|
|
|
|
|
elif result.status == QueryStatus.ILLEGAL:
|
|
|
|
|
if not print_found_only:
|
|
|
|
|
print_invalid(social_network, "Illegal Username Format For This Site!", color)
|
|
|
|
|
else:
|
|
|
|
|
#It should be impossible to ever get here...
|
|
|
|
|
raise ValueError(f"Unknown Query Status '{str(result.status)}' for "
|
|
|
|
|
f"site '{social_network}'")
|
|
|
|
|
if print_output == True:
|
|
|
|
|
#Output to the terminal is desired.
|
|
|
|
|
if result.status == QueryStatus.CLAIMED:
|
|
|
|
|
print_found(social_network, url, response_time, verbose, color)
|
|
|
|
|
elif result.status == QueryStatus.AVAILABLE:
|
|
|
|
|
if not print_found_only:
|
|
|
|
|
print_not_found(social_network, response_time, verbose, color)
|
|
|
|
|
elif result.status == QueryStatus.UNKNOWN:
|
|
|
|
|
print_error(social_network, expection_text, error_text, "", verbose, color)
|
|
|
|
|
elif result.status == QueryStatus.ILLEGAL:
|
|
|
|
|
if not print_found_only:
|
|
|
|
|
print_invalid(social_network, "Illegal Username Format For This Site!", color)
|
|
|
|
|
else:
|
|
|
|
|
#It should be impossible to ever get here...
|
|
|
|
|
raise ValueError(f"Unknown Query Status '{str(result.status)}' for "
|
|
|
|
|
f"site '{social_network}'")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Save status of request
|
|
|
|
|