diff --git a/README.md b/README.md index c6fc11fa..57068d30 100644 --- a/README.md +++ b/README.md @@ -161,7 +161,6 @@ Here are some things we would appreciate your help on: - Addition of new site support ยน - Bringing back site support of [sites that have been removed](removed_sites.md) in the past due to false positives - [1] Please look at the Wiki entry on [adding new sites](https://github.com/sherlock-project/sherlock/wiki/Adding-Sites-To-Sherlock) to understand the issues. diff --git a/removed_sites.json b/removed_sites.json index 94953c07..1070391c 100644 --- a/removed_sites.json +++ b/removed_sites.json @@ -519,14 +519,6 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis7" }, - "Ebay": { - "errorMsg": "eBay Profile - error", - "errorType": "message", - "url": "https://www.ebay.com/usr/{}", - "urlMain": "https://www.ebay.com/", - "username_claimed": "blue", - "username_unclaimed": "noonewouldeverusethis7" - }, "GDProfiles": { "errorType": "status_code", "url": "https://gdprofiles.com/{}", @@ -651,5 +643,14 @@ "urlMain": "https://plug.dj/", "username_claimed": "plug-dj-rock", "username_unclaimed": "noonewouldeverusethis7" + }, + "Facenama": { + "errorType": "response_url", + "errorUrl": "https://facenama.com/404.html", + "regexCheck": "^[-a-zA-Z0-9_]+$", + "url": "https://facenama.com/{}", + "urlMain": "https://facenama.com/", + "username_claimed": "blue", + "username_unclaimed": "noonewouldeverusethis77" } } diff --git a/removed_sites.md b/removed_sites.md index 49af1bce..20283dc1 100644 --- a/removed_sites.md +++ b/removed_sites.md @@ -1027,20 +1027,6 @@ As of 2021-01-13, Travellerspoint returns false positives }, ``` -## Ebay - -As of 2021-01-15, Ebay seems to be very laggy and take too long to return a response. -``` - "Ebay": { - "errorMsg": "eBay Profile - error", - "errorType": "message", - "url": "https://www.ebay.com/usr/{}", - "urlMain": "https://www.ebay.com/", - "username_claimed": "blue", - "username_unclaimed": "noonewouldeverusethis7" - }, -``` - ## GDProfiles As of 2021-06-27, GDProfiles takes way too long to respond. Must be an issue on their side. @@ -1264,3 +1250,18 @@ As of 2021-12-02, plug.dj is returning false positives because the service is do "username_unclaimed": "noonewouldeverusethis7" } ``` + +## Facenama + +As of 2022-02-6, Facenama seems to be down their rebuilding their site +``` + "Facenama": { + "errorType": "response_url", + "errorUrl": "https://facenama.com/404.html", + "regexCheck": "^[-a-zA-Z0-9_]+$", + "url": "https://facenama.com/{}", + "urlMain": "https://facenama.com/", + "username_claimed": "blue", + "username_unclaimed": "noonewouldeverusethis77" + }, +``` diff --git a/sherlock/__init__.py b/sherlock/__init__.py index b0894c8b..219dcaec 100644 --- a/sherlock/__init__.py +++ b/sherlock/__init__.py @@ -1,5 +1,6 @@ -"""Sherlock Module +""" Sherlock Module This module contains the main logic to search for usernames at social networks. + """ diff --git a/sherlock/__main__.py b/sherlock/__main__.py index 91140be5..c66a533e 100644 --- a/sherlock/__main__.py +++ b/sherlock/__main__.py @@ -20,7 +20,8 @@ if __name__ == "__main__": major = sys.version_info[0] minor = sys.version_info[1] - python_version = str(sys.version_info[0])+"."+str(sys.version_info[1])+"."+str(sys.version_info[2]) + python_version = str( + sys.version_info[0])+"."+str(sys.version_info[1])+"."+str(sys.version_info[2]) if major != 3 or major == 3 and minor < 6: print("Sherlock requires Python 3.6+\nYou are using Python %s, which is not supported by Sherlock" % (python_version)) diff --git a/sherlock/notify.py b/sherlock/notify.py index 79dc9b08..5c4f1b3b 100644 --- a/sherlock/notify.py +++ b/sherlock/notify.py @@ -4,7 +4,7 @@ This module defines the objects for notifying the caller about the results of queries. """ from result import QueryStatus -from colorama import Fore, Style, init +from colorama import Fore, Style class QueryNotify: @@ -110,7 +110,7 @@ class QueryNotifyPrint(QueryNotify): Query notify class that prints results. """ - def __init__(self, result=None, verbose=False, color=True, print_all=False): + def __init__(self, result=None, verbose=False, print_all=False): """Create Query Notify Print Object. Contains information about a specific method of notifying the results @@ -122,19 +122,14 @@ class QueryNotifyPrint(QueryNotify): results for this query. verbose -- Boolean indicating whether to give verbose output. print_all -- Boolean indicating whether to only print all sites, including not found. - color -- Boolean indicating whether to color terminal output Return Value: Nothing. """ - # Colorama module's initialization. - init(autoreset=True) - super().__init__(result) self.verbose = verbose self.print_all = print_all - self.color = color return @@ -153,14 +148,40 @@ class QueryNotifyPrint(QueryNotify): """ title = "Checking username" - if self.color: - print(Style.BRIGHT + Fore.GREEN + "[" + - Fore.YELLOW + "*" + - Fore.GREEN + f"] {title}" + - Fore.WHITE + f" {message}" + - Fore.GREEN + " on:") - else: - print(f"[*] {title} {message} on:") + + print(Style.BRIGHT + Fore.GREEN + "[" + + Fore.YELLOW + "*" + + Fore.GREEN + f"] {title}" + + Fore.WHITE + f" {message}" + + Fore.GREEN + " on:") + # An empty line between first line and the result(more clear output) + print('\r') + + return + + def finish(self, message="The processing has been finished."): + """Notify Start. + + Will print the last line to the standard output. + + Keyword Arguments: + self -- This object. + message -- The last phrase. + + Return Value: + Nothing. + """ + + title = "End" + + print('\r') # An empty line between last line of main output and last line(more clear output) + print(Style.BRIGHT + Fore.GREEN + "[" + + Fore.YELLOW + "!" + + Fore.GREEN + f"] {title}" + + Fore.GREEN + ": " + + Fore.WHITE + f" {message}" ) + + # An empty line between first line and the result(more clear output) # return @@ -186,53 +207,41 @@ class QueryNotifyPrint(QueryNotify): # Output to the terminal is desired. if result.status == QueryStatus.CLAIMED: - if self.color: - print((Style.BRIGHT + Fore.WHITE + "[" + - Fore.GREEN + "+" + - Fore.WHITE + "]" + - response_time_text + - Fore.GREEN + - f" {self.result.site_name}: " + - Style.RESET_ALL + - f"{self.result.site_url_user}")) - else: - print(f"[+]{response_time_text} {self.result.site_name}: {self.result.site_url_user}") + print(Style.BRIGHT + Fore.WHITE + "[" + + Fore.GREEN + "+" + + Fore.WHITE + "]" + + response_time_text + + Fore.GREEN + + f" {self.result.site_name}: " + + Style.RESET_ALL + + f"{self.result.site_url_user}") elif result.status == QueryStatus.AVAILABLE: if self.print_all: - if self.color: - print((Style.BRIGHT + Fore.WHITE + "[" + - Fore.RED + "-" + - Fore.WHITE + "]" + - response_time_text + - Fore.GREEN + f" {self.result.site_name}:" + - Fore.YELLOW + " Not Found!")) - else: - print(f"[-]{response_time_text} {self.result.site_name}: Not Found!") + print(Style.BRIGHT + Fore.WHITE + "[" + + Fore.RED + "-" + + Fore.WHITE + "]" + + response_time_text + + Fore.GREEN + f" {self.result.site_name}:" + + Fore.YELLOW + " Not Found!") elif result.status == QueryStatus.UNKNOWN: if self.print_all: - if self.color: - print((Style.BRIGHT + Fore.WHITE + "[" + - Fore.RED + "-" + - Fore.WHITE + "]" + - Fore.GREEN + f" {self.result.site_name}:" + - Fore.RED + f" {self.result.context}" + - Fore.YELLOW + ' ')) - else: - print(f"[-] {self.result.site_name}: {self.result.context} ") + print(Style.BRIGHT + Fore.WHITE + "[" + + Fore.RED + "-" + + Fore.WHITE + "]" + + Fore.GREEN + f" {self.result.site_name}:" + + Fore.RED + f" {self.result.context}" + + Fore.YELLOW + f" ") elif result.status == QueryStatus.ILLEGAL: if self.print_all: msg = "Illegal Username Format For This Site!" - if self.color: - print((Style.BRIGHT + Fore.WHITE + "[" + - Fore.RED + "-" + - Fore.WHITE + "]" + - Fore.GREEN + f" {self.result.site_name}:" + - Fore.YELLOW + f" {msg}")) - else: - print(f"[-] {self.result.site_name} {msg}") + print(Style.BRIGHT + Fore.WHITE + "[" + + Fore.RED + "-" + + Fore.WHITE + "]" + + Fore.GREEN + f" {self.result.site_name}:" + + Fore.YELLOW + f" {msg}") else: # It should be impossible to ever get here... diff --git a/sherlock/resources/data.json b/sherlock/resources/data.json index 763b1989..531cc3c6 100644 --- a/sherlock/resources/data.json +++ b/sherlock/resources/data.json @@ -43,6 +43,13 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis7" }, + "Airbit": { + "errorType": "status_code", + "url": "https://airbit.com/{}", + "urlMain": "https://airbit.com/", + "username_claimed": "airbit", + "username_unclaimed": "noonewouldeverusethis7" + }, "Airliners": { "errorType": "status_code", "url": "https://www.airliners.net/user/{}/profile/photos", @@ -158,6 +165,13 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis7" }, + "Autofrage": { + "errorType": "status_code", + "url": "https://www.autofrage.net/nutzer/{}", + "urlMain": "https://www.autofrage.net/", + "username_claimed": "autofrage", + "username_unclaimed": "noonewouldeverusethis7" + }, "Avizo": { "errorType": "response_url", "errorUrl": "https://www.avizo.cz/", @@ -204,6 +218,20 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis7" }, + "Bezuzyteczna": { + "errorType": "status_code", + "url": "https://bezuzyteczna.pl/uzytkownicy/{}", + "urlMain": "https://bezuzyteczna.pl", + "username_claimed": "Jackson", + "username_unclaimed": "ktobysietaknazwalnawb69" + }, + "Bikemap": { + "errorType": "status_code", + "url": "https://www.bikemap.net/en/u/{}/routes/created/", + "urlMain": "https://www.bikemap.net/", + "username_claimed": "bikemap", + "username_unclaimed": "noonewouldeverusethis7" + }, "BinarySearch": { "errorMsg": "{}", "errorType": "message", @@ -214,6 +242,13 @@ "username_claimed": "Eyes_Wide_Shut", "username_unclaimed": "hihowareyou101" }, + "BioHacking": { + "errorType": "status_code", + "url": "https://forum.dangerousthings.com/u/{}", + "urlMain": "https://forum.dangerousthings.com/", + "username_claimed": "blue", + "username_unclaimed": "noonewouldeverusethis7" + }, "BitBucket": { "errorType": "status_code", "regexCheck": "^[a-zA-Z0-9-_]{1,30}$", @@ -339,7 +374,7 @@ "username_unclaimed": "noonewouldeverusethis77777" }, "Chess": { - "errorMsg": "usernameSuggestions", + "errorMsg": "\"valid\": false", "errorType": "message", "regexCheck": "^[a-z1-9]{3,25}$", "url": "https://www.chess.com/member/{}", @@ -363,8 +398,16 @@ "username_claimed": "green", "username_unclaimed": "noonewouldeverusethis7" }, - "Codecademy": { + "Clubhouse": { "errorType": "status_code", + "url": "https://www.clubhouse.com/@{}", + "urlMain": "https://www.clubhouse.com", + "username_claimed": "waniathar", + "username_unclaimed": "noonewouldeverusethis7" + }, + "Codecademy": { + "errorMsg": "This profile could not be found", + "errorType": "message", "url": "https://www.codecademy.com/profiles/{}", "urlMain": "https://www.codecademy.com/", "username_claimed": "blue", @@ -378,6 +421,14 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis7" }, + "Codeforces": { + "errorType": "response_url", + "errorUrl": "https://codeforces.com/", + "url": "https://codeforces.com/profile/{}", + "urlMain": "https://www.codeforces.com/", + "username_claimed": "tourist", + "username_unclaimed": "noonewouldeverusethis789" + }, "Codepen": { "errorType": "status_code", "url": "https://codepen.io/{}", @@ -462,6 +513,13 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis7" }, + "Cryptomator Forum": { + "errorType": "status_code", + "url": "https://community.cryptomator.org/u/{}", + "urlMain": "https://community.cryptomator.org/", + "username_claimed": "michael", + "username_unclaimed": "noonewouldeverusethis7" + }, "DEV Community": { "errorType": "status_code", "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$", @@ -547,6 +605,13 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis7" }, + "Envato Forum": { + "errorType": "status_code", + "url": "https://forums.envato.com/u/{}", + "urlMain": "https://forums.envato.com/", + "username_claimed": "enabled", + "username_unclaimed": "noonewouldeverusethis7" + }, "Etsy": { "errorType": "status_code", "url": "https://www.etsy.com/shop/{}", @@ -585,14 +650,12 @@ "username_claimed": "hackerman", "username_unclaimed": "noonewouldeverusethis7" }, - "Facenama": { - "errorType": "response_url", - "errorUrl": "https://facenama.com/404.html", - "regexCheck": "^[-a-zA-Z0-9_]+$", - "url": "https://facenama.com/{}", - "urlMain": "https://facenama.com/", - "username_claimed": "blue", - "username_unclaimed": "noonewouldeverusethis77" + "Fameswap": { + "errorType": "status_code", + "url": "https://fameswap.com/user/{}", + "urlMain": "https://fameswap.com/", + "username_claimed": "fameswap", + "username_unclaimed": "noonewouldeverusethis7" }, "FanCentro": { "errorMsg": "var environment", @@ -609,6 +672,13 @@ "username_claimed": "Jungypoo", "username_unclaimed": "noonewouldeverusethis7" }, + "Finanzfrage": { + "errorType": "status_code", + "url": "https://www.finanzfrage.net/nutzer/{}", + "urlMain": "https://www.finanzfrage.net/", + "username_claimed": "finanzfrage", + "username_unclaimed": "noonewouldeverusethis7" + }, "Fiverr": { "errorMsg": "\"status\":\"success\"", "errorType": "message", @@ -694,6 +764,14 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis" }, + "G2G": { + "errorType": "response_url", + "errorUrl": "https://www.g2g.com/{}", + "url": "https://www.g2g.com/{}", + "urlMain": "https://www.g2g.com/", + "username_claimed": "user", + "username_unclaimed": "noonewouldeverusethis7" + }, "GNOME VCS": { "errorType": "response_url", "errorUrl": "https://gitlab.gnome.org/{}", @@ -703,6 +781,14 @@ "username_claimed": "adam", "username_unclaimed": "noonewouldeverusethis7" }, + "Gab": { + "errorMsg": "The page you are looking for isn't here.", + "errorType": "message", + "url": "https://gab.com/{}", + "urlMain": "https://gab.com", + "username_claimed": "a", + "username_unclaimed": "noonewouldeverusethis" + }, "GaiaOnline": { "errorMsg": "No user ID specified or user does not exist", "errorType": "message", @@ -725,6 +811,27 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis" }, + "Genius (Artists)": { + "errorType": "status_code", + "url": "https://genius.com/artists/{}", + "urlMain": "https://genius.com/", + "username_claimed": "genius", + "username_unclaimed": "noonewouldeverusethis7" + }, + "Genius (Users)": { + "errorType": "status_code", + "url": "https://genius.com/{}", + "urlMain": "https://genius.com/", + "username_claimed": "genius", + "username_unclaimed": "noonewouldeverusethis7" + }, + "Gesundheitsfrage": { + "errorType": "status_code", + "url": "https://www.gesundheitsfrage.net/nutzer/{}", + "urlMain": "https://www.gesundheitsfrage.net/", + "username_claimed": "gutefrage", + "username_unclaimed": "noonewouldeverusethis7" + }, "GetMyUni": { "errorType": "status_code", "url": "https://www.getmyuni.com/user/{}", @@ -732,6 +839,14 @@ "username_claimed": "Upneet.Grover17", "username_unclaimed": "noonewouldeverusethis7" }, + "Ghost": { + "errorMsg": "Domain Error", + "errorType": "message", + "url": "https://{}.ghost.io/", + "urlMain": "https://ghost.org/", + "username_claimed": "troyhunt", + "username_unclaimed": "noonewouldeverusethis7" + }, "Giphy": { "errorType": "status_code", "url": "https://giphy.com/{}", @@ -739,6 +854,13 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis7" }, + "GitBook": { + "errorType": "status_code", + "url": "https://{}.gitbook.io/", + "urlMain": "https://gitbook.com/", + "username_claimed": "gitbook", + "username_unclaimed": "noonewouldeverusethis7" + }, "GitHub": { "errorType": "status_code", "regexCheck": "^[a-zA-Z0-9](?:[a-zA-Z0-9]|-(?=[a-zA-Z0-9])){0,38}$", @@ -786,6 +908,14 @@ "username_claimed": "jetbrains", "username_unclaimed": "noonewouldeverusethis7" }, + "Grailed": { + "errorType": "response_url", + "errorUrl": "https://www.grailed.com/{}", + "url": "https://www.grailed.com/{}", + "urlMain": "https://www.grailed.com/", + "username_claimed": "blue", + "username_unclaimed": "noonewouldeverusethis7" + }, "Gravatar": { "errorType": "status_code", "regexCheck": "^((?!\\.).)*$", @@ -795,7 +925,7 @@ "username_unclaimed": "noonewouldeverusethis7" }, "Gumroad": { - "errorMsg": "Page not found.", + "errorMsg": "Page not found (404) - Gumroad", "errorType": "message", "url": "https://www.gumroad.com/{}", "urlMain": "https://www.gumroad.com/", @@ -816,6 +946,13 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis7" }, + "Gutefrage": { + "errorType": "status_code", + "url": "https://www.gutefrage.net/nutzer/{}", + "urlMain": "https://www.gutefrage.net/", + "username_claimed": "gutefrage", + "username_unclaimed": "noonewouldeverusethis7" + }, "HEXRPG": { "errorMsg": "Error : User ", "errorType": "message", @@ -942,6 +1079,13 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis7" }, + "Ionic Forum": { + "errorType": "status_code", + "url": "https://forum.ionicframework.com/u/{}", + "urlMain": "https://forum.ionicframework.com/", + "username_claimed": "theblue222", + "username_unclaimed": "noonewouldeverusethis7" + }, "Issuu": { "errorType": "status_code", "url": "https://issuu.com/{}", @@ -980,6 +1124,20 @@ "username_claimed": "jenny", "username_unclaimed": "noonewouldeverusethis7" }, + "Joplin Forum": { + "errorType": "status_code", + "url": "https://discourse.joplinapp.org/u/{}", + "urlMain": "https://discourse.joplinapp.org/", + "username_claimed": "laurent", + "username_unclaimed": "noonewouldeverusethis7" + }, + "KEAKR": { + "errorType": "status_code", + "url": "https://www.keakr.com/en/profile/{}", + "urlMain": "https://www.keakr.com/", + "username_claimed": "beats", + "username_unclaimed": "noonewouldeverusethis7" + }, "Kaggle": { "errorType": "status_code", "url": "https://www.kaggle.com/{}", @@ -1033,6 +1191,13 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis7" }, + "LessWrong": { + "errorType": "status_code", + "url": "https://www.lesswrong.com/users/@{}", + "urlMain": "https://www.lesswrong.com/", + "username_claimed": "blue", + "username_unclaimed": "noonewouldeverusethis7why" + }, "Letterboxd": { "errorMsg": "Sorry, we can\u2019t find the page you\u2019ve requested.", "errorType": "message", @@ -1056,6 +1221,14 @@ "username_claimed": "anne", "username_unclaimed": "noonewouldeverusethis7" }, + "Listed": { + "errorType": "response_url", + "errorUrl": "https://listed.to/@{}", + "url": "https://listed.to/@{}", + "urlMain": "https://listed.to/", + "username_claimed": "listed", + "username_unclaimed": "noonewouldeverusethis7" + }, "LiveJournal": { "errorType": "status_code", "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$", @@ -1080,6 +1253,21 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis7" }, + "LottieFiles": { + "errorType": "status_code", + "url": "https://lottiefiles.com/{}", + "urlMain": "https://lottiefiles.com/", + "username_claimed": "lottiefiles", + "username_unclaimed": "noonewouldeverusethis7" + }, + "Mapify": { + "errorType": "response_url", + "errorUrl": "https://mapify.travel/{}", + "url": "https://mapify.travel/{}", + "urlMain": "https://mapify.travel/", + "username_claimed": "mapify", + "username_unclaimed": "noonewouldeverusethis7" + }, "Medium": { "errorMsg": "", "errorType": "message", @@ -1724,6 +1999,13 @@ "username_claimed": "red", "username_unclaimed": "impossibleusername" }, + "ThemeForest": { + "errorType": "status_code", + "url": "https://themeforest.net/user/{}", + "urlMain": "https://themeforest.net/", + "username_claimed": "user", + "username_unclaimed": "noonewouldeverusethis7" + }, "TikTok": { "errorType": "status_code", "url": "https://tiktok.com/@{}", @@ -1744,6 +2026,7 @@ }, "TradingView": { "errorType": "status_code", + "request_method": "GET", "url": "https://www.tradingview.com/u/{}/", "urlMain": "https://www.tradingview.com/", "username_claimed": "blue", @@ -1994,6 +2277,13 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis7" }, + "Wykop": { + "errorType": "status_code", + "url": "https://www.wykop.pl/ludzie/{}", + "urlMain": "https://www.wykop.pl", + "username_claimed": "blue", + "username_unclaimed": "bumpewastaken" + }, "Xbox Gamertag": { "errorType": "status_code", "url": "https://xboxgamertag.com/search/{}", @@ -2126,6 +2416,22 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis7" }, + "eBay.com": { + "errorMsg": "The User ID you entered was not found. Please check the User ID and try again.", + "errorType": "message", + "url": "https://www.ebay.com/usr/{}", + "urlMain": "https://www.ebay.com/", + "username_claimed": "blue", + "username_unclaimed": "noonewouldeverusethis7" + }, + "eBay.de": { + "errorMsg": "Der eingegebene Nutzername wurde nicht gefunden. Bitte pr\u00fcfen Sie den Nutzernamen und versuchen Sie es erneut.", + "errorType": "message", + "url": "https://www.ebay.de/usr/{}", + "urlMain": "https://www.ebay.de/", + "username_claimed": "blue", + "username_unclaimed": "noonewouldeverusethis7" + }, "eGPU": { "errorType": "status_code", "url": "https://egpu.io/forums/profile/{}/", @@ -2443,6 +2749,13 @@ "username_claimed": "red", "username_unclaimed": "noonewouldeverusethis7" }, + "skyrock": { + "errorType": "status_code", + "url": "https://{}.skyrock.com/", + "urlMain": "https://skyrock.com/", + "username_claimed": "red", + "username_unclaimed": "noonewouldeverusethis7" + }, "social.tchncs.de": { "errorType": "status_code", "url": "https://social.tchncs.de/@{}", @@ -2492,6 +2805,13 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis77777" }, + "znanylekarz.pl": { + "errorType": "status_code", + "url": "https://www.znanylekarz.pl/{}", + "urlMain": "https://znanylekarz.pl", + "username_claimed": "janusz-nowak", + "username_unclaimed": "kto-by-sie-tak-nazwal-69" + }, "zoomit": { "errorMsg": "\u0645\u062a\u0627\u0633\u0641\u0627\u0646\u0647 \u0635\u0641\u062d\u0647 \u06cc\u0627\u0641\u062a \u0646\u0634\u062f", "errorType": "message", diff --git a/sherlock/sherlock.py b/sherlock/sherlock.py index 57ca80c2..8ee9b325 100644 --- a/sherlock/sherlock.py +++ b/sherlock/sherlock.py @@ -23,6 +23,7 @@ from result import QueryStatus from result import QueryResult from notify import QueryNotifyPrint from sites import SitesInformation +from colorama import init module_name = "Sherlock: Find Usernames Across Social Networks" __version__ = "0.14.0" @@ -328,6 +329,7 @@ def sherlock(username, site_data, query_notify, # Get the expected error type error_type = net_info["errorType"] + error_code = net_info.get("errorCode") # Retrieve future and ensure it has finished future = net_info["request_future"] @@ -392,8 +394,15 @@ def sherlock(username, site_data, query_notify, QueryStatus.AVAILABLE, query_time=response_time) elif error_type == "status_code": + # Checks if the Status Code is equal to the optional "errorCode" given in 'data.json' + if error_code == r.status_code: + result = QueryResult(username, + social_network, + url, + QueryStatus.AVAILABLE, + query_time=response_time) # Checks if the status code of the response is 2XX - if not r.status_code >= 300 or r.status_code < 200: + elif not r.status_code >= 300 or r.status_code < 200: result = QueryResult(username, social_network, url, @@ -468,7 +477,8 @@ def timeout_check(value): except: raise ArgumentTypeError(f"Timeout '{value}' must be a number.") if timeout <= 0: - raise ArgumentTypeError(f"Timeout '{value}' must be greater than 0.0s.") + raise ArgumentTypeError( + f"Timeout '{value}' must be greater than 0.0s.") return timeout @@ -553,7 +563,8 @@ def main(): # Check for newer version of Sherlock. If it exists, let the user know about it try: - r = requests.get("https://raw.githubusercontent.com/sherlock-project/sherlock/master/sherlock/sherlock.py") + r = requests.get( + "https://raw.githubusercontent.com/sherlock-project/sherlock/master/sherlock/sherlock.py") remote_version = str(re.findall('__version__ = "(.*)"', r.text)[0]) local_version = __version__ @@ -579,6 +590,13 @@ def main(): print( "Warning: some websites might refuse connecting over Tor, so note that using this option might increase connection errors.") + if args.no_color: + # Disable color output. + init(strip=True, convert=False) + else: + # Enable color output. + init(autoreset=True) + # Check if both output methods are entered as input. if args.output is not None and args.folderoutput is not None: print("You can only use one of the output methods.") @@ -592,7 +610,8 @@ def main(): # Create object with all information about sites we are aware of. try: if args.local: - sites = SitesInformation(os.path.join(os.path.dirname(__file__), "resources/data.json")) + sites = SitesInformation(os.path.join( + os.path.dirname(__file__), "resources/data.json")) else: sites = SitesInformation(args.json_file) except Exception as error: @@ -623,7 +642,8 @@ def main(): site_missing.append(f"'{site}'") if site_missing: - print(f"Error: Desired sites not found: {', '.join(site_missing)}.") + print( + f"Error: Desired sites not found: {', '.join(site_missing)}.") if not site_data: sys.exit(1) @@ -631,8 +651,7 @@ def main(): # Create notify object for query results. query_notify = QueryNotifyPrint(result=None, verbose=args.verbose, - print_all=args.print_all, - color=not args.no_color) + print_all=args.print_all) # Run report on all specified users. for username in args.username: @@ -661,7 +680,8 @@ def main(): if dictionary.get("status").status == QueryStatus.CLAIMED: exists_counter += 1 file.write(dictionary["url_user"] + "\n") - file.write(f"Total Websites Username Detected On : {exists_counter}\n") + file.write( + f"Total Websites Username Detected On : {exists_counter}\n") if args.csv: result_file = f"{username}.csv" diff --git a/sherlock/sites.py b/sherlock/sites.py index c706110d..431ac2f9 100644 --- a/sherlock/sites.py +++ b/sherlock/sites.py @@ -65,7 +65,7 @@ class SiteInformation: Return Value: Nicely formatted string to get information about this object. """ - + return f"{self.name} ({self.url_home})" diff --git a/sites.md b/sites.md index 47efb761..1ca8c061 100644 --- a/sites.md +++ b/sites.md @@ -1,10 +1,11 @@ -## List Of Supported Sites (323 Sites In Total!) +## List Of Supported Sites (368 Sites In Total!) 1. [2Dimensions](https://2Dimensions.com/) 1. [3dnews](http://forum.3dnews.ru/) 1. [7Cups](https://www.7cups.com/) 1. [9GAG](https://www.9gag.com/) 1. [About.me](https://about.me/) 1. [Academia.edu](https://www.academia.edu/) +1. [Airbit](https://airbit.com/) 1. [Airliners](https://www.airliners.net/) 1. [Alik.cz](https://www.alik.cz/) 1. [AllMyLinks](https://allmylinks.com/) @@ -19,13 +20,17 @@ 1. [AskFM](https://ask.fm/) 1. [Atom Discussions](https://discuss.atom.io) 1. [Audiojungle](https://audiojungle.net/) +1. [Autofrage](https://www.autofrage.net/) 1. [Avizo](https://www.avizo.cz/) 1. [BLIP.fm](https://blip.fm/) 1. [BOOTH](https://booth.pm/) 1. [Bandcamp](https://www.bandcamp.com/) 1. [Bazar.cz](https://www.bazar.cz/) 1. [Behance](https://www.behance.net/) +1. [Bezuzyteczna](https://bezuzyteczna.pl) +1. [Bikemap](https://www.bikemap.net/) 1. [BinarySearch](https://binarysearch.io/) +1. [BioHacking](https://forum.dangerousthings.com/) 1. [BitBucket](https://bitbucket.org/) 1. [BitCoinForum](https://bitcoinforum.com) 1. [Bitwarden Forum](https://bitwarden.com/) @@ -45,8 +50,10 @@ 1. [Chess](https://www.chess.com/) 1. [CloudflareCommunity](https://community.cloudflare.com/) 1. [Clozemaster](https://www.clozemaster.com) +1. [Clubhouse](https://www.clubhouse.com) 1. [Codecademy](https://www.codecademy.com/) 1. [Codechef](https://www.codechef.com/) +1. [Codeforces](https://www.codeforces.com/) 1. [Codepen](https://codepen.io/) 1. [Codewars](https://www.codewars.com) 1. [Coil](https://coil.com/) @@ -57,6 +64,7 @@ 1. [Cracked](https://www.cracked.com/) 1. [Crevado](https://crevado.com/) 1. [Crowdin](https://crowdin.com/) +1. [Cryptomator Forum](https://community.cryptomator.org/) 1. [DEV Community](https://dev.to/) 1. [DailyMotion](https://www.dailymotion.com/) 1. [Designspiration](https://www.designspiration.net/) @@ -68,14 +76,16 @@ 1. [Dribbble](https://dribbble.com/) 1. [Duolingo](https://duolingo.com/) 1. [Ello](https://ello.co/) +1. [Envato Forum](https://forums.envato.com/) 1. [Etsy](https://www.etsy.com/) 1. [Euw](https://euw.op.gg/) 1. [EyeEm](https://www.eyeem.com/) 1. [F3.cool](https://f3.cool/) 1. [Facebook](https://www.facebook.com/) -1. [Facenama](https://facenama.com/) +1. [Fameswap](https://fameswap.com/) 1. [FanCentro](https://fancentro.com/) 1. [Fandom](https://www.fandom.com/) +1. [Finanzfrage](https://www.finanzfrage.net/) 1. [Fiverr](https://www.fiverr.com/) 1. [Flickr](https://www.flickr.com/) 1. [Flightradar24](https://www.flightradar24.com/) @@ -86,22 +96,31 @@ 1. [Freelance.habr](https://freelance.habr.com/) 1. [Freelancer](https://www.freelancer.com/) 1. [Freesound](https://freesound.org/) +1. [G2G](https://www.g2g.com/) 1. [GNOME VCS](https://gitlab.gnome.org/) +1. [Gab](https://gab.com) 1. [GaiaOnline](https://www.gaiaonline.com/) 1. [Gam1ng](https://gam1ng.com.br) 1. [Gamespot](https://www.gamespot.com/) +1. [Genius (Artists)](https://genius.com/) +1. [Genius (Users)](https://genius.com/) +1. [Gesundheitsfrage](https://www.gesundheitsfrage.net/) 1. [GetMyUni](https://getmyuni.com/) +1. [Ghost](https://ghost.org/) 1. [Giphy](https://giphy.com/) +1. [GitBook](https://gitbook.com/) 1. [GitHub](https://www.github.com/) 1. [GitHub Support Community](https://github.community) 1. [GitLab](https://gitlab.com/) 1. [Gitee](https://gitee.com/) 1. [GoodReads](https://www.goodreads.com/) 1. [Gradle](https://gradle.org/) +1. [Grailed](https://www.grailed.com/) 1. [Gravatar](http://en.gravatar.com/) 1. [Gumroad](https://www.gumroad.com/) 1. [GunsAndAmmo](https://gunsandammo.com/) 1. [GuruShots](https://gurushots.com/) +1. [Gutefrage](https://www.gutefrage.net/) 1. [HEXRPG](https://www.hexrpg.com/) 1. [HackTheBox](https://forum.hackthebox.eu/) 1. [Hackaday](https://hackaday.io/) @@ -118,11 +137,14 @@ 1. [Imgur](https://imgur.com/) 1. [Instagram](https://www.instagram.com/) 1. [Instructables](https://www.instructables.com/) +1. [Ionic Forum](https://forum.ionicframework.com/) 1. [Issuu](https://issuu.com/) 1. [Itch.io](https://itch.io/) 1. [Itemfix](https://www.itemfix.com/) 1. [Jellyfin Weblate](https://translate.jellyfin.org/) 1. [Jimdo](https://jimdosite.com/) +1. [Joplin Forum](https://discourse.joplinapp.org/) +1. [KEAKR](https://www.keakr.com/) 1. [Kaggle](https://www.kaggle.com/) 1. [Keybase](https://keybase.io/) 1. [Kik](http://kik.me/) @@ -130,15 +152,21 @@ 1. [LOR](https://linux.org.ru/) 1. [Launchpad](https://launchpad.net/) 1. [LeetCode](https://leetcode.com/) +1. [LessWrong](https://www.lesswrong.com/) 1. [Letterboxd](https://letterboxd.com/) 1. [Lichess](https://lichess.org) 1. [Linktree](https://linktr.ee/) +1. [Listed](https://listed.to/) 1. [LiveJournal](https://www.livejournal.com/) 1. [Lobsters](https://lobste.rs/) 1. [Lolchess](https://lolchess.gg/) +1. [LottieFiles](https://lottiefiles.com/) +1. [Mapify](https://mapify.travel/) 1. [Medium](https://medium.com/) 1. [Memrise](https://www.memrise.com/) +1. [Minecraft](https://minecraft.net/) 1. [MixCloud](https://www.mixcloud.com/) +1. [Motorradfrage](https://www.motorradfrage.net/) 1. [Munzee](https://www.munzee.com/) 1. [MyAnimeList](https://myanimelist.net/) 1. [MyMiniFactory](https://www.myminifactory.com/) @@ -147,12 +175,14 @@ 1. [NationStates Nation](https://nationstates.net) 1. [NationStates Region](https://nationstates.net) 1. [Naver](https://naver.com) +1. [Needrom](https://www.needrom.com/) 1. [Newgrounds](https://newgrounds.com) 1. [Nextcloud Forum](https://nextcloud.com/) 1. [Nightbot](https://nightbot.tv/) 1. [Ninja Kiwi](https://ninjakiwi.com/) 1. [NotABug.org](https://notabug.org/) 1. [Nyaa.si](https://nyaa.si/) +1. [OGUsers](https://ogusers.com/) 1. [OK](https://ok.ru/) 1. [OnlyFans](https://onlyfans.com/) 1. [OpenStreetMap](https://www.openstreetmap.org/) @@ -173,6 +203,7 @@ 1. [Pokemon Showdown](https://pokemonshowdown.com) 1. [Polarsteps](https://polarsteps.com/) 1. [Polygon](https://www.polygon.com/) +1. [Polymart](https://polymart.org/) 1. [Pornhub](https://pornhub.com/) 1. [ProductHunt](https://www.producthunt.com/) 1. [PromoDJ](http://promodj.com/) @@ -181,8 +212,10 @@ 1. [Raidforums](https://raidforums.com/) 1. [Rajce.net](https://www.rajce.idnes.cz/) 1. [Rate Your Music](https://rateyourmusic.com/) +1. [Rclone Forum](https://forum.rclone.org/) 1. [Redbubble](https://www.redbubble.com/) 1. [Reddit](https://www.reddit.com/) +1. [Reisefrage](https://www.reisefrage.net/) 1. [Replit.com](https://replit.com/) 1. [ResearchGate](https://www.researchgate.net/) 1. [ReverbNation](https://www.reverbnation.com/) @@ -190,10 +223,12 @@ 1. [RoyalCams](https://royalcams.com) 1. [RubyGems](https://rubygems.org/) 1. [RuneScape](https://www.runescape.com/) +1. [SWAPD](https://swapd.co/) 1. [Sbazar.cz](https://www.sbazar.cz/) 1. [Scratch](https://scratch.mit.edu/) 1. [Scribd](https://www.scribd.com/) 1. [ShitpostBot5000](https://www.shitpostbot.com/) +1. [Shpock](https://www.shpock.com/) 1. [Signal](https://community.signalusers.org) 1. [Slack](https://slack.com) 1. [Slant](https://www.slant.co/) @@ -206,8 +241,10 @@ 1. [SourceForge](https://sourceforge.net/) 1. [SoylentNews](https://soylentnews.org) 1. [Speedrun.com](https://speedrun.com/) +1. [Splice](https://splice.com/) 1. [Splits.io](https://splits.io) 1. [Sporcle](https://www.sporcle.com/) +1. [Sportlerfrage](https://www.sportlerfrage.net/) 1. [SportsRU](https://www.sports.ru/) 1. [Spotify](https://open.spotify.com/) 1. [Star Citizen](https://robertsspaceindustries.com/) @@ -217,9 +254,11 @@ 1. [SublimeForum](https://forum.sublimetext.com/) 1. [TETR.IO](https://tetr.io) 1. [TLDR Legal](https://tldrlegal.com/) +1. [TRAKTRAIN](https://traktrain.com/) 1. [Telegram](https://t.me/) 1. [Tellonym.me](https://tellonym.me/) 1. [Tenor](https://tenor.com/) +1. [ThemeForest](https://themeforest.net/) 1. [TikTok](https://tiktok.com/) 1. [Tinder](https://tinder.com/) 1. [TradingView](https://www.tradingview.com/) @@ -254,6 +293,7 @@ 1. [WordPress](https://wordpress.com) 1. [WordPressOrg](https://wordpress.org/) 1. [Wordnik](https://www.wordnik.com/) +1. [Wykop](https://www.wykop.pl) 1. [Xbox Gamertag](https://xboxgamertag.com/) 1. [Xvideos](https://xvideos.com/) 1. [YouNow](https://www.younow.com/) @@ -272,6 +312,8 @@ 1. [datingRU](http://dating.ru) 1. [devRant](https://devrant.com/) 1. [drive2](https://www.drive2.ru/) +1. [eBay.com](https://www.ebay.com/) +1. [eBay.de](https://www.ebay.de/) 1. [eGPU](https://egpu.io/) 1. [eintracht](https://eintracht.de) 1. [fixya](https://www.fixya.com) @@ -315,6 +357,7 @@ 1. [prog.hu](https://prog.hu/) 1. [radio_echo_msk](https://echo.msk.ru/) 1. [satsisRU](https://satsis.info/) +1. [skyrock](https://skyrock.com/) 1. [social.tchncs.de](https://social.tchncs.de/) 1. [spletnik](https://spletnik.ru/) 1. [svidbook](https://www.svidbook.ru/) @@ -322,4 +365,5 @@ 1. [uid](https://uid.me/) 1. [wiki.vg](https://wiki.vg/) 1. [xHamster](https://xhamster.com) +1. [znanylekarz.pl](https://znanylekarz.pl) 1. [zoomit](https://www.zoomit.ir)