From e24b7f489982f5e477d72024ab099dbe15175002 Mon Sep 17 00:00:00 2001 From: megadose Date: Fri, 27 Nov 2020 17:42:06 +0100 Subject: [PATCH] Add 4 modules and delete facebook I remove facebook because it never happened to me but the behaviour of facebook can be unpredictable so I remove it to avoid that a user is alerted. --- README.md | 5 +- holehe/modules/forum/bluegrassrivals.py | 42 ++++++++++++++++ holehe/modules/forum/clashfarmer.py | 42 ++++++++++++++++ holehe/modules/forum/cpaelites.py | 42 ++++++++++++++++ holehe/modules/forum/cpahero.py | 42 ++++++++++++++++ holehe/modules/social_media/facebook.py | 64 ------------------------- 6 files changed, 172 insertions(+), 65 deletions(-) create mode 100644 holehe/modules/forum/bluegrassrivals.py create mode 100644 holehe/modules/forum/clashfarmer.py create mode 100644 holehe/modules/forum/cpaelites.py create mode 100644 holehe/modules/forum/cpahero.py delete mode 100644 holehe/modules/social_media/facebook.py diff --git a/README.md b/README.md index 1f26ecc..5720811 100644 --- a/README.md +++ b/README.md @@ -65,15 +65,19 @@ print(lastpass("test@gmail.com")) |blackworldforum|blackworldforum.com| register | ✔ | | blip | blip.fm | register | ✔ | |blitzortung |forum.blitzortung.org| register | ✘ | +|bluegrassrivals|bluegrassrivals.com| register | ✘ | |bodybuilding |bodybuilding.com| register | ✘ | |buymeacoffee |buymeacoffee.com| register | ✔ | |caringbridge |caringbridge.org| register | ✘ | |cambridgemt |discussion.cambridge-mt.com|register | ✘ | |chinaphonearena |chinaphonearena.com|register | ✘ | +| clashfarmer | clashfarmer.com| register | ✔ | | codecademy | codecademy.com | register | ✔ | | codeigniter|forum.codeigniter.com|register | ✘ | | codepen | codepen.io | register | ✘ | | coroflot | coroflot.com | register | ✘ | +| cpaelites | cpaelites.com | register | ✘ | +| cpahero | cpahero.com | register | ✘ | | cracked_to | cracked.to | register | ✔ | | crevado | crevado.com | register | ✔ | | deliveroo | deliveroo.com | register | ✔ | @@ -87,7 +91,6 @@ print(lastpass("test@gmail.com")) | envato | envato.com | register | ✘ | | eventbrite | eventbrite.com | login | ✘ | | evernote | evernote.com | login | ✘ | -| facebook | facebook.com | password recovery | ✘ | | fanpop | fanpop.com | register | ✘ | | firefox | firefox.com | register | ✘ | |freelancer | freelancer.com | register | ✘ | diff --git a/holehe/modules/forum/bluegrassrivals.py b/holehe/modules/forum/bluegrassrivals.py new file mode 100644 index 0000000..813571a --- /dev/null +++ b/holehe/modules/forum/bluegrassrivals.py @@ -0,0 +1,42 @@ +from holehe.core import * +from holehe.localuseragent import * + + +def bluegrassrivals(email): + s=requests.session() + headers = { + 'User-Agent': random.choice(ua["browsers"]["chrome"]), + 'Accept': 'application/json, text/javascript, */*; q=0.01', + 'Accept-Language': 'en,en-US;q=0.5', + 'Referer': 'http://bluegrassrivals.com/forum/member.php', + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', + 'Origin': 'http://bluegrassrivals.com/forum', + 'DNT': '1', + 'Connection': 'keep-alive', + 'TE': 'Trailers', + } + + r=s.get("http://bluegrassrivals.com/forum/member.php",headers=headers) + if "Your request was blocked" in r.text or r.status_code!=200: + return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None}) + headers['X-Requested-With']= 'XMLHttpRequest' + + + params = ( + ('action', 'email_availability'), + ) + try: + data = { + 'email': email, + 'my_post_key':r.text.split('var my_post_key = "')[1].split('"')[0] + } + except: + return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None}) + response = s.post('http://bluegrassrivals.com/forum/xmlhttp.php', headers=headers, params=params, data=data) + if "Your request was blocked" not in response.text and response.status_code==200: + if "email address that is already in use by another member." in response.text: + return({"rateLimit": False, "exists": True, "emailrecovery": None, "phoneNumber": None, "others": None}) + else: + return({"rateLimit": False, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None}) + else: + return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None}) diff --git a/holehe/modules/forum/clashfarmer.py b/holehe/modules/forum/clashfarmer.py new file mode 100644 index 0000000..7a3a1cf --- /dev/null +++ b/holehe/modules/forum/clashfarmer.py @@ -0,0 +1,42 @@ +from holehe.core import * +from holehe.localuseragent import * + + +def clashfarmer(email): + s=requests.session() + headers = { + 'User-Agent': random.choice(ua["browsers"]["chrome"]), + 'Accept': 'application/json, text/javascript, */*; q=0.01', + 'Accept-Language': 'en,en-US;q=0.5', + 'Referer': 'https://www.clashfarmer.com/forum/member.php', + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', + 'Origin': 'https://www.clashfarmer.com/forum', + 'DNT': '1', + 'Connection': 'keep-alive', + 'TE': 'Trailers', + } + + r=s.get("https://www.clashfarmer.com/forum/member.php",headers=headers) + if "Your request was blocked" in r.text or r.status_code!=200: + return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None}) + headers['X-Requested-With']= 'XMLHttpRequest' + + + params = ( + ('action', 'email_availability'), + ) + try: + data = { + 'email': email, + 'my_post_key':r.text.split('var my_post_key = "')[1].split('"')[0] + } + except: + return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None}) + response = s.post('https://www.clashfarmer.com/forum/xmlhttp.php', headers=headers, params=params, data=data) + if "Your request was blocked" not in response.text and response.status_code==200: + if "email address that is already in use by another member." in response.text: + return({"rateLimit": False, "exists": True, "emailrecovery": None, "phoneNumber": None, "others": None}) + else: + return({"rateLimit": False, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None}) + else: + return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None}) diff --git a/holehe/modules/forum/cpaelites.py b/holehe/modules/forum/cpaelites.py new file mode 100644 index 0000000..b59b1f1 --- /dev/null +++ b/holehe/modules/forum/cpaelites.py @@ -0,0 +1,42 @@ +from holehe.core import * +from holehe.localuseragent import * + + +def cpaelites(email): + s=requests.session() + headers = { + 'User-Agent': random.choice(ua["browsers"]["chrome"]), + 'Accept': 'application/json, text/javascript, */*; q=0.01', + 'Accept-Language': 'en,en-US;q=0.5', + 'Referer': 'https://www.cpaelites.com/member.php', + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', + 'Origin': 'https://www.cpaelites.com', + 'DNT': '1', + 'Connection': 'keep-alive', + 'TE': 'Trailers', + } + + r=s.get("https://www.cpaelites.com/member.php",headers=headers) + if "Your request was blocked" in r.text or r.status_code!=200: + return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None}) + headers['X-Requested-With']= 'XMLHttpRequest' + + + params = ( + ('action', 'email_availability'), + ) + try: + data = { + 'email': email, + 'my_post_key':r.text.split('var my_post_key = "')[1].split('"')[0] + } + except: + return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None}) + response = s.post('https://www.cpaelites.com/xmlhttp.php', headers=headers, params=params, data=data) + if "Your request was blocked" not in response.text and response.status_code==200: + if "email address that is already in use by another member." in response.text: + return({"rateLimit": False, "exists": True, "emailrecovery": None, "phoneNumber": None, "others": None}) + else: + return({"rateLimit": False, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None}) + else: + return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None}) diff --git a/holehe/modules/forum/cpahero.py b/holehe/modules/forum/cpahero.py new file mode 100644 index 0000000..580c4ff --- /dev/null +++ b/holehe/modules/forum/cpahero.py @@ -0,0 +1,42 @@ +from holehe.core import * +from holehe.localuseragent import * + + +def cpahero(email): + s=requests.session() + headers = { + 'User-Agent': random.choice(ua["browsers"]["chrome"]), + 'Accept': 'application/json, text/javascript, */*; q=0.01', + 'Accept-Language': 'en,en-US;q=0.5', + 'Referer': 'https://www.cpahero.com/member.php', + 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', + 'Origin': 'https://www.cpahero.com', + 'DNT': '1', + 'Connection': 'keep-alive', + 'TE': 'Trailers', + } + + r=s.get("https://www.cpahero.com/member.php",headers=headers) + if "Your request was blocked" in r.text or r.status_code!=200: + return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None}) + headers['X-Requested-With']= 'XMLHttpRequest' + + + params = ( + ('action', 'email_availability'), + ) + try: + data = { + 'email': email, + 'my_post_key':r.text.split('var my_post_key = "')[1].split('"')[0] + } + except: + return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None}) + response = s.post('https://www.cpahero.com/xmlhttp.php', headers=headers, params=params, data=data) + if "Your request was blocked" not in response.text and response.status_code==200: + if "email address that is already in use by another member." in response.text: + return({"rateLimit": False, "exists": True, "emailrecovery": None, "phoneNumber": None, "others": None}) + else: + return({"rateLimit": False, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None}) + else: + return({"rateLimit": True, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": None}) diff --git a/holehe/modules/social_media/facebook.py b/holehe/modules/social_media/facebook.py deleted file mode 100644 index ed2ab6c..0000000 --- a/holehe/modules/social_media/facebook.py +++ /dev/null @@ -1,64 +0,0 @@ -from holehe.core import * -from holehe.localuseragent import * - -def facebook(email): - s = requests.Session() - req = s.get('https://www.facebook.com/login/identify?ctx=recover&lwv=110') - token = re.findall(r'"token":"([a-zA-Z0-9_-]+)"', req.text)[0] - if not token: - return({"rateLimit": True, "exists": None, "emailrecovery": None, "phoneNumber": None, "others": {"FullName": None, "profilePicture": None}}) - - pattern = r'"_js_datr","([a-zA-Z0-9_-]+)"' - jsdatr = re.findall(pattern, req.text)[0] - if not jsdatr: - return({"rateLimit": True, "exists": None, "emailrecovery": None, "phoneNumber": None, "others": {"FullName": None, "profilePicture": None}}) - - data = {'lsd': token, - 'email': email, - 'did_submit': 'Search', - '__user': 0, - '__a': 1} - cookies = {'_js_datr': jsdatr + ';'} - headers = { - 'referer': 'https://www.facebook.com/login/identify?ctx=recover&lwv=110'} - req = s.post( - 'https://www.facebook.com/ajax/login/help/identify.php?ctx=recover', - cookies=cookies, - data=data, - headers=headers) - - pattern = r'ldata=([a-zA-Z0-9-_]+)\\"' - try: - ldata = re.findall(pattern, req.text)[0] - except IndexError: - return({"rateLimit": False, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": {"FullName": None, "profilePicture": None}}) - if not ldata: - return({"rateLimit": False, "exists": False, "emailrecovery": None, "phoneNumber": None, "others": {"FullName": None, "profilePicture": None}}) - - req = s.get('https://www.facebook.com/recover/initiate?ldata=%s' % ldata) - soup = BeautifulSoup(req.content, features="lxml") - full_name = soup.find('div', attrs={'class': 'fsl fwb fcb'}) - try: - profile_picture = soup.find('img', attrs={'class': 'img'}).get('src') - except BaseException: - profile_picture = "" - try: - emailrecovery = req.text.split( - '
')[1].split("
")[0].replace("@", "@").replace('
', "") - if emailrecovery == email: - emailrecovery = None - - except IndexError: - emailrecovery = None - try: - phone = req.text.split( - '
+')[1].split("
")[0] - except IndexError: - phone = None - if full_name is None: - full_name = "" - else: - if full_name != email: - full_name = full_name.text - - return({"rateLimit": False, "exists": True, "emailrecovery": emailrecovery, "phoneNumber": phone, "others": {"FullName": full_name, "profilePicture": profile_picture}})