diff --git a/AUTHORS.md b/AUTHORS.md index 5d27625..7e1c1df 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -14,3 +14,4 @@ * Fran J. Gómez ([@ffranz](https://twitter.com/ffranz)) * Abilio Almeida ([@aabilio](https://github.com/aabilio)) * Bruno Halopeau ([@BrHa11](https://github.com/BrHa11)) +* Alexey Miloserdov ([Mi-Al](https://github.com/Mi-Al)) diff --git a/PKG-INFO b/PKG-INFO index bad9a0f..c1ccfe4 100644 --- a/PKG-INFO +++ b/PKG-INFO @@ -1,18 +1,17 @@ Metadata-Version: 1.1 Name: osrframework -Version: 0.18.0 +Version: 0.18.8 Summary: OSRFramework - A set of GPLv3+ OSINT tools developed by i3visio analysts for online research. Home-page: http://github.com/i3visio/osrframework Author: Felix Brezo and Yaiza Rubio Author-email: contacto@i3visio.com License: COPYING -Description-Content-Type: UNKNOWN Description: OSRFramework ============ OSRFramework: Open Sources Research Framework - Copyright (C) 2014-2017 F. Brezo and Y. Rubio, i3visio + Copyright (C) 2014-2018 F. Brezo and Y. Rubio, i3visio [![Version in PyPI](https://img.shields.io/pypi/v/osrframework.svg)]() [![License](https://img.shields.io/badge/license-GNU%20Affero%20General%20Public%20License%20Version%203%20or%20Later-blue.svg)]() @@ -55,11 +54,11 @@ Fast way to do it on any system for a user with administration privileges: ``` - pip install osrframework + pip2 install osrframework ``` You can upgrade to the latest release of the framework with: ``` - pip install osrframework --upgrade + pip2 install osrframework --upgrade ``` This will manage all the dependencies for you and install the latest version of the framework. @@ -79,9 +78,10 @@ that you can open a terminal anywhere and typing the name of the program (seems to be an improvement from previous installations...). Examples: ``` - usufy.py -n i3visio febrezo yrubiosec -p twitter facebook - searchfy.py -q "i3visio" - mailfy.py -n i3visio + osrf --help + usufy -n i3visio febrezo yrubiosec -p twitter facebook + searchfy -q "i3visio" + mailfy -n i3visio ``` Type -h or --help to get more information about which are the parameters of each diff --git a/README.md b/README.md index e22b8b7..75095ec 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ OSRFramework: Open Sources Research Framework -Copyright (C) 2014-2017 F. Brezo and Y. Rubio, i3visio +Copyright (C) 2014-2018 F. Brezo and Y. Rubio, i3visio [![Version in PyPI](https://img.shields.io/pypi/v/osrframework.svg)]() [![License](https://img.shields.io/badge/license-GNU%20Affero%20General%20Public%20License%20Version%203%20or%20Later-blue.svg)]() @@ -46,11 +46,11 @@ Fast way to do it on any system for a user with administration privileges: ``` -pip install osrframework +pip2 install osrframework ``` You can upgrade to the latest release of the framework with: ``` -pip install osrframework --upgrade +pip2 install osrframework --upgrade ``` This will manage all the dependencies for you and install the latest version of the framework. @@ -70,9 +70,10 @@ that you can open a terminal anywhere and typing the name of the program (seems to be an improvement from previous installations...). Examples: ``` -usufy.py -n i3visio febrezo yrubiosec -p twitter facebook -searchfy.py -q "i3visio" -mailfy.py -n i3visio +osrf --help +usufy -n i3visio febrezo yrubiosec -p twitter facebook +searchfy -q "i3visio" +mailfy -n i3visio ``` Type -h or --help to get more information about which are the parameters of each diff --git a/doc/CHANGES.md b/doc/CHANGES.md index 834e567..1890636 100644 --- a/doc/CHANGES.md +++ b/doc/CHANGES.md @@ -2,6 +2,66 @@ ====================== For more information, check the README.Add some wrappers + + +0.18.8, 2018/07/13 -- Checkfy release +- Add checkfy as a tool to find emails matching a pattern +- Fix HIBP queries to deal with Cloudflare restrictions +- Remove Hesidohackeado wrappers due to a change in their service policy +- Add Unsplash usufy wrapper +- Add Telegram usufy wrapper +- Add Whattpad usufy wrapper +- Add KhanAcademy usufy wrapper +- Add Telegram usufy wrapper +- Move to pending non working wrappers like cafemom, break or blackyard +- Add additional information to Searchfy +- Fix tags for imagery usufy wrappers +- Capture KeyboardInterruptions in alias_generator +- Fix formatting in mailfy.py +- Force usage of emailahoy en Windows systems too +- Fix OpenBugBounty wrapper + +0.18.7, 2018/05/30 -- Post GDPR update +- Add Fotolog new usufy wrapper +- Patch Buzznet usufy wrapper to fix positives when accessing from some locations +- Remove Klout wrapper (the service has been closed) + +0.18.6, 2018/05/21 -- Hotfix to remove a printing debug +- Hotfix to remove an unneeded print line + +0.18.5, 2018/05/20 -- New release of May +- Add Instagram to searchfy +- Add xtelefonos.es phonefy wrapper +- Remove Linkedin usufy wrapper (moved to pending until we add the API). +- Remove Tumblr usufy wrapper (moved to pending until we add the API). +- Remove foodspotting wrapper. + +0.18.4, 2018/04/19 -- Release some fixes for broken wrappers +- Fix of houzz.com wrapper +- Fix of foros24h wrapper +- Fix photobucket usufy wrapper +- Fix break.com usufy wrapper +- Fix minor issues in utils/browser.py + +0.18.3, 2018/03/10 -- Stability version +- Add #293: add hacked email search +- Fix #312: Update cardinghispano usufy wrapper +- Fix #311: Set --is_leaked option as default for mailfy +- Fix several false positives in domainfy resolution +- Remove tuporno and genspot wrappers + +0.18.2, 2018/02/11 -- Add OSRFramework CLI. +- Add feature: Add OSRFramework CLI with subcommands to invoke its utils +- Fix #310: The houzz.es platform is no working properly +- Fix #209: Remove Kiwi.qa wrapper +- Patch issue: Sourceforge moved to pending as it does not work +- Patch issue: Remove netlog wrapper after the website rebrand to twoo.com + +0.18.1, 2018/02/04 -- Fix several issues. +- Fix #305: Peerbackers wrapper takes to long to be resolve, delaying the answer +- Fix #304: Multiple erros in entify.py +- Fix #302: alias_generator fails with main +- Fix #263: Problem with searchfy on facebook 0.18.0, 2018/01/21 -- Major updates to separate server, maltego and console package - Add feature #294: Add freemusicarchive.org usufy wrapper @@ -37,8 +97,8 @@ - Move to pending Oroom and Backyardchickens 0.17.1, 2017/08/20 -- Some fixes and new wrappers. +- Add feature #284: Add Sarahah usufy wrapper - Add feature #283: Add Kiwi usufy wrapper -- Add feature #284: Add Sarahah usufy wrapper - Fix issue #286: Remove intersect.es wrapper as the platform has been changed - Fix issue #282: Fix openstreetmap usufy wrapper when using usernames containing a dot - Fix issue #280: Fix serieadictos usufy wrapper diff --git a/osrframework/__init__.py b/osrframework/__init__.py index a798523..bb2cd9d 100644 --- a/osrframework/__init__.py +++ b/osrframework/__init__.py @@ -20,4 +20,4 @@ # ################################################################################ -__version__ = "0.18.0" +__version__ = "0.18.8" diff --git a/osrframework/alias_generator.py b/osrframework/alias_generator.py index f86aa83..49bbc27 100644 --- a/osrframework/alias_generator.py +++ b/osrframework/alias_generator.py @@ -23,6 +23,7 @@ import argparse import json +import sys import osrframework import osrframework.utils.banner as banner @@ -45,11 +46,12 @@ } -def main(name=None, surname1=None, surname2=None, city=None, country=None, year=None, useNumbers=False, useCommonWords=False, useLeet=False, useLocales=False, extraWords=[]): +def generate(name=None, surname1=None, surname2=None, city=None, country=None, year=None, useNumbers=False, useCommonWords=False, useLeet=False, useLocales=False, extraWords=[]): """ - The main method that generates the given aliases. + The method that generates the given aliases. It receives several parameters as parsed by this module's `getParser()`. + Previously referenced as `main`. Args: ----- @@ -2808,17 +2810,11 @@ print("\nGenerated nicks:\n") print(general.success(json.dumps(listaFinal, indent=2, sort_keys=True))) print("\nUp to " + general.emphasis(str(len(listaFinal))) + " nicks generated.\n") - print("Writing the results onto the file:\n\t" + general.emphasis(args.outputFile)) - - oF=open(args.outputFile, "w") - for l in listaFinal: - oF.write(l+"\n") - oF.close() return listaFinal def getParser(): - parser = argparse.ArgumentParser(description='alias_generator is a tool that tries to create possible aliases based on the inputs known from a person.', prog='alias_generator', epilog="", add_help=False) + parser = argparse.ArgumentParser(description='alias_generator is a tool that tries to create possible aliases based on the inputs known from a person.', prog='alias_generator', epilog="", add_help=False, conflict_handler='resolve') # Adding the main options # Defining the mutually exclusive group for the main options @@ -2867,22 +2863,26 @@ extraWords = args.extra_words - if args.name == None and args.surname1 == None and args.surname2 == None and args.city == None and args.country == None and args.year == None: - print("\nCollecting information about the profile") - print("----------------------------------------\n") - - args.name = raw_input(general.emphasis("Insert a name: ".ljust(35, " "))).replace(' ','') - args.surname1 = raw_input(general.emphasis("Insert the first surname: ".ljust(35, " "))).replace(' ','') - args.surname2 = raw_input(general.emphasis("Insert the second surname: ".ljust(35, " "))).replace(' ','') - args.year = raw_input(general.emphasis("Insert a year (e. g.: birthyear): ".ljust(35, " "))).replace(' ','') - args.city = raw_input(general.emphasis("Insert a city: ".ljust(35, " "))).replace(' ','') - args.country = raw_input(general.emphasis("Insert a country: ".ljust(35, " "))).replace(' ','') - - if args.extra_words == []: - print("\nAdditional transformations to be added") - print("--------------------------------------\n") - inputText = raw_input(general.emphasis("Extra words to add (',' separated): ".ljust(35, " "))).replace(' ','') - extraWords += inputText.lower().split(',') + try: + if args.name == None and args.surname1 == None and args.surname2 == None and args.city == None and args.country == None and args.year == None: + print("\nCollecting information about the profile") + print("----------------------------------------\n") + + args.name = raw_input(general.emphasis("Insert a name: ".ljust(35, " "))).replace(' ','') + args.surname1 = raw_input(general.emphasis("Insert the first surname: ".ljust(35, " "))).replace(' ','') + args.surname2 = raw_input(general.emphasis("Insert the second surname: ".ljust(35, " "))).replace(' ','') + args.year = raw_input(general.emphasis("Insert a year (e. g.: birthyear): ".ljust(35, " "))).replace(' ','') + args.city = raw_input(general.emphasis("Insert a city: ".ljust(35, " "))).replace(' ','') + args.country = raw_input(general.emphasis("Insert a country: ".ljust(35, " "))).replace(' ','') + + if args.extra_words == []: + print("\nAdditional transformations to be added") + print("--------------------------------------\n") + inputText = raw_input(general.emphasis("Extra words to add (',' separated): ".ljust(35, " "))).replace(' ','') + extraWords += inputText.lower().split(',') + except KeyboardInterrupt: + print("\n\nThe user manually aborted the program. Exiting...") + sys.exit(2) lista=[] @@ -2901,7 +2901,7 @@ if args.country != "": print("Country: ".ljust(20, " ") + args.country) - main( + aliases = generate( name=args.name, surname1=args.surname1, surname2=args.surname2, @@ -2915,6 +2915,14 @@ extraWords=extraWords ) + print("Writing the results onto the file:\n\t" + general.emphasis(args.outputFile)) + + oF=open(args.outputFile, "w") + for l in aliases: + oF.write(l+"\n") + oF.close() + + # Urging users to place an issue on Github... print(banner.footer) diff --git a/osrframework/checkfy.py b/osrframework/checkfy.py new file mode 100644 index 0000000..ff1c4d1 --- /dev/null +++ b/osrframework/checkfy.py @@ -0,0 +1,223 @@ +#!/usr/bin/python2 +# -*- coding: utf-8 -*- +# +################################################################################ +# +# Copyright 2015-2018 Félix Brezo and Yaiza Rubio +# +# This program is part of OSRFramework. You can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################ + + +import argparse +import datetime as dt +import json +import os +import re + +import osrframework +import osrframework.domains.email_providers as email_providers + +import osrframework.utils.banner as banner +import osrframework.utils.platform_selection as platform_selection +import osrframework.utils.configuration as configuration +import osrframework.utils.general as general + + +def createEmails(nicks=None, nicksFile=None): + """ + Method that globally permits to generate the emails to be checked. + + Args: + ----- + nicks: List of aliases. + nicksFile: The filepath to the aliases file. + + Returns: + -------- + list: list of emails to be checked. + """ + candidate_emails = set() + if nicks != None: + for n in nicks: + for e in email_providers.domains: + candidate_emails.add("{}@{}".format(n, e)) + elif nicksFile != None: + with open(nicksFile, "r") as iF: + nicks = iF.read().splitlines() + for n in nicks: + for e in email_providers.domains: + candidate_emails.add("{}@{}".format(n, e)) + return candidate_emails + + +def verifyEmails(emails=[], regExpPattern="^.+$"): + """ + Method to perform the mail verification process. + + Arguments + --------- + emails: List of emails to verify. + regExpPattern: Pattern that should match. + + Returns + ------- + list: A list containing the results that match. + """ + emailsMatched = set() + + for i, e in enumerate(emails): + if re.match(regExpPattern, e): + emailsMatched.add(e) + + print(regExpPattern) + + return list(emailsMatched) + + +def getParser(): + DEFAULT_VALUES = configuration.returnListOfConfigurationValues("domainfy") + # Capturing errors just in case the option is not found in the configuration + try: + excludeList = [DEFAULT_VALUES["exclude_platforms"]] + except: + excludeList = [] + + parser = argparse.ArgumentParser(description='checkfy - Finding potential email addresses based on a list of known aliases and a pattern.', prog='checkfy', epilog='Check the README.md file for further details on the usage of this program or follow us on Twitter in .', add_help=False, conflict_handler='resolve') + parser._optionals.title = "Input options (one required)" + + # Adding the main options + groupMainOptions = parser.add_mutually_exclusive_group(required=True) + groupMainOptions.add_argument('--license', required=False, action='store_true', default=False, help='shows the GPLv3+ license and exists.') + groupMainOptions.add_argument('-n', '--nicks', metavar='', nargs='+', action='store', help = 'the list of nicks to be checked in the domains selected.') + groupMainOptions.add_argument('-N', '--nicks_file', metavar='', action='store', help = 'the file with the list of nicks to be checked in the domains selected.') + + # Configuring the processing options + groupProcessing = parser.add_argument_group('Processing arguments', 'Configuring the way in which mailfy will process the identified profiles.') + groupProcessing.add_argument('-o', '--output_folder', metavar='', required=False, default=DEFAULT_VALUES["output_folder"], action='store', help='output folder for the generated documents. While if the paths does not exist, usufy.py will try to create; if this argument is not provided, usufy will NOT write any down any data. Check permissions if something goes wrong.') + groupProcessing.add_argument('-p', '--pattern', metavar='', action='store', help='The pattern that the generated email address SHOULD match.', required=True) + groupProcessing.add_argument('-t', '--type', metavar='', default="twitter", action='store', choices=["twitter", "regexp"], help='The type of pattern provided. It can be either the style used by Twitter to show the pattern suggestions or a regular expression.', required=False) + groupProcessing.add_argument('--quiet', required=False, action='store_true', default=False, help='tells the program not to show anything.') + + # About options + groupAbout = parser.add_argument_group('About arguments', 'Showing additional information about this program.') + groupAbout.add_argument('-h', '--help', action='help', help='shows this help and exists.') + groupAbout.add_argument('--version', action='version', version='[%(prog)s] OSRFramework ' + osrframework.__version__, help='shows the version of the program and exists.') + + return parser + + +def main(params=None): + """ + Main function to launch phonefy. + + The function is created in this way so as to let other applications make + use of the full configuration capabilities of the application. The + parameters received are used as parsed by this modules `getParser()`. + + Args: + ----- + params: A list with the parameters as grabbed by the terminal. It is + None when this is called by an entry_point. + + Results: + -------- + list: Returns a list with i3visio entities. + """ + # Grabbing the parser + parser = getParser() + + if params != None: + args = parser.parse_args(params) + else: + args = parser.parse_args() + + results = [] + if not args.quiet: + print(general.title(banner.text)) + + sayingHello = """ +checkfy | Copyright (C) F. Brezo and Y. Rubio (i3visio) 2018 + +This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you +are welcome to redistribute it under certain conditions. For additional info, +visit """ + general.LICENSE_URL + "\n" + print(general.title(sayingHello)) + + if args.license: + general.showLicense() + else: + # Processing the options returned to remove the "all" option + if args.nicks: + emails = createEmails(nicks=args.nicks) + else: + # nicks_file + emails = createEmails(nicksFile=args.nicks_file) + + # Showing the execution time... + if not args.quiet: + startTime= dt.datetime.now() + print(str(startTime) + "\tTrying to identify possible emails " + general.emphasis(str(len(emails))) + " email(s)... Relax!\n") + print(general.emphasis("\tPress to stop...\n")) + + print(args.pattern) + if args.type == "twitter": + pattern = args.pattern.replace(".", "\.") + pattern = pattern.replace("*", ".") + pattern = "^{}$".format(pattern) + elif args.type == "regexp": + pattern = args.pattern + + # Perform searches, using different Threads + results = verifyEmails(emails, pattern) + + # Sorting list + results.sort() + print("\nProcess finished.") + print("\nValidated emails:\n") + print(general.success(json.dumps(results, indent=2, sort_keys=True))) + print("\nUp to " + general.emphasis(str(len(results))) + " possible emails foundd.\n") + + + # Trying to store the information recovered + if args.output_folder != None: + if not os.path.exists(args.output_folder): + os.makedirs(args.output_folder) + + outputPath = os.path.join(args.output_folder, "possible_emails.txt") + + print("Writing the results onto the file:\n\t" + general.emphasis(outputPath)) + + with open(outputPath, "w") as oF: + for r in results: + oF.write(r+"\n") + + # Showing the execution time... + if not args.quiet: + # Showing the execution time... + endTime= dt.datetime.now() + print("\n" + str(endTime) +"\tFinishing execution...\n") + print("Total time used:\t" + general.emphasis(str(endTime-startTime))) + print("Average seconds/query:\t" + general.emphasis(str((endTime-startTime).total_seconds()/len(emails))) +" seconds\n") + + # Urging users to place an issue on Github... + print(banner.footer) + + if params: + return results + + +if __name__ == "__main__": + main(sys.argv[1:]) diff --git a/osrframework/domainfy.py b/osrframework/domainfy.py index a7c43a6..348c5ea 100644 --- a/osrframework/domainfy.py +++ b/osrframework/domainfy.py @@ -214,7 +214,15 @@ "141.8.226.58", "144.76.162.245", "173.230.131.38", - "109.95.242.11" + "109.95.242.11", + "188.93.95.11", + "173.230.141.80", + "198.74.54.240", + "64.70.19.203", + "199.34.229.100", + "109.95.244.12", + "8.23.224.108", + "203.119.4.201" ] if ipv4 in BLACKLISTED: @@ -222,7 +230,7 @@ else: return False -def pool_function(domain, launchWhois = False): +def pool_function(domain, launchWhois=False): """ Wrapper for being able to launch all the threads of getPageWrapper. @@ -336,8 +344,8 @@ for d in domains: # We need to create all the arguments that will be needed - parameters = ( d, launchWhois, ) - pool.apply_async (pool_function, args= parameters, callback = log_result ) + parameters = (d, launchWhois,) + pool.apply_async(pool_function, args=parameters, callback=log_result ) # Waiting for results to be finished while len(poolResults) < len(domains): @@ -382,7 +390,7 @@ except: excludeList = [] - parser = argparse.ArgumentParser(description='domainfy - Checking the existence of domains.', prog='domainfy', epilog='Check the README.md file for further details on the usage of this program or follow us on Twitter in .', add_help=False) + parser = argparse.ArgumentParser(description='domainfy - Checking the existence of domains.', prog='domainfy', epilog='Check the README.md file for further details on the usage of this program or follow us on Twitter in .', add_help=False, conflict_handler='resolve') parser._optionals.title = "Input options (one required)" # Adding the main options @@ -471,13 +479,13 @@ for new in args.user_defined: if new not in args.exclude: - tlds.append( {"tld": new, "type": "user_defined"}) + tlds.append({"tld": new, "type": "user_defined"}) if args.nicks: - domains = createDomains(tlds, nicks = args.nicks) + domains = createDomains(tlds, nicks=args.nicks) else: # nicks_file - domains = createDomains(tlds, nicksFile = args.nicks_file) + domains = createDomains(tlds, nicksFile=args.nicks_file) # Showing the execution time... if not args.quiet: @@ -500,7 +508,7 @@ # Showing the information gathered if requested if not args.quiet: - print("A summary of the results obtained are shown in the following table:\n") + print("A summary of the results obtained is shown in the following table:\n") try: print(general.success(general.usufyToTextExport(results))) except: diff --git a/osrframework/domains/email_providers.py b/osrframework/domains/email_providers.py new file mode 100644 index 0000000..3ee4f1a --- /dev/null +++ b/osrframework/domains/email_providers.py @@ -0,0 +1,6126 @@ +# !/usr/bin/python +# -*- coding: utf-8 -*- +# +################################################################################## +# +# This program is part of OSRFramework. You can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +################################################################################## + +domains = { + "0-mail.com", + "007addict.com", + "020.co.uk", + "027168.com", + "0815.ru", + "0815.su", + "0clickemail.com", + "0sg.net", + "0wnd.net", + "0wnd.org", + "1033edge.com", + "10mail.org", + "10minutemail.co.za", + "10minutemail.com", + "11mail.com", + "123-m.com", + "123.com", + "123box.net", + "123india.com", + "123mail.cl", + "123mail.org", + "123qwe.co.uk", + "126.com", + "126.net", + "138mail.com", + "139.com", + "150mail.com", + "150ml.com", + "15meg4free.com", + "163.com", + "16mail.com", + "188.com", + "189.cn", + "1auto.com", + "1ce.us", + "1chuan.com", + "1colony.com", + "1coolplace.com", + "1email.eu", + "1freeemail.com", + "1fsdfdsfsdf.tk", + "1funplace.com", + "1internetdrive.com", + "1mail.ml", + "1mail.net", + "1me.net", + "1mum.com", + "1musicrow.com", + "1netdrive.com", + "1nsyncfan.com", + "1pad.de", + "1under.com", + "1webave.com", + "1webhighway.com", + "1zhuan.com", + "2-mail.com", + "20email.eu", + "20mail.in", + "20mail.it", + "20minutemail.com", + "212.com", + "21cn.com", + "247emails.com", + "24horas.com", + "2911.net", + "2980.com", + "2bmail.co.uk", + "2coolforyou.net", + "2d2i.com", + "2die4.com", + "2fdgdfgdfgdf.tk", + "2hotforyou.net", + "2mydns.com", + "2net.us", + "2prong.com", + "2trom.com", + "3000.it", + "30minutemail.com", + "30minutesmail.com", + "3126.com", + "321media.com", + "33mail.com", + "360.ru", + "37.com", + "3ammagazine.com", + "3dmail.com", + "3email.com", + "3g.ua", + "3mail.ga", + "3trtretgfrfe.tk", + "3xl.net", + "444.net", + "4email.com", + "4email.net", + "4gfdsgfdgfd.tk", + "4mg.com", + "4newyork.com", + "4warding.com", + "4warding.net", + "4warding.org", + "4x4fan.com", + "4x4man.com", + "50mail.com", + "5fm.za.com", + "5ghgfhfghfgh.tk", + "5iron.com", + "5star.com", + "60minutemail.com", + "6hjgjhgkilkj.tk", + "6ip.us", + "6mail.cf", + "6paq.com", + "702mail.co.za", + "74.ru", + "7mail.ga", + "7mail.ml", + "7tags.com", + "88.am", + "8848.net", + "888.nu", + "8mail.ga", + "8mail.ml", + "97rock.com", + "99experts.com", + "9ox.net", + "a-bc.net", + "a-player.org", + "a2z4u.net", + "a45.in", + "aaamail.zzn.com", + "aahlife.com", + "aamail.net", + "aapt.net.au", + "aaronkwok.net", + "abbeyroadlondon.co.uk", + "abcflash.net", + "abdulnour.com", + "aberystwyth.com", + "abolition-now.com", + "about.com", + "absolutevitality.com", + "abusemail.de", + "abv.bg", + "abwesend.de", + "abyssmail.com", + "ac20mail.in", + "academycougars.com", + "acceso.or.cr", + "access4less.net", + "accessgcc.com", + "accountant.com", + "acdcfan.com", + "acdczone.com", + "ace-of-base.com", + "acmecity.com", + "acmemail.net", + "acninc.net", + "acrobatmail.com", + "activatormail.com", + "activist.com", + "adam.com.au", + "add3000.pp.ua", + "addcom.de", + "address.com", + "adelphia.net", + "adexec.com", + "adfarrow.com", + "adinet.com.uy", + "adios.net", + "admin.in.th", + "administrativos.com", + "adoption.com", + "ados.fr", + "adrenalinefreak.com", + "adres.nl", + "advalvas.be", + "advantimo.com", + "aeiou.pt", + "aemail4u.com", + "aeneasmail.com", + "afreeinternet.com", + "africa-11.com", + "africamail.com", + "africamel.net", + "africanpartnersonline.com", + "afrobacon.com", + "ag.us.to", + "agedmail.com", + "agelessemail.com", + "agoodmail.com", + "ahaa.dk", + "ahk.jp", + "aichi.com", + "aim.com", + "aircraftmail.com", + "airforce.net", + "airforceemail.com", + "airpost.net", + "aiutamici.com", + "ajacied.com", + "ajaxapp.net", + "ak47.hu", + "aknet.kg", + "akphantom.com", + "albawaba.com", + "alecsmail.com", + "alex4all.com", + "alexandria.cc", + "algeria.com", + "algeriamail.com", + "alhilal.net", + "alibaba.com", + "alice.it", + "aliceadsl.fr", + "aliceinchainsmail.com", + "alivance.com", + "alive.cz", + "aliyun.com", + "allergist.com", + "allmail.net", + "alloymail.com", + "allracing.com", + "allsaintsfan.com", + "alltel.net", + "alpenjodel.de", + "alphafrau.de", + "alskens.dk", + "altavista.com", + "altavista.net", + "altavista.se", + "alternativagratis.com", + "alumni.com", + "alumnidirector.com", + "alvilag.hu", + "ama-trade.de", + "amail.com", + "amazonses.com", + "amele.com", + "america.hm", + "ameritech.net", + "amilegit.com", + "amiri.net", + "amiriindustries.com", + "amnetsal.com", + "amorki.pl", + "amrer.net", + "amuro.net", + "amuromail.com", + "ananzi.co.za", + "ancestry.com", + "andreabocellimail.com", + "andylau.net", + "anfmail.com", + "angelfan.com", + "angelfire.com", + "angelic.com", + "animail.net", + "animal.net", + "animalhouse.com", + "animalwoman.net", + "anjungcafe.com", + "anniefans.com", + "annsmail.com", + "ano-mail.net", + "anonmails.de", + "anonymbox.com", + "anonymous.to", + "anote.com", + "another.com", + "anotherdomaincyka.tk", + "anotherwin95.com", + "anti-ignorance.net", + "anti-social.com", + "antichef.com", + "antichef.net", + "antiqueemail.com", + "antireg.ru", + "antisocial.com", + "antispam.de", + "antispam24.de", + "antispammail.de", + "antongijsen.com", + "antwerpen.com", + "anymoment.com", + "anytimenow.com", + "aol.co.uk", + "aol.com", + "aol.de", + "aol.fr", + "aol.it", + "aol.jp", + "aon.at", + "apexmail.com", + "apmail.com", + "apollo.lv", + "aport.ru", + "aport2000.ru", + "apple.sib.ru", + "appraiser.net", + "approvers.net", + "aquaticmail.net", + "arabia.com", + "arabtop.net", + "arcademaster.com", + "archaeologist.com", + "archerymail.com", + "arcor.de", + "arcotronics.bg", + "arcticmail.com", + "argentina.com", + "arhaelogist.com", + "aristotle.org", + "army.net", + "armyspy.com", + "arnet.com.ar", + "art-en-ligne.pro", + "artistemail.com", + "artlover.com", + "artlover.com.au", + "artman-conception.com", + "as-if.com", + "asdasd.nl", + "asean-mail", + "asean-mail.com", + "asheville.com", + "asia-links.com", + "asia-mail.com", + "asia.com", + "asiafind.com", + "asianavenue.com", + "asiancityweb.com", + "asiansonly.net", + "asianwired.net", + "asiapoint.net", + "askaclub.ru", + "ass.pp.ua", + "assala.com", + "assamesemail.com", + "astroboymail.com", + "astrolover.com", + "astrosfan.com", + "astrosfan.net", + "asurfer.com", + "atheist.com", + "athenachu.net", + "atina.cl", + "atl.lv", + "atlas.cz", + "atlaswebmail.com", + "atlink.com", + "atmc.net", + "ato.check.com", + "atozasia.com", + "atrus.ru", + "att.net", + "attglobal.net", + "attymail.com", + "au.ru", + "auctioneer.net", + "aufeminin.com", + "aus-city.com", + "ausi.com", + "aussiemail.com.au", + "austin.rr.com", + "australia.edu", + "australiamail.com", + "austrosearch.net", + "autoescuelanerja.com", + "autograf.pl", + "automail.ru", + "automotiveauthority.com", + "autorambler.ru", + "aver.com", + "avh.hu", + "avia-tonic.fr", + "avtoritet.ru", + "awayonvacation.com", + "awholelotofamechi.com", + "awsom.net", + "axoskate.com", + "ayna.com", + "azazazatashkent.tk", + "azimiweb.com", + "azmeil.tk", + "bachelorboy.com", + "bachelorgal.com", + "backfliper.com", + "backpackers.com", + "backstreet-boys.com", + "backstreetboysclub.com", + "backtothefuturefans.com", + "backwards.com", + "badtzmail.com", + "bagherpour.com", + "bahrainmail.com", + "bakpaka.com", + "bakpaka.net", + "baldmama.de", + "baldpapa.de", + "ballerstatus.net", + "ballyfinance.com", + "balochistan.org", + "baluch.com", + "bangkok.com", + "bangkok2000.com", + "bannertown.net", + "baptistmail.com", + "baptized.com", + "barcelona.com", + "bareed.ws", + "barid.com", + "barlick.net", + "bartender.net", + "baseball-email.com", + "baseballmail.com", + "basketballmail.com", + "batuta.net", + "baudoinconsulting.com", + "baxomale.ht.cx", + "bboy.com", + "bboy.zzn.com", + "bcvibes.com", + "beddly.com", + "beeebank.com", + "beefmilk.com", + "beenhad.com", + "beep.ru", + "beer.com", + "beerandremotes.com", + "beethoven.com", + "beirut.com", + "belice.com", + "belizehome.com", + "belizemail.net", + "belizeweb.com", + "bell.net", + "bellair.net", + "bellsouth.net", + "berkscounty.com", + "berlin.com", + "berlin.de", + "berlinexpo.de", + "bestmail.us", + "betriebsdirektor.de", + "bettergolf.net", + "bharatmail.com", + "big1.us", + "big5mail.com", + "bigassweb.com", + "bigblue.net.au", + "bigboab.com", + "bigfoot.com", + "bigfoot.de", + "bigger.com", + "biggerbadder.com", + "bigmailbox.com", + "bigmir.net", + "bigpond.au", + "bigpond.com", + "bigpond.com.au", + "bigpond.net", + "bigpond.net.au", + "bigramp.com", + "bigstring.com", + "bikemechanics.com", + "bikeracer.com", + "bikeracers.net", + "bikerider.com", + "billsfan.com", + "billsfan.net", + "bimamail.com", + "bimla.net", + "bin-wieder-da.de", + "binkmail.com", + "bio-muesli.info", + "bio-muesli.net", + "biologyfan.com", + "birdfanatic.com", + "birdlover.com", + "birdowner.net", + "bisons.com", + "bitmail.com", + "bitpage.net", + "bizhosting.com", + "bk.ru", + "bkkmail.com", + "bla-bla.com", + "blackburnfans.com", + "blackburnmail.com", + "blackplanet.com", + "blader.com", + "bladesmail.net", + "blazemail.com", + "bleib-bei-mir.de", + "blink182.net", + "blockfilter.com", + "blogmyway.org", + "blondandeasy.com", + "bluebottle.com", + "bluehyppo.com", + "bluemail.ch", + "bluemail.dk", + "bluesfan.com", + "bluewin.ch", + "blueyonder.co.uk", + "blumail.org", + "blushmail.com", + "blutig.me", + "bmlsports.net", + "boardermail.com", + "boarderzone.com", + "boatracers.com", + "bobmail.info", + "bodhi.lawlita.com", + "bofthew.com", + "bol.com.br", + "bolando.com", + "bollywoodz.com", + "bolt.com", + "boltonfans.com", + "bombdiggity.com", + "bonbon.net", + "boom.com", + "bootmail.com", + "bootybay.de", + "bornagain.com", + "bornnaked.com", + "bossofthemoss.com", + "bostonoffice.com", + "boun.cr", + "bounce.net", + "bounces.amazon.com", + "bouncr.com", + "box.az", + "box.ua", + "boxbg.com", + "boxemail.com", + "boxformail.in", + "boxfrog.com", + "boximail.com", + "boyzoneclub.com", + "bradfordfans.com", + "brasilia.net", + "bratan.ru", + "brazilmail.com", + "brazilmail.com.br", + "breadtimes.press", + "breakthru.com", + "breathe.com", + "brefmail.com", + "brennendesreich.de", + "bresnan.net", + "brestonline.com", + "brew-master.com", + "brew-meister.com", + "brfree.com.br", + "briefemail.com", + "bright.net", + "britneyclub.com", + "brittonsign.com", + "broadcast.net", + "broadwaybuff.com", + "broadwaylove.com", + "brokeandhappy.com", + "brokenvalve.com", + "brujula.net", + "brunetka.ru", + "brusseler.com", + "bsdmail.com", + "bsnow.net", + "bspamfree.org", + "bt.com", + "btcc.org", + "btcmail.pw", + "btconnect.co.uk", + "btconnect.com", + "btinternet.com", + "btopenworld.co.uk", + "buerotiger.de", + "buffymail.com", + "bugmenot.com", + "bulgaria.com", + "bullsfan.com", + "bullsgame.com", + "bumerang.ro", + "bumpymail.com", + "bumrap.com", + "bund.us", + "bunita.net", + "bunko.com", + "burnthespam.info", + "burntmail.com", + "burstmail.info", + "buryfans.com", + "bushemail.com", + "business-man.com", + "businessman.net", + "businessweekmail.com", + "bust.com", + "busta-rhymes.com", + "busymail.com", + "busymail.com.com", + "busymail.comhomeart.com", + "butch-femme.net", + "butovo.net", + "buyersusa.com", + "buymoreplays.com", + "buzy.com", + "bvimailbox.com", + "byke.com", + "byom.de", + "byteme.com", + "c2.hu", + "c2i.net", + "c3.hu", + "c4.com", + "c51vsgq.com", + "cabacabana.com", + "cable.comcast.com", + "cableone.net", + "caere.it", + "cairomail.com", + "calcuttaads.com", + "calendar-server.bounces.google.com", + "calidifontain.be", + "californiamail.com", + "callnetuk.com", + "callsign.net", + "caltanet.it", + "camidge.com", + "canada-11.com", + "canada.com", + "canadianmail.com", + "canoemail.com", + "cantv.net", + "canwetalk.com", + "caramail.com", + "card.zp.ua", + "care2.com", + "careceo.com", + "careerbuildermail.com", + "carioca.net", + "cartelera.org", + "cartestraina.ro", + "casablancaresort.com", + "casema.nl", + "cash4u.com", + "cashette.com", + "casino.com", + "casualdx.com", + "cataloniamail.com", + "cataz.com", + "catcha.com", + "catchamail.com", + "catemail.com", + "catholic.org", + "catlover.com", + "catsrule.garfield.com", + "ccnmail.com", + "cd2.com", + "cek.pm", + "celineclub.com", + "celtic.com", + "center-mail.de", + "centermail.at", + "centermail.com", + "centermail.de", + "centermail.info", + "centermail.net", + "centoper.it", + "centralpets.com", + "centrum.cz", + "centrum.sk", + "centurylink.net", + "centurytel.net", + "certifiedmail.com", + "cfl.rr.com", + "cgac.es", + "cghost.s-a-d.de", + "chacuo.net", + "chaiyo.com", + "chaiyomail.com", + "chalkmail.net", + "chammy.info", + "chance2mail.com", + "chandrasekar.net", + "channelonetv.com", + "charityemail.com", + "charmedmail.com", + "charter.com", + "charter.net", + "chat.ru", + "chatlane.ru", + "chattown.com", + "chauhanweb.com", + "cheatmail.de", + "chechnya.conf.work", + "check.com", + "check.com12", + "check1check.com", + "cheeb.com", + "cheerful.com", + "chef.net", + "chefmail.com", + "chek.com", + "chello.nl", + "chemist.com", + "chequemail.com", + "cheshiremail.com", + "cheyenneweb.com", + "chez.com", + "chickmail.com", + "chil-e.com", + "childrens.md", + "childsavetrust.org", + "china.com", + "china.net.vg", + "chinalook.com", + "chinamail.com", + "chinesecool.com", + "chirk.com", + "chocaholic.com.au", + "chocofan.com", + "chogmail.com", + "choicemail1.com", + "chong-mail.com", + "chong-mail.net", + "christianmail.net", + "chronicspender.com", + "churchusa.com", + "cia-agent.com", + "cia.hu", + "ciaoweb.it", + "cicciociccio.com", + "cincinow.net", + "cirquefans.com", + "citeweb.net", + "citiz.net", + "citlink.net", + "city-of-bath.org", + "city-of-birmingham.com", + "city-of-brighton.org", + "city-of-cambridge.com", + "city-of-coventry.com", + "city-of-edinburgh.com", + "city-of-lichfield.com", + "city-of-lincoln.com", + "city-of-liverpool.com", + "city-of-manchester.com", + "city-of-nottingham.com", + "city-of-oxford.com", + "city-of-swansea.com", + "city-of-westminster.com", + "city-of-westminster.net", + "city-of-york.net", + "city2city.com", + "citynetusa.com", + "cityofcardiff.net", + "cityoflondon.org", + "ciudad.com.ar", + "ckaazaza.tk", + "claramail.com", + "classicalfan.com", + "classicmail.co.za", + "clear.net.nz", + "clearwire.net", + "clerk.com", + "clickforadate.com", + "cliffhanger.com", + "clixser.com", + "close2you.ne", + "close2you.net", + "clrmail.com", + "club-internet.fr", + "club4x4.net", + "clubalfa.com", + "clubbers.net", + "clubducati.com", + "clubhonda.net", + "clubmember.org", + "clubnetnoir.com", + "clubvdo.net", + "cluemail.com", + "cmail.net", + "cmail.org", + "cmail.ru", + "cmpmail.com", + "cmpnetmail.com", + "cnegal.com", + "cnnsimail.com", + "cntv.cn", + "codec.ro", + "codec.ro.ro", + "codec.roemail.ro", + "coder.hu", + "coid.biz", + "coldemail.info", + "coldmail.com", + "collectiblesuperstore.com", + "collector.org", + "collegebeat.com", + "collegeclub.com", + "collegemail.com", + "colleges.com", + "columbus.rr.com", + "columbusrr.com", + "columnist.com", + "comast.com", + "comast.net", + "comcast.com", + "comcast.net", + "comic.com", + "communityconnect.com", + "complxmind.com", + "comporium.net", + "comprendemail.com", + "compuserve.com", + "computer-expert.net", + "computer-freak.com", + "computer4u.com", + "computerconfused.com", + "computermail.net", + "computernaked.com", + "conexcol.com", + "cong.ru", + "conk.com", + "connect4free.net", + "connectbox.com", + "conok.com", + "consultant.com", + "consumerriot.com", + "contractor.net", + "contrasto.cu.cc", + "cookiemonster.com", + "cool.br", + "cool.fr.nf", + "coole-files.de", + "coolgoose.ca", + "coolgoose.com", + "coolkiwi.com", + "coollist.com", + "coolmail.com", + "coolmail.net", + "coolrio.com", + "coolsend.com", + "coolsite.net", + "cooooool.com", + "cooperation.net", + "cooperationtogo.net", + "copacabana.com", + "copper.net", + "copticmail.com", + "cornells.com", + "cornerpub.com", + "corporatedirtbag.com", + "correo.terra.com.gt", + "corrsfan.com", + "cortinet.com", + "cosmo.com", + "cotas.net", + "counsellor.com", + "countrylover.com", + "courriel.fr.nf", + "courrieltemporaire.com", + "cox.com", + "cox.net", + "coxinet.net", + "cpaonline.net", + "cracker.hu", + "craftemail.com", + "crapmail.org", + "crazedanddazed.com", + "crazy.ru", + "crazymailing.com", + "crazysexycool.com", + "crewstart.com", + "cristianemail.com", + "critterpost.com", + "croeso.com", + "crosshairs.com", + "crosswinds.net", + "crunkmail.com", + "crwmail.com", + "cry4helponline.com", + "cryingmail.com", + "cs.com", + "csinibaba.hu", + "cubiclink.com", + "cuemail.com", + "cumbriamail.com", + "curio-city.com", + "curryworld.de", + "curtsmail.com", + "cust.in", + "cute-girl.com", + "cuteandcuddly.com", + "cutekittens.com", + "cutey.com", + "cuvox.de", + "cww.de", + "cyber-africa.net", + "cyber-innovation.club", + "cyber-matrix.com", + "cyber-phone.eu", + "cyber-wizard.com", + "cyber4all.com", + "cyberbabies.com", + "cybercafemaui.com", + "cybercity-online.net", + "cyberdude.com", + "cyberforeplay.net", + "cybergal.com", + "cybergrrl.com", + "cyberinbox.com", + "cyberleports.com", + "cybermail.net", + "cybernet.it", + "cyberservices.com", + "cyberspace-asia.com", + "cybertrains.org", + "cyclefanz.com", + "cymail.net", + "cynetcity.com", + "d3p.dk", + "dabsol.net", + "dacoolest.com", + "dadacasa.com", + "daha.com", + "dailypioneer.com", + "dallas.theboys.com", + "dallasmail.com", + "dandikmail.com", + "dangerous-minds.com", + "dansegulvet.com", + "dasdasdascyka.tk", + "data54.com", + "date.by", + "daum.net", + "davegracey.com", + "dawnsonmail.com", + "dawsonmail.com", + "dayrep.com", + "dazedandconfused.com", + "dbzmail.com", + "dcemail.com", + "dcsi.net", + "ddns.org", + "deadaddress.com", + "deadlymob.org", + "deadspam.com", + "deafemail.net", + "deagot.com", + "deal-maker.com", + "dearriba.com", + "death-star.com", + "deepseafisherman.net", + "deforestationsucks.com", + "degoo.com", + "dejanews.com", + "delikkt.de", + "deliveryman.com", + "deneg.net", + "depechemode.com", + "deseretmail.com", + "desertmail.com", + "desertonline.com", + "desertsaintsmail.com", + "desilota.com", + "deskmail.com", + "deskpilot.com", + "despam.it", + "despammed.com", + "destin.com", + "detik.com", + "deutschland-net.com", + "devnullmail.com", + "devotedcouples.com", + "dezigner.ru", + "dfgh.net", + "dfwatson.com", + "dglnet.com.br", + "dgoh.org", + "di-ve.com", + "diamondemail.com", + "didamail.com", + "die-besten-bilder.de", + "die-genossen.de", + "die-optimisten.de", + "die-optimisten.net", + "die.life", + "diehardmail.com", + "diemailbox.de", + "digibel.be", + "digital-filestore.de", + "digitalforeplay.net", + "digitalsanctuary.com", + "digosnet.com", + "dingbone.com", + "diplomats.com", + "directbox.com", + "director-general.com", + "diri.com", + "dirtracer.com", + "dirtracers.com", + "discard.email", + "discard.ga", + "discard.gq", + "discardmail.com", + "discardmail.de", + "disciples.com", + "discofan.com", + "discovery.com", + "discoverymail.com", + "discoverymail.net", + "disign-concept.eu", + "disign-revelation.com", + "disinfo.net", + "dispomail.eu", + "disposable.com", + "disposableaddress.com", + "disposableemailaddresses.com", + "disposableinbox.com", + "dispose.it", + "dispostable.com", + "divismail.ru", + "divorcedandhappy.com", + "dm.w3internet.co.uk", + "dmailman.com", + "dmitrovka.net", + "dmitry.ru", + "dnainternet.net", + "dnsmadeeasy.com", + "doar.net", + "doclist.bounces.google.com", + "docmail.cz", + "docs.google.com", + "doctor.com", + "dodgeit.com", + "dodgit.com", + "dodgit.org", + "dodo.com.au", + "dodsi.com", + "dog.com", + "dogit.com", + "doglover.com", + "dogmail.co.uk", + "dogsnob.net", + "doityourself.com", + "domforfb1.tk", + "domforfb2.tk", + "domforfb3.tk", + "domforfb4.tk", + "domforfb5.tk", + "domforfb6.tk", + "domforfb7.tk", + "domforfb8.tk", + "domozmail.com", + "doneasy.com", + "donegal.net", + "donemail.ru", + "donjuan.com", + "dontgotmail.com", + "dontmesswithtexas.com", + "dontreg.com", + "dontsendmespam.de", + "doramail.com", + "dostmail.com", + "dotcom.fr", + "dotmsg.com", + "dotnow.com", + "dott.it", + "download-privat.de", + "dplanet.ch", + "dr.com", + "dragoncon.net", + "dragracer.com", + "drdrb.net", + "drivehq.com", + "dropmail.me", + "dropzone.com", + "drotposta.hu", + "dubaimail.com", + "dublin.com", + "dublin.ie", + "dump-email.info", + "dumpandjunk.com", + "dumpmail.com", + "dumpmail.de", + "dumpyemail.com", + "dunlopdriver.com", + "dunloprider.com", + "duno.com", + "duskmail.com", + "dustdevil.com", + "dutchmail.com", + "dvd-fan.net", + "dwp.net", + "dygo.com", + "dynamitemail.com", + "dyndns.org", + "e-apollo.lv", + "e-hkma.com", + "e-mail.com", + "e-mail.com.tr", + "e-mail.dk", + "e-mail.org", + "e-mail.ru", + "e-mail.ua", + "e-mailanywhere.com", + "e-mails.ru", + "e-tapaal.com", + "e-webtec.com", + "e4ward.com", + "earthalliance.com", + "earthcam.net", + "earthdome.com", + "earthling.net", + "earthlink.net", + "earthonline.net", + "eastcoast.co.za", + "eastlink.ca", + "eastmail.com", + "eastrolog.com", + "easy.com", + "easy.to", + "easypeasy.com", + "easypost.com", + "easytrashmail.com", + "eatmydirt.com", + "ebprofits.net", + "ec.rr.com", + "ecardmail.com", + "ecbsolutions.net", + "echina.com", + "ecolo-online.fr", + "ecompare.com", + "edmail.com", + "ednatx.com", + "edtnmail.com", + "educacao.te.pt", + "educastmail.com", + "eelmail.com", + "ehmail.com", + "einmalmail.de", + "einrot.com", + "einrot.de", + "eintagsmail.de", + "eircom.net", + "ekidz.com.au", + "elisanet.fi", + "elitemail.org", + "elsitio.com", + "eltimon.com", + "elvis.com", + "elvisfan.com", + "email-fake.gq", + "email-london.co.uk", + "email-value.com", + "email.biz", + "email.cbes.net", + "email.com", + "email.cz", + "email.ee", + "email.it", + "email.nu", + "email.org", + "email.ro", + "email.ru", + "email.si", + "email.su", + "email.ua", + "email.women.com", + "email2me.com", + "email2me.net", + "email4u.info", + "email60.com", + "emailacc.com", + "emailaccount.com", + "emailaddresses.com", + "emailage.ga", + "emailage.gq", + "emailasso.net", + "emailchoice.com", + "emailcorner.net", + "emailem.com", + "emailengine.net", + "emailengine.org", + "emailer.hubspot.com", + "emailforyou.net", + "emailgaul.com", + "emailgo.de", + "emailgroups.net", + "emailias.com", + "emailinfive.com", + "emailit.com", + "emaillime.com", + "emailmiser.com", + "emailoregon.com", + "emailpinoy.com", + "emailplanet.com", + "emailplus.org", + "emailproxsy.com", + "emails.ga", + "emails.incisivemedia.com", + "emails.ru", + "emailsensei.com", + "emailservice.com", + "emailsydney.com", + "emailtemporanea.com", + "emailtemporanea.net", + "emailtemporar.ro", + "emailtemporario.com.br", + "emailthe.net", + "emailtmp.com", + "emailto.de", + "emailuser.net", + "emailwarden.com", + "emailx.at.hm", + "emailx.net", + "emailxfer.com", + "emailz.ga", + "emailz.gq", + "emale.ru", + "ematic.com", + "embarqmail.com", + "emeil.in", + "emeil.ir", + "emil.com", + "eml.cc", + "eml.pp.ua", + "empereur.com", + "emptymail.com", + "emumail.com", + "emz.net", + "end-war.com", + "enel.net", + "enelpunto.net", + "engineer.com", + "england.com", + "england.edu", + "englandmail.com", + "epage.ru", + "epatra.com", + "ephemail.net", + "epiqmail.com", + "epix.net", + "epomail.com", + "epost.de", + "eposta.hu", + "eprompter.com", + "eqqu.com", + "eramail.co.za", + "eresmas.com", + "eriga.lv", + "ero-tube.org", + "eshche.net", + "esmailweb.net", + "estranet.it", + "ethos.st", + "etoast.com", + "etrademail.com", + "etranquil.com", + "etranquil.net", + "eudoramail.com", + "europamel.net", + "europe.com", + "europemail.com", + "euroseek.com", + "eurosport.com", + "evafan.com", + "evertonfans.com", + "every1.net", + "everyday.com.kh", + "everymail.net", + "everyone.net", + "everytg.ml", + "evopo.com", + "examnotes.net", + "excite.co.jp", + "excite.co.uk", + "excite.com", + "excite.it", + "execs.com", + "execs2k.com", + "executivemail.co.za", + "exemail.com.au", + "exg6.exghost.com", + "explodemail.com", + "express.net.ua", + "expressasia.com", + "extenda.net", + "extended.com", + "extremail.ru", + "eyepaste.com", + "eyou.com", + "ezagenda.com", + "ezcybersearch.com", + "ezmail.egine.com", + "ezmail.ru", + "ezrs.com", + "f-m.fm", + "f1fans.net", + "facebook-email.ga", + "facebook.com", + "facebookmail.com", + "facebookmail.gq", + "fadrasha.net", + "fadrasha.org", + "fahr-zur-hoelle.org", + "fake-email.pp.ua", + "fake-mail.cf", + "fake-mail.ga", + "fake-mail.ml", + "fakeinbox.com", + "fakeinformation.com", + "fakemailz.com", + "falseaddress.com", + "fan.com", + "fan.theboys.com", + "fannclub.com", + "fansonlymail.com", + "fansworldwide.de", + "fantasticmail.com", + "fantasymail.de", + "farang.net", + "farifluset.mailexpire.com", + "faroweb.com", + "fast-email.com", + "fast-mail.fr", + "fast-mail.org", + "fastacura.com", + "fastchevy.com", + "fastchrysler.com", + "fastem.com", + "fastemail.us", + "fastemailer.com", + "fastemailextractor.net", + "fastermail.com", + "fastest.cc", + "fastimap.com", + "fastkawasaki.com", + "fastmail.ca", + "fastmail.cn", + "fastmail.co.uk", + "fastmail.com", + "fastmail.com.au", + "fastmail.es", + "fastmail.fm", + "fastmail.gr", + "fastmail.im", + "fastmail.in", + "fastmail.jp", + "fastmail.mx", + "fastmail.net", + "fastmail.nl", + "fastmail.se", + "fastmail.to", + "fastmail.tw", + "fastmail.us", + "fastmailbox.net", + "fastmazda.com", + "fastmessaging.com", + "fastmitsubishi.com", + "fastnissan.com", + "fastservice.com", + "fastsubaru.com", + "fastsuzuki.com", + "fasttoyota.com", + "fastyamaha.com", + "fatcock.net", + "fatflap.com", + "fathersrightsne.org", + "fatyachts.com", + "fax.ru", + "fbi-agent.com", + "fbi.hu", + "fdfdsfds.com", + "fea.st", + "federalcontractors.com", + "feinripptraeger.de", + "felicity.com", + "felicitymail.com", + "female.ru", + "femenino.com", + "fepg.net", + "fetchmail.co.uk", + "fetchmail.com", + "fettabernett.de", + "feyenoorder.com", + "ffanet.com", + "fiberia.com", + "fibertel.com.ar", + "ficken.de", + "fificorp.com", + "fificorp.net", + "fightallspam.com", + "filipinolinks.com", + "filzmail.com", + "financefan.net", + "financemail.net", + "financier.com", + "findfo.com", + "findhere.com", + "findmail.com", + "findmemail.com", + "finebody.com", + "fineemail.com", + "finfin.com", + "finklfan.com", + "fire-brigade.com", + "fireman.net", + "fishburne.org", + "fishfuse.com", + "fivemail.de", + "fixmail.tk", + "fizmail.com", + "flashbox.5july.org", + "flashemail.com", + "flashmail.com", + "flashmail.net", + "fleckens.hu", + "flipcode.com", + "floridaemail.net", + "flytecrew.com", + "fmail.co.uk", + "fmailbox.com", + "fmgirl.com", + "fmguy.com", + "fnbmail.co.za", + "fnmail.com", + "folkfan.com", + "foodmail.com", + "footard.com", + "football.theboys.com", + "footballmail.com", + "foothills.net", + "for-president.com", + "force9.co.uk", + "forfree.at", + "forgetmail.com", + "fornow.eu", + "forpresident.com", + "fortuncity.com", + "fortunecity.com", + "forum.dk", + "fossefans.com", + "foxmail.com", + "fr33mail.info", + "francefans.com", + "francemel.fr", + "frapmail.com", + "free-email.ga", + "free-online.net", + "free-org.com", + "free.com.pe", + "free.fr", + "freeaccess.nl", + "freeaccount.com", + "freeandsingle.com", + "freebox.com", + "freedom.usa.com", + "freedomlover.com", + "freefanmail.com", + "freegates.be", + "freeghana.com", + "freelance-france.eu", + "freeler.nl", + "freemail.bozz.com", + "freemail.c3.hu", + "freemail.com.au", + "freemail.com.pk", + "freemail.de", + "freemail.et", + "freemail.gr", + "freemail.hu", + "freemail.it", + "freemail.lt", + "freemail.ms", + "freemail.nl", + "freemail.org.mk", + "freemail.ru", + "freemails.ga", + "freemeil.gq", + "freenet.de", + "freenet.kg", + "freeola.com", + "freeola.net", + "freeproblem.com", + "freesbee.fr", + "freeserve.co.uk", + "freeservers.com", + "freestamp.com", + "freestart.hu", + "freesurf.fr", + "freesurf.nl", + "freeuk.com", + "freeuk.net", + "freeukisp.co.uk", + "freeweb.org", + "freewebemail.com", + "freeyellow.com", + "freezone.co.uk", + "fresnomail.com", + "freudenkinder.de", + "freundin.ru", + "friction.net", + "friendlydevices.com", + "friendlymail.co.uk", + "friends-cafe.com", + "friendsfan.com", + "from-africa.com", + "from-america.com", + "from-argentina.com", + "from-asia.com", + "from-australia.com", + "from-belgium.com", + "from-brazil.com", + "from-canada.com", + "from-china.net", + "from-england.com", + "from-europe.com", + "from-france.net", + "from-germany.net", + "from-holland.com", + "from-israel.com", + "from-italy.net", + "from-japan.net", + "from-korea.com", + "from-mexico.com", + "from-outerspace.com", + "from-russia.com", + "from-spain.net", + "fromalabama.com", + "fromalaska.com", + "fromarizona.com", + "fromarkansas.com", + "fromcalifornia.com", + "fromcolorado.com", + "fromconnecticut.com", + "fromdelaware.com", + "fromflorida.net", + "fromgeorgia.com", + "fromhawaii.net", + "fromidaho.com", + "fromillinois.com", + "fromindiana.com", + "frominter.net", + "fromiowa.com", + "fromjupiter.com", + "fromkansas.com", + "fromkentucky.com", + "fromlouisiana.com", + "frommaine.net", + "frommaryland.com", + "frommassachusetts.com", + "frommiami.com", + "frommichigan.com", + "fromminnesota.com", + "frommississippi.com", + "frommissouri.com", + "frommontana.com", + "fromnebraska.com", + "fromnevada.com", + "fromnewhampshire.com", + "fromnewjersey.com", + "fromnewmexico.com", + "fromnewyork.net", + "fromnorthcarolina.com", + "fromnorthdakota.com", + "fromohio.com", + "fromoklahoma.com", + "fromoregon.net", + "frompennsylvania.com", + "fromrhodeisland.com", + "fromru.com", + "fromru.ru", + "fromsouthcarolina.com", + "fromsouthdakota.com", + "fromtennessee.com", + "fromtexas.com", + "fromthestates.com", + "fromutah.com", + "fromvermont.com", + "fromvirginia.com", + "fromwashington.com", + "fromwashingtondc.com", + "fromwestvirginia.com", + "fromwisconsin.com", + "fromwyoming.com", + "front.ru", + "frontier.com", + "frontiernet.net", + "frostbyte.uk.net", + "fsmail.net", + "ftc-i.net", + "ftml.net", + "fuckingduh.com", + "fudgerub.com", + "fullmail.com", + "funiran.com", + "funkfan.com", + "funky4.com", + "fuorissimo.com", + "furnitureprovider.com", + "fuse.net", + "fusemail.com", + "fut.es", + "fux0ringduh.com", + "fwnb.com", + "fxsmails.com", + "fyii.de", + "galamb.net", + "galaxy5.com", + "galaxyhit.com", + "gamebox.com", + "gamebox.net", + "gamegeek.com", + "games.com", + "gamespotmail.com", + "gamil.com", + "gamil.com.au", + "gamno.config.work", + "garbage.com", + "gardener.com", + "garliclife.com", + "gatwickemail.com", + "gawab.com", + "gay.com", + "gaybrighton.co.uk", + "gaza.net", + "gazeta.pl", + "gazibooks.com", + "gci.net", + "gdi.net", + "gee-wiz.com", + "geecities.com", + "geek.com", + "geek.hu", + "geeklife.com", + "gehensiemirnichtaufdensack.de", + "gelitik.in", + "gencmail.com", + "general-hospital.com", + "gentlemansclub.de", + "genxemail.com", + "geocities.com", + "geography.net", + "geologist.com", + "geopia.com", + "germanymail.com", + "get.pp.ua", + "get1mail.com", + "get2mail.fr", + "getairmail.cf", + "getairmail.com", + "getairmail.ga", + "getairmail.gq", + "getmails.eu", + "getonemail.com", + "getonemail.net", + "gfxartist.ru", + "gh2000.com", + "ghanamail.com", + "ghostmail.com", + "ghosttexter.de", + "giantmail.de", + "giantsfan.com", + "giga4u.de", + "gigileung.org", + "girl4god.com", + "girlsundertheinfluence.com", + "gishpuppy.com", + "givepeaceachance.com", + "glay.org", + "glendale.net", + "globalfree.it", + "globalpagan.com", + "globalsite.com.br", + "globetrotter.net", + "globo.com", + "globomail.com", + "gmail.co.za", + "gmail.com", + "gmail.com.au", + "gmail.com.br", + "gmail.ru", + "gmial.com", + "gmx.at", + "gmx.ch", + "gmx.co.uk", + "gmx.com", + "gmx.de", + "gmx.fr", + "gmx.li", + "gmx.net", + "gmx.us", + "gnwmail.com", + "go.com", + "go.ro", + "go.ru", + "go2.com.py", + "go2net.com", + "go4.it", + "gobrainstorm.net", + "gocollege.com", + "gocubs.com", + "godmail.dk", + "goemailgo.com", + "gofree.co.uk", + "gol.com", + "goldenmail.ru", + "goldmail.ru", + "goldtoolbox.com", + "golfemail.com", + "golfilla.info", + "golfmail.be", + "gonavy.net", + "gonuts4free.com", + "goodnewsmail.com", + "goodstick.com", + "google.com", + "googlegroups.com", + "googlemail.com", + "goosemoose.com", + "goplay.com", + "gorillaswithdirtyarmpits.com", + "gorontalo.net", + "gospelfan.com", + "gothere.uk.com", + "gotmail.com", + "gotmail.net", + "gotmail.org", + "gotomy.com", + "gotti.otherinbox.com", + "govolsfan.com", + "gportal.hu", + "grabmail.com", + "graduate.org", + "graffiti.net", + "gramszu.net", + "grandmamail.com", + "grandmasmail.com", + "graphic-designer.com", + "grapplers.com", + "gratisweb.com", + "great-host.in", + "greenmail.net", + "greensloth.com", + "groupmail.com", + "grr.la", + "grungecafe.com", + "gsrv.co.uk", + "gtemail.net", + "gtmc.net", + "gua.net", + "guerillamail.biz", + "guerillamail.com", + "guerrillamail.biz", + "guerrillamail.com", + "guerrillamail.de", + "guerrillamail.info", + "guerrillamail.net", + "guerrillamail.org", + "guerrillamailblock.com", + "guessmail.com", + "guju.net", + "gurlmail.com", + "gustr.com", + "guy.com", + "guy2.com", + "guyanafriends.com", + "gwhsgeckos.com", + "gyorsposta.com", + "gyorsposta.hu", + "h-mail.us", + "hab-verschlafen.de", + "hablas.com", + "habmalnefrage.de", + "hacccc.com", + "hackermail.com", + "hackermail.net", + "hailmail.net", + "hairdresser.com", + "hairdresser.net", + "haltospam.com", + "hamptonroads.com", + "handbag.com", + "handleit.com", + "hang-ten.com", + "hangglidemail.com", + "hanmail.net", + "happemail.com", + "happycounsel.com", + "happypuppy.com", + "harakirimail.com", + "haramamba.ru", + "hardcorefreak.com", + "hardyoungbabes.com", + "hartbot.de", + "hat-geld.de", + "hatespam.org", + "hawaii.rr.com", + "hawaiiantel.net", + "headbone.com", + "healthemail.net", + "heartthrob.com", + "heavynoize.net", + "heerschap.com", + "heesun.net", + "hehe.com", + "hello.hu", + "hello.net.au", + "hello.to", + "hellokitty.com", + "helter-skelter.com", + "hempseed.com", + "herediano.com", + "heremail.com", + "herono1.com", + "herp.in", + "herr-der-mails.de", + "hetnet.nl", + "hewgen.ru", + "hey.to", + "hhdevel.com", + "hideakifan.com", + "hidemail.de", + "hidzz.com", + "highmilton.com", + "highquality.com", + "highveldmail.co.za", + "hilarious.com", + "hinduhome.com", + "hingis.org", + "hiphopfan.com", + "hispavista.com", + "hitmail.com", + "hitmanrecords.com", + "hitthe.net", + "hkg.net", + "hkstarphoto.com", + "hmamail.com", + "hochsitze.com", + "hockeymail.com", + "hollywoodkids.com", + "home-email.com", + "home.de", + "home.nl", + "home.no.net", + "home.ro", + "home.se", + "homeart.com", + "homelocator.com", + "homemail.com", + "homenetmail.com", + "homeonthethrone.com", + "homestead.com", + "homeworkcentral.com", + "honduras.com", + "hongkong.com", + "hookup.net", + "hoopsmail.com", + "hopemail.biz", + "horrormail.com", + "host-it.com.sg", + "hot-mail.gq", + "hot-shop.com", + "hot-shot.com", + "hot.ee", + "hotbot.com", + "hotbox.ru", + "hotbrev.com", + "hotcoolmail.com", + "hotepmail.com", + "hotfire.net", + "hotletter.com", + "hotlinemail.com", + "hotmail.be", + "hotmail.ca", + "hotmail.ch", + "hotmail.co", + "hotmail.co.il", + "hotmail.co.jp", + "hotmail.co.nz", + "hotmail.co.uk", + "hotmail.co.za", + "hotmail.com", + "hotmail.com.ar", + "hotmail.com.au", + "hotmail.com.br", + "hotmail.com.mx", + "hotmail.com.tr", + "hotmail.de", + "hotmail.es", + "hotmail.fi", + "hotmail.fr", + "hotmail.it", + "hotmail.kg", + "hotmail.kz", + "hotmail.my", + "hotmail.nl", + "hotmail.ro", + "hotmail.roor", + "hotmail.ru", + "hotpop.com", + "hotpop3.com", + "hotvoice.com", + "housefan.com", + "housefancom", + "housemail.com", + "hsuchi.net", + "html.tou.com", + "hu2.ru", + "hughes.net", + "hulapla.de", + "humanoid.net", + "humanux.com", + "humn.ws.gy", + "humour.com", + "hunsa.com", + "hurting.com", + "hush.com", + "hushmail.com", + "hypernautica.com", + "i-connect.com", + "i-france.com", + "i-love-cats.com", + "i-mail.com.au", + "i-mailbox.net", + "i-p.com", + "i.am", + "i.am.to", + "i.amhey.to", + "i.ua", + "i12.com", + "i2828.com", + "i2pmail.org", + "iam4msu.com", + "iamawoman.com", + "iamfinallyonline.com", + "iamwaiting.com", + "iamwasted.com", + "iamyours.com", + "icestorm.com", + "ich-bin-verrueckt-nach-dir.de", + "ich-will-net.de", + "icloud.com", + "icmsconsultants.com", + "icq.com", + "icqmail.com", + "icrazy.com", + "icu.md", + "id-base.com", + "id.ru", + "ididitmyway.com", + "idigjesus.com", + "idirect.com", + "ieatspam.eu", + "ieatspam.info", + "ieh-mail.de", + "iespana.es", + "ifoward.com", + "ig.com.br", + "ignazio.it", + "ignmail.com", + "ihateclowns.com", + "ihateyoualot.info", + "iheartspam.org", + "iinet.net.au", + "ijustdontcare.com", + "ikbenspamvrij.nl", + "ilkposta.com", + "ilovechocolate.com", + "ilovegiraffes.net", + "ilovejesus.com", + "ilovelionking.com", + "ilovepokemonmail.com", + "ilovethemovies.com", + "ilovetocollect.net", + "ilse.nl", + "imaginemail.com", + "imail.org", + "imail.ru", + "imailbox.com", + "imails.info", + "imap-mail.com", + "imap.cc", + "imapmail.org", + "imel.org", + "imgof.com", + "imgv.de", + "immo-gerance.info", + "imneverwrong.com", + "imposter.co.uk", + "imstations.com", + "imstressed.com", + "imtoosexy.com", + "in-box.net", + "in2jesus.com", + "iname.com", + "inbax.tk", + "inbound.plus", + "inbox.com", + "inbox.lv", + "inbox.net", + "inbox.ru", + "inbox.si", + "inboxalias.com", + "inboxclean.com", + "inboxclean.org", + "incamail.com", + "includingarabia.com", + "incredimail.com", + "indeedemail.com", + "index.ua", + "indexa.fr", + "india.com", + "indiatimes.com", + "indo-mail.com", + "indocities.com", + "indomail.com", + "indosat.net.id", + "indus.ru", + "indyracers.com", + "inerted.com", + "inet.com", + "inet.net.au", + "info-media.de", + "info-radio.ml", + "info.com", + "info66.com", + "infoapex.com", + "infocom.zp.ua", + "infohq.com", + "infomail.es", + "infomart.or.jp", + "informaticos.com", + "infospacemail.com", + "infovia.com.ar", + "inicia.es", + "inmail.sk", + "inmail24.com", + "inmano.com", + "inmynetwork.tk", + "innocent.com", + "inonesearch.com", + "inorbit.com", + "inoutbox.com", + "insidebaltimore.net", + "insight.rr.com", + "inspectorjavert.com", + "instant-mail.de", + "instantemailaddress.com", + "instantmail.fr", + "instruction.com", + "instructor.net", + "insurer.com", + "interburp.com", + "interfree.it", + "interia.pl", + "interlap.com.ar", + "intermail.co.il", + "internet-club.com", + "internet-e-mail.com", + "internet-mail.org", + "internet-police.com", + "internetbiz.com", + "internetdrive.com", + "internetegypt.com", + "internetemails.net", + "internetmailing.net", + "internode.on.net", + "invalid.com", + "investormail.com", + "inwind.it", + "iobox.com", + "iobox.fi", + "iol.it", + "iol.pt", + "iowaemail.com", + "ip3.com", + "ip4.pp.ua", + "ip6.li", + "ip6.pp.ua", + "ipdeer.com", + "ipex.ru", + "ipoo.org", + "iportalexpress.com", + "iprimus.com.au", + "iqemail.com", + "irangate.net", + "iraqmail.com", + "ireland.com", + "irelandmail.com", + "irish2me.com", + "irj.hu", + "iroid.com", + "iscooler.com", + "isellcars.com", + "iservejesus.com", + "islamonline.net", + "islandemail.net", + "isleuthmail.com", + "ismart.net", + "isonfire.com", + "isp9.net", + "israelmail.com", + "ist-allein.info", + "ist-einmalig.de", + "ist-ganz-allein.de", + "ist-willig.de", + "italymail.com", + "itelefonica.com.br", + "itloox.com", + "itmom.com", + "ivebeenframed.com", + "ivillage.com", + "iwan-fals.com", + "iwi.net", + "iwmail.com", + "iwon.com", + "izadpanah.com", + "jabble.com", + "jahoopa.com", + "jakuza.hu", + "japan.com", + "jaydemail.com", + "jazzandjava.com", + "jazzfan.com", + "jazzgame.com", + "je-recycle.info", + "jeanvaljean.com", + "jerusalemmail.com", + "jesusanswers.com", + "jet-renovation.fr", + "jetable.com", + "jetable.de", + "jetable.fr.nf", + "jetable.net", + "jetable.org", + "jetable.pp.ua", + "jetemail.net", + "jewishmail.com", + "jfkislanders.com", + "jingjo.net", + "jippii.fi", + "jmail.co.za", + "jnxjn.com", + "job4u.com", + "jobbikszimpatizans.hu", + "joelonsoftware.com", + "joinme.com", + "jojomail.com", + "jokes.com", + "jordanmail.com", + "journalist.com", + "jourrapide.com", + "jovem.te.pt", + "joymail.com", + "jpopmail.com", + "jsrsolutions.com", + "jubiimail.dk", + "jump.com", + "jumpy.it", + "juniormail.com", + "junk1e.com", + "junkmail.com", + "junkmail.gq", + "juno.com", + "justemail.net", + "justicemail.com", + "justmail.de", + "justmailz.com", + "justmarriedmail.com", + "jwspamspy ", + "k.ro", + "kaazoo.com", + "kabissa.org", + "kaduku.net", + "kaffeeschluerfer.com", + "kaffeeschluerfer.de", + "kaixo.com", + "kalpoint.com", + "kansascity.com", + "kapoorweb.com", + "karachian.com", + "karachioye.com", + "karbasi.com", + "kasmail.com", + "kaspop.com", + "katamail.com", + "kayafmmail.co.za", + "kbjrmail.com", + "kcks.com", + "kebi.com", + "keftamail.com", + "keg-party.com", + "keinpardon.de", + "keko.com.ar", + "kellychen.com", + "keptprivate.com", + "keromail.com", + "kewpee.com", + "keyemail.com", + "kgb.hu", + "khosropour.com", + "kichimail.com", + "kickassmail.com", + "killamail.com", + "killergreenmail.com", + "killermail.com", + "killmail.com", + "killmail.net", + "kimo.com", + "kimsdisk.com", + "kinglibrary.net", + "kinki-kids.com", + "kismail.ru", + "kissfans.com", + "kitemail.com", + "kittymail.com", + "kitznet.at", + "kiwibox.com", + "kiwitown.com", + "klassmaster.com", + "klassmaster.net", + "klzlk.com", + "km.ru", + "kmail.com.au", + "knol-power.nl", + "koko.com", + "kolumbus.fi", + "kommespaeter.de", + "konkovo.net", + "konsul.ru", + "konx.com", + "korea.com", + "koreamail.com", + "kosino.net", + "koszmail.pl", + "kozmail.com", + "kpnmail.nl", + "kreditor.ru", + "krim.ws", + "krongthip.com", + "krovatka.net", + "krunis.com", + "ksanmail.com", + "ksee24mail.com", + "kube93mail.com", + "kukamail.com", + "kulturbetrieb.info", + "kumarweb.com", + "kurzepost.de", + "kuwait-mail.com", + "kuzminki.net", + "kyokodate.com", + "kyokofukada.net", + "l33r.eu", + "la.com", + "labetteraverouge.at", + "lackmail.ru", + "ladyfire.com", + "ladymail.cz", + "lagerlouts.com", + "lags.us", + "lahoreoye.com", + "lakmail.com", + "lamer.hu", + "land.ru", + "langoo.com", + "lankamail.com", + "laoeq.com", + "laposte.net", + "lass-es-geschehen.de", + "last-chance.pro", + "lastmail.co", + "latemodels.com", + "latinmail.com", + "latino.com", + "lavabit.com", + "lavache.com", + "law.com", + "lawlita.com", + "lawyer.com", + "lazyinbox.com", + "learn2compute.net", + "lebanonatlas.com", + "leeching.net", + "leehom.net", + "lefortovo.net", + "legalactions.com", + "legalrc.loan", + "legislator.com", + "legistrator.com", + "lenta.ru", + "leonlai.net", + "letsgomets.net", + "letterbox.com", + "letterboxes.org", + "letthemeatspam.com", + "levele.com", + "levele.hu", + "lex.bg", + "lexis-nexis-mail.com", + "lhsdv.com", + "lianozovo.net", + "libero.it", + "liberomail.com", + "lick101.com", + "liebt-dich.info", + "lifebyfood.com", + "link2mail.net", + "linkmaster.com", + "linktrader.com", + "linuxfreemail.com", + "linuxmail.org", + "lionsfan.com.au", + "liontrucks.com", + "liquidinformation.net", + "lissamail.com", + "list.ru", + "listomail.com", + "litedrop.com", + "literaturelover.com", + "littleapple.com", + "littleblueroom.com", + "live.at", + "live.be", + "live.ca", + "live.cl", + "live.cn", + "live.co.uk", + "live.co.za", + "live.com", + "live.com.ar", + "live.com.au", + "live.com.mx", + "live.com.my", + "live.com.pt", + "live.com.sg", + "live.de", + "live.dk", + "live.fr", + "live.hk", + "live.ie", + "live.in", + "live.it", + "live.jp", + "live.nl", + "live.no", + "live.ru", + "live.se", + "liveradio.tk", + "liverpoolfans.com", + "ljiljan.com", + "llandudno.com", + "llangollen.com", + "lmxmail.sk", + "lobbyist.com", + "localbar.com", + "localgenius.com", + "locos.com", + "login-email.ga", + "loh.pp.ua", + "lol.ovpn.to", + "lolfreak.net", + "lolito.tk", + "lolnetwork.net", + "london.com", + "loobie.com", + "looksmart.co.uk", + "looksmart.com", + "looksmart.com.au", + "lookugly.com", + "lopezclub.com", + "lortemail.dk", + "louiskoo.com", + "lov.ru", + "love.com", + "love.cz", + "loveable.com", + "lovecat.com", + "lovefall.ml", + "lovefootball.com", + "loveforlostcats.com", + "lovelygirl.net", + "lovemail.com", + "lover-boy.com", + "lovergirl.com", + "lovesea.gq", + "lovethebroncos.com", + "lovethecowboys.com", + "lovetocook.net", + "lovetohike.com", + "loveyouforever.de", + "lovingjesus.com", + "lowandslow.com", + "lr7.us", + "lr78.com", + "lroid.com", + "lubovnik.ru", + "lukop.dk", + "luso.pt", + "luukku.com", + "luv2.us", + "luvrhino.com", + "lvie.com.sg", + "lvwebmail.com", + "lycos.co.uk", + "lycos.com", + "lycos.es", + "lycos.it", + "lycos.ne.jp", + "lycos.ru", + "lycosemail.com", + "lycosmail.com", + "m-a-i-l.com", + "m-hmail.com", + "m21.cc", + "m4.org", + "m4ilweb.info", + "mac.com", + "macbox.com", + "macbox.ru", + "macfreak.com", + "machinecandy.com", + "macmail.com", + "mad.scientist.com", + "madcrazy.com", + "madcreations.com", + "madonnafan.com", + "madrid.com", + "maennerversteherin.com", + "maennerversteherin.de", + "maffia.hu", + "magicmail.co.za", + "mahmoodweb.com", + "mail-awu.de", + "mail-box.cz", + "mail-center.com", + "mail-central.com", + "mail-easy.fr", + "mail-filter.com", + "mail-me.com", + "mail-page.com", + "mail-temporaire.fr", + "mail-tester.com", + "mail.austria.com", + "mail.az", + "mail.be", + "mail.bg", + "mail.bulgaria.com", + "mail.by", + "mail.byte.it", + "mail.co.za", + "mail.com", + "mail.com.tr", + "mail.ee", + "mail.entrepeneurmag.com", + "mail.freetown.com", + "mail.gr", + "mail.hitthebeach.com", + "mail.htl22.at", + "mail.kmsp.com", + "mail.md", + "mail.mezimages.net", + "mail.misterpinball.de", + "mail.nu", + "mail.org.uk", + "mail.pf", + "mail.pharmacy.com", + "mail.pt", + "mail.r-o-o-t.com", + "mail.ru", + "mail.salu.net", + "mail.sisna.com", + "mail.spaceports.com", + "mail.svenz.eu", + "mail.theboys.com", + "mail.usa.com", + "mail.vasarhely.hu", + "mail.vu", + "mail.wtf", + "mail.zp.ua", + "mail114.net", + "mail15.com", + "mail1a.de", + "mail1st.com", + "mail2007.com", + "mail21.cc", + "mail2aaron.com", + "mail2abby.com", + "mail2abc.com", + "mail2actor.com", + "mail2admiral.com", + "mail2adorable.com", + "mail2adoration.com", + "mail2adore.com", + "mail2adventure.com", + "mail2aeolus.com", + "mail2aether.com", + "mail2affection.com", + "mail2afghanistan.com", + "mail2africa.com", + "mail2agent.com", + "mail2aha.com", + "mail2ahoy.com", + "mail2aim.com", + "mail2air.com", + "mail2airbag.com", + "mail2airforce.com", + "mail2airport.com", + "mail2alabama.com", + "mail2alan.com", + "mail2alaska.com", + "mail2albania.com", + "mail2alcoholic.com", + "mail2alec.com", + "mail2alexa.com", + "mail2algeria.com", + "mail2alicia.com", + "mail2alien.com", + "mail2allan.com", + "mail2allen.com", + "mail2allison.com", + "mail2alpha.com", + "mail2alyssa.com", + "mail2amanda.com", + "mail2amazing.com", + "mail2amber.com", + "mail2america.com", + "mail2american.com", + "mail2andorra.com", + "mail2andrea.com", + "mail2andy.com", + "mail2anesthesiologist.com", + "mail2angela.com", + "mail2angola.com", + "mail2ann.com", + "mail2anna.com", + "mail2anne.com", + "mail2anthony.com", + "mail2anything.com", + "mail2aphrodite.com", + "mail2apollo.com", + "mail2april.com", + "mail2aquarius.com", + "mail2arabia.com", + "mail2arabic.com", + "mail2architect.com", + "mail2ares.com", + "mail2argentina.com", + "mail2aries.com", + "mail2arizona.com", + "mail2arkansas.com", + "mail2armenia.com", + "mail2army.com", + "mail2arnold.com", + "mail2art.com", + "mail2artemus.com", + "mail2arthur.com", + "mail2artist.com", + "mail2ashley.com", + "mail2ask.com", + "mail2astronomer.com", + "mail2athena.com", + "mail2athlete.com", + "mail2atlas.com", + "mail2atom.com", + "mail2attitude.com", + "mail2auction.com", + "mail2aunt.com", + "mail2australia.com", + "mail2austria.com", + "mail2azerbaijan.com", + "mail2baby.com", + "mail2bahamas.com", + "mail2bahrain.com", + "mail2ballerina.com", + "mail2ballplayer.com", + "mail2band.com", + "mail2bangladesh.com", + "mail2bank.com", + "mail2banker.com", + "mail2bankrupt.com", + "mail2baptist.com", + "mail2bar.com", + "mail2barbados.com", + "mail2barbara.com", + "mail2barter.com", + "mail2basketball.com", + "mail2batter.com", + "mail2beach.com", + "mail2beast.com", + "mail2beatles.com", + "mail2beauty.com", + "mail2becky.com", + "mail2beijing.com", + "mail2belgium.com", + "mail2belize.com", + "mail2ben.com", + "mail2bernard.com", + "mail2beth.com", + "mail2betty.com", + "mail2beverly.com", + "mail2beyond.com", + "mail2biker.com", + "mail2bill.com", + "mail2billionaire.com", + "mail2billy.com", + "mail2bio.com", + "mail2biologist.com", + "mail2black.com", + "mail2blackbelt.com", + "mail2blake.com", + "mail2blind.com", + "mail2blonde.com", + "mail2blues.com", + "mail2bob.com", + "mail2bobby.com", + "mail2bolivia.com", + "mail2bombay.com", + "mail2bonn.com", + "mail2bookmark.com", + "mail2boreas.com", + "mail2bosnia.com", + "mail2boston.com", + "mail2botswana.com", + "mail2bradley.com", + "mail2brazil.com", + "mail2breakfast.com", + "mail2brian.com", + "mail2bride.com", + "mail2brittany.com", + "mail2broker.com", + "mail2brook.com", + "mail2bruce.com", + "mail2brunei.com", + "mail2brunette.com", + "mail2brussels.com", + "mail2bryan.com", + "mail2bug.com", + "mail2bulgaria.com", + "mail2business.com", + "mail2buy.com", + "mail2ca.com", + "mail2california.com", + "mail2calvin.com", + "mail2cambodia.com", + "mail2cameroon.com", + "mail2canada.com", + "mail2cancer.com", + "mail2capeverde.com", + "mail2capricorn.com", + "mail2cardinal.com", + "mail2cardiologist.com", + "mail2care.com", + "mail2caroline.com", + "mail2carolyn.com", + "mail2casey.com", + "mail2cat.com", + "mail2caterer.com", + "mail2cathy.com", + "mail2catlover.com", + "mail2catwalk.com", + "mail2cell.com", + "mail2chad.com", + "mail2champaign.com", + "mail2charles.com", + "mail2chef.com", + "mail2chemist.com", + "mail2cherry.com", + "mail2chicago.com", + "mail2chile.com", + "mail2china.com", + "mail2chinese.com", + "mail2chocolate.com", + "mail2christian.com", + "mail2christie.com", + "mail2christmas.com", + "mail2christy.com", + "mail2chuck.com", + "mail2cindy.com", + "mail2clark.com", + "mail2classifieds.com", + "mail2claude.com", + "mail2cliff.com", + "mail2clinic.com", + "mail2clint.com", + "mail2close.com", + "mail2club.com", + "mail2coach.com", + "mail2coastguard.com", + "mail2colin.com", + "mail2college.com", + "mail2colombia.com", + "mail2color.com", + "mail2colorado.com", + "mail2columbia.com", + "mail2comedian.com", + "mail2composer.com", + "mail2computer.com", + "mail2computers.com", + "mail2concert.com", + "mail2congo.com", + "mail2connect.com", + "mail2connecticut.com", + "mail2consultant.com", + "mail2convict.com", + "mail2cook.com", + "mail2cool.com", + "mail2cory.com", + "mail2costarica.com", + "mail2country.com", + "mail2courtney.com", + "mail2cowboy.com", + "mail2cowgirl.com", + "mail2craig.com", + "mail2crave.com", + "mail2crazy.com", + "mail2create.com", + "mail2croatia.com", + "mail2cry.com", + "mail2crystal.com", + "mail2cuba.com", + "mail2culture.com", + "mail2curt.com", + "mail2customs.com", + "mail2cute.com", + "mail2cutey.com", + "mail2cynthia.com", + "mail2cyprus.com", + "mail2czechrepublic.com", + "mail2dad.com", + "mail2dale.com", + "mail2dallas.com", + "mail2dan.com", + "mail2dana.com", + "mail2dance.com", + "mail2dancer.com", + "mail2danielle.com", + "mail2danny.com", + "mail2darlene.com", + "mail2darling.com", + "mail2darren.com", + "mail2daughter.com", + "mail2dave.com", + "mail2dawn.com", + "mail2dc.com", + "mail2dealer.com", + "mail2deanna.com", + "mail2dearest.com", + "mail2debbie.com", + "mail2debby.com", + "mail2deer.com", + "mail2delaware.com", + "mail2delicious.com", + "mail2demeter.com", + "mail2democrat.com", + "mail2denise.com", + "mail2denmark.com", + "mail2dennis.com", + "mail2dentist.com", + "mail2derek.com", + "mail2desert.com", + "mail2devoted.com", + "mail2devotion.com", + "mail2diamond.com", + "mail2diana.com", + "mail2diane.com", + "mail2diehard.com", + "mail2dilemma.com", + "mail2dillon.com", + "mail2dinner.com", + "mail2dinosaur.com", + "mail2dionysos.com", + "mail2diplomat.com", + "mail2director.com", + "mail2dirk.com", + "mail2disco.com", + "mail2dive.com", + "mail2diver.com", + "mail2divorced.com", + "mail2djibouti.com", + "mail2doctor.com", + "mail2doglover.com", + "mail2dominic.com", + "mail2dominica.com", + "mail2dominicanrepublic.com", + "mail2don.com", + "mail2donald.com", + "mail2donna.com", + "mail2doris.com", + "mail2dorothy.com", + "mail2doug.com", + "mail2dough.com", + "mail2douglas.com", + "mail2dow.com", + "mail2downtown.com", + "mail2dream.com", + "mail2dreamer.com", + "mail2dude.com", + "mail2dustin.com", + "mail2dyke.com", + "mail2dylan.com", + "mail2earl.com", + "mail2earth.com", + "mail2eastend.com", + "mail2eat.com", + "mail2economist.com", + "mail2ecuador.com", + "mail2eddie.com", + "mail2edgar.com", + "mail2edwin.com", + "mail2egypt.com", + "mail2electron.com", + "mail2eli.com", + "mail2elizabeth.com", + "mail2ellen.com", + "mail2elliot.com", + "mail2elsalvador.com", + "mail2elvis.com", + "mail2emergency.com", + "mail2emily.com", + "mail2engineer.com", + "mail2english.com", + "mail2environmentalist.com", + "mail2eos.com", + "mail2eric.com", + "mail2erica.com", + "mail2erin.com", + "mail2erinyes.com", + "mail2eris.com", + "mail2eritrea.com", + "mail2ernie.com", + "mail2eros.com", + "mail2estonia.com", + "mail2ethan.com", + "mail2ethiopia.com", + "mail2eu.com", + "mail2europe.com", + "mail2eurus.com", + "mail2eva.com", + "mail2evan.com", + "mail2evelyn.com", + "mail2everything.com", + "mail2exciting.com", + "mail2expert.com", + "mail2fairy.com", + "mail2faith.com", + "mail2fanatic.com", + "mail2fancy.com", + "mail2fantasy.com", + "mail2farm.com", + "mail2farmer.com", + "mail2fashion.com", + "mail2fat.com", + "mail2feeling.com", + "mail2female.com", + "mail2fever.com", + "mail2fighter.com", + "mail2fiji.com", + "mail2filmfestival.com", + "mail2films.com", + "mail2finance.com", + "mail2finland.com", + "mail2fireman.com", + "mail2firm.com", + "mail2fisherman.com", + "mail2flexible.com", + "mail2florence.com", + "mail2florida.com", + "mail2floyd.com", + "mail2fly.com", + "mail2fond.com", + "mail2fondness.com", + "mail2football.com", + "mail2footballfan.com", + "mail2found.com", + "mail2france.com", + "mail2frank.com", + "mail2frankfurt.com", + "mail2franklin.com", + "mail2fred.com", + "mail2freddie.com", + "mail2free.com", + "mail2freedom.com", + "mail2french.com", + "mail2freudian.com", + "mail2friendship.com", + "mail2from.com", + "mail2fun.com", + "mail2gabon.com", + "mail2gabriel.com", + "mail2gail.com", + "mail2galaxy.com", + "mail2gambia.com", + "mail2games.com", + "mail2gary.com", + "mail2gavin.com", + "mail2gemini.com", + "mail2gene.com", + "mail2genes.com", + "mail2geneva.com", + "mail2george.com", + "mail2georgia.com", + "mail2gerald.com", + "mail2german.com", + "mail2germany.com", + "mail2ghana.com", + "mail2gilbert.com", + "mail2gina.com", + "mail2girl.com", + "mail2glen.com", + "mail2gloria.com", + "mail2goddess.com", + "mail2gold.com", + "mail2golfclub.com", + "mail2golfer.com", + "mail2gordon.com", + "mail2government.com", + "mail2grab.com", + "mail2grace.com", + "mail2graham.com", + "mail2grandma.com", + "mail2grandpa.com", + "mail2grant.com", + "mail2greece.com", + "mail2green.com", + "mail2greg.com", + "mail2grenada.com", + "mail2gsm.com", + "mail2guard.com", + "mail2guatemala.com", + "mail2guy.com", + "mail2hades.com", + "mail2haiti.com", + "mail2hal.com", + "mail2handhelds.com", + "mail2hank.com", + "mail2hannah.com", + "mail2harold.com", + "mail2harry.com", + "mail2hawaii.com", + "mail2headhunter.com", + "mail2heal.com", + "mail2heather.com", + "mail2heaven.com", + "mail2hebe.com", + "mail2hecate.com", + "mail2heidi.com", + "mail2helen.com", + "mail2hell.com", + "mail2help.com", + "mail2helpdesk.com", + "mail2henry.com", + "mail2hephaestus.com", + "mail2hera.com", + "mail2hercules.com", + "mail2herman.com", + "mail2hermes.com", + "mail2hespera.com", + "mail2hestia.com", + "mail2highschool.com", + "mail2hindu.com", + "mail2hip.com", + "mail2hiphop.com", + "mail2holland.com", + "mail2holly.com", + "mail2hollywood.com", + "mail2homer.com", + "mail2honduras.com", + "mail2honey.com", + "mail2hongkong.com", + "mail2hope.com", + "mail2horse.com", + "mail2hot.com", + "mail2hotel.com", + "mail2houston.com", + "mail2howard.com", + "mail2hugh.com", + "mail2human.com", + "mail2hungary.com", + "mail2hungry.com", + "mail2hygeia.com", + "mail2hyperspace.com", + "mail2hypnos.com", + "mail2ian.com", + "mail2ice-cream.com", + "mail2iceland.com", + "mail2idaho.com", + "mail2idontknow.com", + "mail2illinois.com", + "mail2imam.com", + "mail2in.com", + "mail2india.com", + "mail2indian.com", + "mail2indiana.com", + "mail2indonesia.com", + "mail2infinity.com", + "mail2intense.com", + "mail2iowa.com", + "mail2iran.com", + "mail2iraq.com", + "mail2ireland.com", + "mail2irene.com", + "mail2iris.com", + "mail2irresistible.com", + "mail2irving.com", + "mail2irwin.com", + "mail2isaac.com", + "mail2israel.com", + "mail2italian.com", + "mail2italy.com", + "mail2jackie.com", + "mail2jacob.com", + "mail2jail.com", + "mail2jaime.com", + "mail2jake.com", + "mail2jamaica.com", + "mail2james.com", + "mail2jamie.com", + "mail2jan.com", + "mail2jane.com", + "mail2janet.com", + "mail2janice.com", + "mail2japan.com", + "mail2japanese.com", + "mail2jasmine.com", + "mail2jason.com", + "mail2java.com", + "mail2jay.com", + "mail2jazz.com", + "mail2jed.com", + "mail2jeffrey.com", + "mail2jennifer.com", + "mail2jenny.com", + "mail2jeremy.com", + "mail2jerry.com", + "mail2jessica.com", + "mail2jessie.com", + "mail2jesus.com", + "mail2jew.com", + "mail2jeweler.com", + "mail2jim.com", + "mail2jimmy.com", + "mail2joan.com", + "mail2joann.com", + "mail2joanna.com", + "mail2jody.com", + "mail2joe.com", + "mail2joel.com", + "mail2joey.com", + "mail2john.com", + "mail2join.com", + "mail2jon.com", + "mail2jonathan.com", + "mail2jones.com", + "mail2jordan.com", + "mail2joseph.com", + "mail2josh.com", + "mail2joy.com", + "mail2juan.com", + "mail2judge.com", + "mail2judy.com", + "mail2juggler.com", + "mail2julian.com", + "mail2julie.com", + "mail2jumbo.com", + "mail2junk.com", + "mail2justin.com", + "mail2justme.com", + "mail2k.ru", + "mail2kansas.com", + "mail2karate.com", + "mail2karen.com", + "mail2karl.com", + "mail2karma.com", + "mail2kathleen.com", + "mail2kathy.com", + "mail2katie.com", + "mail2kay.com", + "mail2kazakhstan.com", + "mail2keen.com", + "mail2keith.com", + "mail2kelly.com", + "mail2kelsey.com", + "mail2ken.com", + "mail2kendall.com", + "mail2kennedy.com", + "mail2kenneth.com", + "mail2kenny.com", + "mail2kentucky.com", + "mail2kenya.com", + "mail2kerry.com", + "mail2kevin.com", + "mail2kim.com", + "mail2kimberly.com", + "mail2king.com", + "mail2kirk.com", + "mail2kiss.com", + "mail2kosher.com", + "mail2kristin.com", + "mail2kurt.com", + "mail2kuwait.com", + "mail2kyle.com", + "mail2kyrgyzstan.com", + "mail2la.com", + "mail2lacrosse.com", + "mail2lance.com", + "mail2lao.com", + "mail2larry.com", + "mail2latvia.com", + "mail2laugh.com", + "mail2laura.com", + "mail2lauren.com", + "mail2laurie.com", + "mail2lawrence.com", + "mail2lawyer.com", + "mail2lebanon.com", + "mail2lee.com", + "mail2leo.com", + "mail2leon.com", + "mail2leonard.com", + "mail2leone.com", + "mail2leslie.com", + "mail2letter.com", + "mail2liberia.com", + "mail2libertarian.com", + "mail2libra.com", + "mail2libya.com", + "mail2liechtenstein.com", + "mail2life.com", + "mail2linda.com", + "mail2linux.com", + "mail2lionel.com", + "mail2lipstick.com", + "mail2liquid.com", + "mail2lisa.com", + "mail2lithuania.com", + "mail2litigator.com", + "mail2liz.com", + "mail2lloyd.com", + "mail2lois.com", + "mail2lola.com", + "mail2london.com", + "mail2looking.com", + "mail2lori.com", + "mail2lost.com", + "mail2lou.com", + "mail2louis.com", + "mail2louisiana.com", + "mail2lovable.com", + "mail2love.com", + "mail2lucky.com", + "mail2lucy.com", + "mail2lunch.com", + "mail2lust.com", + "mail2luxembourg.com", + "mail2luxury.com", + "mail2lyle.com", + "mail2lynn.com", + "mail2madagascar.com", + "mail2madison.com", + "mail2madrid.com", + "mail2maggie.com", + "mail2mail4.com", + "mail2maine.com", + "mail2malawi.com", + "mail2malaysia.com", + "mail2maldives.com", + "mail2mali.com", + "mail2malta.com", + "mail2mambo.com", + "mail2man.com", + "mail2mandy.com", + "mail2manhunter.com", + "mail2mankind.com", + "mail2many.com", + "mail2marc.com", + "mail2marcia.com", + "mail2margaret.com", + "mail2margie.com", + "mail2marhaba.com", + "mail2maria.com", + "mail2marilyn.com", + "mail2marines.com", + "mail2mark.com", + "mail2marriage.com", + "mail2married.com", + "mail2marries.com", + "mail2mars.com", + "mail2marsha.com", + "mail2marshallislands.com", + "mail2martha.com", + "mail2martin.com", + "mail2marty.com", + "mail2marvin.com", + "mail2mary.com", + "mail2maryland.com", + "mail2mason.com", + "mail2massachusetts.com", + "mail2matt.com", + "mail2matthew.com", + "mail2maurice.com", + "mail2mauritania.com", + "mail2mauritius.com", + "mail2max.com", + "mail2maxwell.com", + "mail2maybe.com", + "mail2mba.com", + "mail2me4u.com", + "mail2mechanic.com", + "mail2medieval.com", + "mail2megan.com", + "mail2mel.com", + "mail2melanie.com", + "mail2melissa.com", + "mail2melody.com", + "mail2member.com", + "mail2memphis.com", + "mail2methodist.com", + "mail2mexican.com", + "mail2mexico.com", + "mail2mgz.com", + "mail2miami.com", + "mail2michael.com", + "mail2michelle.com", + "mail2michigan.com", + "mail2mike.com", + "mail2milan.com", + "mail2milano.com", + "mail2mildred.com", + "mail2milkyway.com", + "mail2millennium.com", + "mail2millionaire.com", + "mail2milton.com", + "mail2mime.com", + "mail2mindreader.com", + "mail2mini.com", + "mail2minister.com", + "mail2minneapolis.com", + "mail2minnesota.com", + "mail2miracle.com", + "mail2missionary.com", + "mail2mississippi.com", + "mail2missouri.com", + "mail2mitch.com", + "mail2model.com", + "mail2moldova.commail2molly.com", + "mail2mom.com", + "mail2monaco.com", + "mail2money.com", + "mail2mongolia.com", + "mail2monica.com", + "mail2montana.com", + "mail2monty.com", + "mail2moon.com", + "mail2morocco.com", + "mail2morpheus.com", + "mail2mors.com", + "mail2moscow.com", + "mail2moslem.com", + "mail2mouseketeer.com", + "mail2movies.com", + "mail2mozambique.com", + "mail2mp3.com", + "mail2mrright.com", + "mail2msright.com", + "mail2museum.com", + "mail2music.com", + "mail2musician.com", + "mail2muslim.com", + "mail2my.com", + "mail2myboat.com", + "mail2mycar.com", + "mail2mycell.com", + "mail2mygsm.com", + "mail2mylaptop.com", + "mail2mymac.com", + "mail2mypager.com", + "mail2mypalm.com", + "mail2mypc.com", + "mail2myphone.com", + "mail2myplane.com", + "mail2namibia.com", + "mail2nancy.com", + "mail2nasdaq.com", + "mail2nathan.com", + "mail2nauru.com", + "mail2navy.com", + "mail2neal.com", + "mail2nebraska.com", + "mail2ned.com", + "mail2neil.com", + "mail2nelson.com", + "mail2nemesis.com", + "mail2nepal.com", + "mail2netherlands.com", + "mail2network.com", + "mail2nevada.com", + "mail2newhampshire.com", + "mail2newjersey.com", + "mail2newmexico.com", + "mail2newyork.com", + "mail2newzealand.com", + "mail2nicaragua.com", + "mail2nick.com", + "mail2nicole.com", + "mail2niger.com", + "mail2nigeria.com", + "mail2nike.com", + "mail2no.com", + "mail2noah.com", + "mail2noel.com", + "mail2noelle.com", + "mail2normal.com", + "mail2norman.com", + "mail2northamerica.com", + "mail2northcarolina.com", + "mail2northdakota.com", + "mail2northpole.com", + "mail2norway.com", + "mail2notus.com", + "mail2noway.com", + "mail2nowhere.com", + "mail2nuclear.com", + "mail2nun.com", + "mail2ny.com", + "mail2oasis.com", + "mail2oceanographer.com", + "mail2ohio.com", + "mail2ok.com", + "mail2oklahoma.com", + "mail2oliver.com", + "mail2oman.com", + "mail2one.com", + "mail2onfire.com", + "mail2online.com", + "mail2oops.com", + "mail2open.com", + "mail2ophthalmologist.com", + "mail2optometrist.com", + "mail2oregon.com", + "mail2oscars.com", + "mail2oslo.com", + "mail2painter.com", + "mail2pakistan.com", + "mail2palau.com", + "mail2pan.com", + "mail2panama.com", + "mail2paraguay.com", + "mail2paralegal.com", + "mail2paris.com", + "mail2park.com", + "mail2parker.com", + "mail2party.com", + "mail2passion.com", + "mail2pat.com", + "mail2patricia.com", + "mail2patrick.com", + "mail2patty.com", + "mail2paul.com", + "mail2paula.com", + "mail2pay.com", + "mail2peace.com", + "mail2pediatrician.com", + "mail2peggy.com", + "mail2pennsylvania.com", + "mail2perry.com", + "mail2persephone.com", + "mail2persian.com", + "mail2peru.com", + "mail2pete.com", + "mail2peter.com", + "mail2pharmacist.com", + "mail2phil.com", + "mail2philippines.com", + "mail2phoenix.com", + "mail2phonecall.com", + "mail2phyllis.com", + "mail2pickup.com", + "mail2pilot.com", + "mail2pisces.com", + "mail2planet.com", + "mail2platinum.com", + "mail2plato.com", + "mail2pluto.com", + "mail2pm.com", + "mail2podiatrist.com", + "mail2poet.com", + "mail2poland.com", + "mail2policeman.com", + "mail2policewoman.com", + "mail2politician.com", + "mail2pop.com", + "mail2pope.com", + "mail2popular.com", + "mail2portugal.com", + "mail2poseidon.com", + "mail2potatohead.com", + "mail2power.com", + "mail2presbyterian.com", + "mail2president.com", + "mail2priest.com", + "mail2prince.com", + "mail2princess.com", + "mail2producer.com", + "mail2professor.com", + "mail2protect.com", + "mail2psychiatrist.com", + "mail2psycho.com", + "mail2psychologist.com", + "mail2qatar.com", + "mail2queen.com", + "mail2rabbi.com", + "mail2race.com", + "mail2racer.com", + "mail2rachel.com", + "mail2rage.com", + "mail2rainmaker.com", + "mail2ralph.com", + "mail2randy.com", + "mail2rap.com", + "mail2rare.com", + "mail2rave.com", + "mail2ray.com", + "mail2raymond.com", + "mail2realtor.com", + "mail2rebecca.com", + "mail2recruiter.com", + "mail2recycle.com", + "mail2redhead.com", + "mail2reed.com", + "mail2reggie.com", + "mail2register.com", + "mail2rent.com", + "mail2republican.com", + "mail2resort.com", + "mail2rex.com", + "mail2rhodeisland.com", + "mail2rich.com", + "mail2richard.com", + "mail2ricky.com", + "mail2ride.com", + "mail2riley.com", + "mail2rita.com", + "mail2rob.com", + "mail2robert.com", + "mail2roberta.com", + "mail2robin.com", + "mail2rock.com", + "mail2rocker.com", + "mail2rod.com", + "mail2rodney.com", + "mail2romania.com", + "mail2rome.com", + "mail2ron.com", + "mail2ronald.com", + "mail2ronnie.com", + "mail2rose.com", + "mail2rosie.com", + "mail2roy.com", + "mail2rss.org", + "mail2rudy.com", + "mail2rugby.com", + "mail2runner.com", + "mail2russell.com", + "mail2russia.com", + "mail2russian.com", + "mail2rusty.com", + "mail2ruth.com", + "mail2rwanda.com", + "mail2ryan.com", + "mail2sa.com", + "mail2sabrina.com", + "mail2safe.com", + "mail2sagittarius.com", + "mail2sail.com", + "mail2sailor.com", + "mail2sal.com", + "mail2salaam.com", + "mail2sam.com", + "mail2samantha.com", + "mail2samoa.com", + "mail2samurai.com", + "mail2sandra.com", + "mail2sandy.com", + "mail2sanfrancisco.com", + "mail2sanmarino.com", + "mail2santa.com", + "mail2sara.com", + "mail2sarah.com", + "mail2sat.com", + "mail2saturn.com", + "mail2saudi.com", + "mail2saudiarabia.com", + "mail2save.com", + "mail2savings.com", + "mail2school.com", + "mail2scientist.com", + "mail2scorpio.com", + "mail2scott.com", + "mail2sean.com", + "mail2search.com", + "mail2seattle.com", + "mail2secretagent.com", + "mail2senate.com", + "mail2senegal.com", + "mail2sensual.com", + "mail2seth.com", + "mail2sevenseas.com", + "mail2sexy.com", + "mail2seychelles.com", + "mail2shane.com", + "mail2sharon.com", + "mail2shawn.com", + "mail2ship.com", + "mail2shirley.com", + "mail2shoot.com", + "mail2shuttle.com", + "mail2sierraleone.com", + "mail2simon.com", + "mail2singapore.com", + "mail2single.com", + "mail2site.com", + "mail2skater.com", + "mail2skier.com", + "mail2sky.com", + "mail2sleek.com", + "mail2slim.com", + "mail2slovakia.com", + "mail2slovenia.com", + "mail2smile.com", + "mail2smith.com", + "mail2smooth.com", + "mail2soccer.com", + "mail2soccerfan.com", + "mail2socialist.com", + "mail2soldier.com", + "mail2somalia.com", + "mail2son.com", + "mail2song.com", + "mail2sos.com", + "mail2sound.com", + "mail2southafrica.com", + "mail2southamerica.com", + "mail2southcarolina.com", + "mail2southdakota.com", + "mail2southkorea.com", + "mail2southpole.com", + "mail2spain.com", + "mail2spanish.com", + "mail2spare.com", + "mail2spectrum.com", + "mail2splash.com", + "mail2sponsor.com", + "mail2sports.com", + "mail2srilanka.com", + "mail2stacy.com", + "mail2stan.com", + "mail2stanley.com", + "mail2star.com", + "mail2state.com", + "mail2stephanie.com", + "mail2steve.com", + "mail2steven.com", + "mail2stewart.com", + "mail2stlouis.com", + "mail2stock.com", + "mail2stockholm.com", + "mail2stockmarket.com", + "mail2storage.com", + "mail2store.com", + "mail2strong.com", + "mail2student.com", + "mail2studio.com", + "mail2studio54.com", + "mail2stuntman.com", + "mail2subscribe.com", + "mail2sudan.com", + "mail2superstar.com", + "mail2surfer.com", + "mail2suriname.com", + "mail2susan.com", + "mail2suzie.com", + "mail2swaziland.com", + "mail2sweden.com", + "mail2sweetheart.com", + "mail2swim.com", + "mail2swimmer.com", + "mail2swiss.com", + "mail2switzerland.com", + "mail2sydney.com", + "mail2sylvia.com", + "mail2syria.com", + "mail2taboo.com", + "mail2taiwan.com", + "mail2tajikistan.com", + "mail2tammy.com", + "mail2tango.com", + "mail2tanya.com", + "mail2tanzania.com", + "mail2tara.com", + "mail2taurus.com", + "mail2taxi.com", + "mail2taxidermist.com", + "mail2taylor.com", + "mail2taz.com", + "mail2teacher.com", + "mail2technician.com", + "mail2ted.com", + "mail2telephone.com", + "mail2teletubbie.com", + "mail2tenderness.com", + "mail2tennessee.com", + "mail2tennis.com", + "mail2tennisfan.com", + "mail2terri.com", + "mail2terry.com", + "mail2test.com", + "mail2texas.com", + "mail2thailand.com", + "mail2therapy.com", + "mail2think.com", + "mail2tickets.com", + "mail2tiffany.com", + "mail2tim.com", + "mail2time.com", + "mail2timothy.com", + "mail2tina.com", + "mail2titanic.com", + "mail2toby.com", + "mail2todd.com", + "mail2togo.com", + "mail2tom.com", + "mail2tommy.com", + "mail2tonga.com", + "mail2tony.com", + "mail2touch.com", + "mail2tourist.com", + "mail2tracey.com", + "mail2tracy.com", + "mail2tramp.com", + "mail2travel.com", + "mail2traveler.com", + "mail2travis.com", + "mail2trekkie.com", + "mail2trex.com", + "mail2triallawyer.com", + "mail2trick.com", + "mail2trillionaire.com", + "mail2troy.com", + "mail2truck.com", + "mail2trump.com", + "mail2try.com", + "mail2tunisia.com", + "mail2turbo.com", + "mail2turkey.com", + "mail2turkmenistan.com", + "mail2tv.com", + "mail2tycoon.com", + "mail2tyler.com", + "mail2u4me.com", + "mail2uae.com", + "mail2uganda.com", + "mail2uk.com", + "mail2ukraine.com", + "mail2uncle.com", + "mail2unsubscribe.com", + "mail2uptown.com", + "mail2uruguay.com", + "mail2usa.com", + "mail2utah.com", + "mail2uzbekistan.com", + "mail2v.com", + "mail2vacation.com", + "mail2valentines.com", + "mail2valerie.com", + "mail2valley.com", + "mail2vamoose.com", + "mail2vanessa.com", + "mail2vanuatu.com", + "mail2venezuela.com", + "mail2venous.com", + "mail2venus.com", + "mail2vermont.com", + "mail2vickie.com", + "mail2victor.com", + "mail2victoria.com", + "mail2vienna.com", + "mail2vietnam.com", + "mail2vince.com", + "mail2virginia.com", + "mail2virgo.com", + "mail2visionary.com", + "mail2vodka.com", + "mail2volleyball.com", + "mail2waiter.com", + "mail2wallstreet.com", + "mail2wally.com", + "mail2walter.com", + "mail2warren.com", + "mail2washington.com", + "mail2wave.com", + "mail2way.com", + "mail2waycool.com", + "mail2wayne.com", + "mail2webmaster.com", + "mail2webtop.com", + "mail2webtv.com", + "mail2weird.com", + "mail2wendell.com", + "mail2wendy.com", + "mail2westend.com", + "mail2westvirginia.com", + "mail2whether.com", + "mail2whip.com", + "mail2white.com", + "mail2whitehouse.com", + "mail2whitney.com", + "mail2why.com", + "mail2wilbur.com", + "mail2wild.com", + "mail2willard.com", + "mail2willie.com", + "mail2wine.com", + "mail2winner.com", + "mail2wired.com", + "mail2wisconsin.com", + "mail2woman.com", + "mail2wonder.com", + "mail2world.com", + "mail2worship.com", + "mail2wow.com", + "mail2www.com", + "mail2wyoming.com", + "mail2xfiles.com", + "mail2xox.com", + "mail2yachtclub.com", + "mail2yahalla.com", + "mail2yemen.com", + "mail2yes.com", + "mail2yugoslavia.com", + "mail2zack.com", + "mail2zambia.com", + "mail2zenith.com", + "mail2zephir.com", + "mail2zeus.com", + "mail2zipper.com", + "mail2zoo.com", + "mail2zoologist.com", + "mail2zurich.com", + "mail3000.com", + "mail333.com", + "mail4trash.com", + "mail4u.info", + "mail8.com", + "mailandftp.com", + "mailandnews.com", + "mailas.com", + "mailasia.com", + "mailbidon.com", + "mailbiz.biz", + "mailblocks.com", + "mailbolt.com", + "mailbomb.net", + "mailboom.com", + "mailbox.as", + "mailbox.co.za", + "mailbox.gr", + "mailbox.hu", + "mailbox72.biz", + "mailbox80.biz", + "mailbr.com.br", + "mailbucket.org", + "mailc.net", + "mailcan.com", + "mailcat.biz", + "mailcatch.com", + "mailcc.com", + "mailchoose.co", + "mailcity.com", + "mailclub.fr", + "mailclub.net", + "mailde.de", + "mailde.info", + "maildrop.cc", + "maildrop.gq", + "maildx.com", + "mailed.ro", + "maileimer.de", + "mailexcite.com", + "mailexpire.com", + "mailfa.tk", + "mailfly.com", + "mailforce.net", + "mailforspam.com", + "mailfree.gq", + "mailfreeonline.com", + "mailfreeway.com", + "mailfs.com", + "mailftp.com", + "mailgate.gr", + "mailgate.ru", + "mailgenie.net", + "mailguard.me", + "mailhaven.com", + "mailhood.com", + "mailimate.com", + "mailin8r.com", + "mailinatar.com", + "mailinater.com", + "mailinator.com", + "mailinator.net", + "mailinator.org", + "mailinator.us", + "mailinator2.com", + "mailinblack.com", + "mailincubator.com", + "mailingaddress.org", + "mailingweb.com", + "mailisent.com", + "mailismagic.com", + "mailite.com", + "mailmate.com", + "mailme.dk", + "mailme.gq", + "mailme.ir", + "mailme.lv", + "mailme24.com", + "mailmetrash.com", + "mailmight.com", + "mailmij.nl", + "mailmoat.com", + "mailms.com", + "mailnator.com", + "mailnesia.com", + "mailnew.com", + "mailnull.com", + "mailops.com", + "mailorg.org", + "mailoye.com", + "mailpanda.com", + "mailpick.biz", + "mailpokemon.com", + "mailpost.zzn.com", + "mailpride.com", + "mailproxsy.com", + "mailpuppy.com", + "mailquack.com", + "mailrock.biz", + "mailroom.com", + "mailru.com", + "mailsac.com", + "mailscrap.com", + "mailseal.de", + "mailsent.net", + "mailserver.ru", + "mailservice.ms", + "mailshell.com", + "mailshuttle.com", + "mailsiphon.com", + "mailslapping.com", + "mailsnare.net", + "mailstart.com", + "mailstartplus.com", + "mailsurf.com", + "mailtag.com", + "mailtemp.info", + "mailto.de", + "mailtome.de", + "mailtothis.com", + "mailtrash.net", + "mailtv.net", + "mailtv.tv", + "mailueberfall.de", + "mailup.net", + "mailwire.com", + "mailworks.org", + "mailzi.ru", + "mailzilla.com", + "mailzilla.org", + "makemetheking.com", + "maktoob.com", + "malayalamtelevision.net", + "malayalapathram.com", + "male.ru", + "maltesemail.com", + "mamber.net", + "manager.de", + "manager.in.th", + "mancity.net", + "manlymail.net", + "mantrafreenet.com", + "mantramail.com", + "mantraonline.com", + "manutdfans.com", + "manybrain.com", + "marchmail.com", + "marfino.net", + "margarita.ru", + "mariah-carey.ml.org", + "mariahc.com", + "marijuana.com", + "marijuana.nl", + "marketing.lu", + "marketingfanatic.com", + "marketweighton.com", + "married-not.com", + "marriedandlovingit.com", + "marry.ru", + "marsattack.com", + "martindalemail.com", + "martinguerre.net", + "mash4077.com", + "masrawy.com", + "matmail.com", + "mauimail.com", + "mauritius.com", + "maximumedge.com", + "maxleft.com", + "maxmail.co.uk", + "mayaple.ru", + "mbox.com.au", + "mbx.cc", + "mchsi.com", + "mcrmail.com", + "me-mail.hu", + "me.com", + "meanpeoplesuck.com", + "meatismurder.net", + "medical.net.au", + "medmail.com", + "medscape.com", + "meetingmall.com", + "mega.zik.dj", + "megago.com", + "megamail.pt", + "megapoint.com", + "mehrani.com", + "mehtaweb.com", + "meine-dateien.info", + "meine-diashow.de", + "meine-fotos.info", + "meine-urlaubsfotos.de", + "meinspamschutz.de", + "mekhong.com", + "melodymail.com", + "meloo.com", + "meltmail.com", + "members.student.com", + "menja.net", + "merda.flu.cc", + "merda.igg.biz", + "merda.nut.cc", + "merda.usa.cc", + "merseymail.com", + "mesra.net", + "message.hu", + "message.myspace.com", + "messagebeamer.de", + "messages.to", + "messagez.com", + "metacrawler.com", + "metalfan.com", + "metaping.com", + "metta.lk", + "mexicomail.com", + "mezimages.net", + "mfsa.ru", + "miatadriver.com", + "mierdamail.com", + "miesto.sk", + "mighty.co.za", + "migmail.net", + "migmail.pl", + "migumail.com", + "miho-nakayama.com", + "mikrotamanet.com", + "millionaireintraining.com", + "millionairemail.com", + "milmail.com", + "milmail.com15", + "mindless.com", + "mindspring.com", + "minermail.com", + "mini-mail.com", + "minister.com", + "ministry-of-silly-walks.de", + "mintemail.com", + "misery.net", + "misterpinball.de", + "mit.tc", + "mittalweb.com", + "mixmail.com", + "mjfrogmail.com", + "ml1.net", + "mlanime.com", + "mlb.bounce.ed10.net", + "mm.st", + "mmail.com", + "mns.ru", + "mo3gov.net", + "moakt.com", + "mobico.ru", + "mobilbatam.com", + "mobileninja.co.uk", + "mochamail.com", + "modemnet.net", + "modernenglish.com", + "modomail.com", + "mohammed.com", + "mohmal.com", + "moldova.cc", + "moldova.com", + "moldovacc.com", + "mom-mail.com", + "momslife.com", + "moncourrier.fr.nf", + "monemail.com", + "monemail.fr.nf", + "money.net", + "mongol.net", + "monmail.fr.nf", + "monsieurcinema.com", + "montevideo.com.uy", + "monumentmail.com", + "moomia.com", + "moonman.com", + "moose-mail.com", + "mor19.uu.gl", + "mortaza.com", + "mosaicfx.com", + "moscowmail.com", + "mosk.ru", + "most-wanted.com", + "mostlysunny.com", + "motorcyclefan.net", + "motormania.com", + "movemail.com", + "movieemail.net", + "movieluver.com", + "mox.pp.ua", + "mozartmail.com", + "mozhno.net", + "mp3haze.com", + "mp4.it", + "mr-potatohead.com", + "mrpost.com", + "mrspender.com", + "mscold.com", + "msgbox.com", + "msn.cn", + "msn.com", + "msn.nl", + "msx.ru", + "mt2009.com", + "mt2014.com", + "mt2015.com", + "mt2016.com", + "mttestdriver.com", + "muehlacker.tk", + "multiplechoices", + "mundomail.net", + "munich.com", + "music.com", + "music.com19", + "music.maigate.ru", + "musician.com", + "musician.org", + "musicscene.org", + "muskelshirt.de", + "muslim.com", + "muslimemail.com", + "muslimsonline.com", + "mutantweb.com", + "mvrht.com", + "my.com", + "my10minutemail.com", + "mybox.it", + "mycabin.com", + "mycampus.com", + "mycard.net.ua", + "mycity.com", + "mycleaninbox.net", + "mycool.com", + "mydomain.com", + "mydotcomaddress.com", + "myfairpoint.net", + "myfamily.com", + "myfastmail.com", + "myfunnymail.com", + "mygo.com", + "myiris.com", + "myjazzmail.com", + "mymac.ru", + "mymacmail.com", + "mymail-in.net", + "mymail.ro", + "mynamedot.com", + "mynet.com", + "mynetaddress.com", + "mynetstore.de", + "myotw.net", + "myownemail.com", + "myownfriends.com", + "mypacks.net", + "mypad.com", + "mypartyclip.de", + "mypersonalemail.com", + "myphantomemail.com", + "myplace.com", + "myrambler.ru", + "myrealbox.com", + "myremarq.com", + "mysamp.de", + "myself.com", + "myspaceinc.net", + "myspamless.com", + "mystupidjob.com", + "mytemp.email", + "mytempemail.com", + "mytempmail.com", + "mythirdage.com", + "mytrashmail.com", + "myway.com", + "myworldmail.com", + "n2.com", + "n2baseball.com", + "n2business.com", + "n2mail.com", + "n2soccer.com", + "n2software.com", + "nabc.biz", + "nabuma.com", + "nafe.com", + "nagarealm.com", + "nagpal.net", + "nakedgreens.com", + "name.com", + "nameplanet.com", + "nanaseaikawa.com", + "nandomail.com", + "naplesnews.net", + "naseej.com", + "nate.com", + "nativestar.net", + "nativeweb.net", + "naui.net", + "naver.com", + "navigator.lv", + "navy.org", + "naz.com", + "nc.rr.com", + "nc.ru", + "nchoicemail.com", + "neeva.net", + "nekto.com", + "nekto.net", + "nekto.ru", + "nemra1.com", + "nenter.com", + "neo.rr.com", + "neomailbox.com", + "nepwk.com", + "nervhq.org", + "nervmich.net", + "nervtmich.net", + "net-c.be", + "net-c.ca", + "net-c.cat", + "net-c.com", + "net-c.es", + "net-c.fr", + "net-c.it", + "net-c.lu", + "net-c.nl", + "net-c.pl", + "net-pager.net", + "net-shopping.com", + "net.tf", + "net4b.pt", + "net4you.at", + "netaddres.ru", + "netaddress.ru", + "netbounce.com", + "netbroadcaster.com", + "netby.dk", + "netc.eu", + "netc.fr", + "netc.it", + "netc.lu", + "netc.pl", + "netcenter-vn.net", + "netcity.ru", + "netcmail.com", + "netcourrier.com", + "netexecutive.com", + "netexpressway.com", + "netfirms.com", + "netgenie.com", + "netian.com", + "netizen.com.ar", + "netkushi.com", + "netlane.com", + "netlimit.com", + "netmail.kg", + "netmails.com", + "netmails.net", + "netman.ru", + "netmanor.com", + "netmongol.com", + "netnet.com.sg", + "netnoir.net", + "netpiper.com", + "netposta.net", + "netradiomail.com", + "netralink.com", + "netscape.net", + "netscapeonline.co.uk", + "netspace.net.au", + "netspeedway.com", + "netsquare.com", + "netster.com", + "nettaxi.com", + "nettemail.com", + "netterchef.de", + "netti.fi", + "netvigator.com", + "netzero.com", + "netzero.net", + "netzidiot.de", + "netzoola.com", + "neue-dateien.de", + "neuf.fr", + "neuro.md", + "neustreet.com", + "neverbox.com", + "newap.ru", + "newarbat.net", + "newmail.com", + "newmail.net", + "newmail.ru", + "newsboysmail.com", + "newyork.com", + "newyorkcity.com", + "nextmail.ru", + "nexxmail.com", + "nfmail.com", + "ngs.ru", + "nhmail.com", + "nice-4u.com", + "nicebush.com", + "nicegal.com", + "nicholastse.net", + "nicolastse.com", + "niepodam.pl", + "nightimeuk.com", + "nightmail.com", + "nightmail.ru", + "nikopage.com", + "nikulino.net", + "nimail.com", + "nincsmail.hu", + "ninfan.com", + "nirvanafan.com", + "nm.ru", + "nmail.cf", + "nnh.com", + "nnov.ru", + "no-spam.ws", + "no4ma.ru", + "noavar.com", + "noblepioneer.com", + "nogmailspam.info", + "nomail.pw", + "nomail.xl.cx", + "nomail2me.com", + "nomorespamemails.com", + "nonpartisan.com", + "nonspam.eu", + "nonspammer.de", + "nonstopcinema.com", + "norika-fujiwara.com", + "norikomail.com", + "northgates.net", + "nospam.ze.tc", + "nospam4.us", + "nospamfor.us", + "nospammail.net", + "nospamthanks.info", + "notmailinator.com", + "notsharingmy.info", + "notyouagain.com", + "novogireevo.net", + "novokosino.net", + "nowhere.org", + "nowmymail.com", + "ntelos.net", + "ntlhelp.net", + "ntlworld.com", + "ntscan.com", + "null.net", + "nullbox.info", + "numep.ru", + "nur-fuer-spam.de", + "nurfuerspam.de", + "nus.edu.sg", + "nuvse.com", + "nwldx.com", + "nxt.ru", + "ny.com", + "nybce.com", + "nybella.com", + "nyc.com", + "nycmail.com", + "nz11.com", + "nzoomail.com", + "o-tay.com", + "o2.co.uk", + "o2.pl", + "oaklandas-fan.com", + "oath.com", + "objectmail.com", + "obobbo.com", + "oceanfree.net", + "ochakovo.net", + "odaymail.com", + "oddpost.com", + "odmail.com", + "odnorazovoe.ru", + "office-dateien.de", + "office-email.com", + "officedomain.com", + "offroadwarrior.com", + "oi.com.br", + "oicexchange.com", + "oikrach.com", + "ok.kz", + "ok.net", + "ok.ru", + "okbank.com", + "okhuman.com", + "okmad.com", + "okmagic.com", + "okname.net", + "okuk.com", + "oldbuthealthy.com", + "oldies1041.com", + "oldies104mail.com", + "ole.com", + "olemail.com", + "oligarh.ru", + "olympist.net", + "olypmall.ru", + "omaninfo.com", + "omen.ru", + "ondikoi.com", + "onebox.com", + "onenet.com.ar", + "oneoffemail.com", + "oneoffmail.com", + "onet.com.pl", + "onet.eu", + "onet.pl", + "onewaymail.com", + "oninet.pt", + "onlatedotcom.info", + "online.de", + "online.ie", + "online.ms", + "online.nl", + "online.ru", + "onlinecasinogamblings.com", + "onlinewiz.com", + "onmicrosoft.com", + "onmilwaukee.com", + "onobox.com", + "onvillage.com", + "oopi.org", + "op.pl", + "opayq.com", + "opendiary.com", + "openmailbox.org", + "operafan.com", + "operamail.com", + "opoczta.pl", + "optician.com", + "optonline.net", + "optusnet.com.au", + "orange.fr", + "orange.net", + "orbitel.bg", + "ordinaryamerican.net", + "orgmail.net", + "orthodontist.net", + "osite.com.br", + "oso.com", + "otakumail.com", + "otherinbox.com", + "our-computer.com", + "our-office.com", + "our.st", + "ourbrisbane.com", + "ourklips.com", + "ournet.md", + "outel.com", + "outgun.com", + "outlawspam.com", + "outlook.at", + "outlook.be", + "outlook.cl", + "outlook.co.id", + "outlook.co.il", + "outlook.co.nz", + "outlook.co.th", + "outlook.com", + "outlook.com.au", + "outlook.com.br", + "outlook.com.gr", + "outlook.com.pe", + "outlook.com.tr", + "outlook.com.vn", + "outlook.cz", + "outlook.de", + "outlook.dk", + "outlook.es", + "outlook.fr", + "outlook.hu", + "outlook.ie", + "outlook.in", + "outlook.it", + "outlook.jp", + "outlook.kr", + "outlook.lv", + "outlook.my", + "outlook.nl", + "outlook.ph", + "outlook.pt", + "outlook.sa", + "outlook.sg", + "outlook.sk", + "outloook.com", + "over-the-rainbow.com", + "ovi.com", + "ovpn.to", + "owlpic.com", + "ownmail.net", + "ozbytes.net.au", + "ozemail.com.au", + "ozz.ru", + "pacbell.net", + "pacific-ocean.com", + "pacific-re.com", + "pacificwest.com", + "packersfan.com", + "pagina.de", + "pagons.org", + "paidforsurf.com", + "pakistanmail.com", + "pakistanoye.com", + "palestinemail.com", + "pancakemail.com", + "pandawa.com", + "pandora.be", + "paradiseemail.com", + "paris.com", + "parkjiyoon.com", + "parrot.com", + "parsmail.com", + "partlycloudy.com", + "partybombe.de", + "partyheld.de", + "partynight.at", + "parvazi.com", + "passwordmail.com", + "pathfindermail.com", + "patmail.com", + "patra.net", + "pconnections.net", + "pcpostal.com", + "pcsrock.com", + "pcusers.otherinbox.com", + "peachworld.com", + "pechkin.ru", + "pediatrician.com", + "pekklemail.com", + "pemail.net", + "penpen.com", + "peoplepc.com", + "peopleweb.com", + "pepbot.com", + "perfectmail.com", + "perovo.net", + "perso.be", + "personal.ro", + "personales.com", + "petlover.com", + "petml.com", + "petr.ru", + "pettypool.com", + "pezeshkpour.com", + "pfui.ru", + "phayze.com", + "phone.net", + "photo-impact.eu", + "photographer.net", + "phpbb.uu.gl", + "phreaker.net", + "phus8kajuspa.cu.cc", + "physicist.net", + "pianomail.com", + "pickupman.com", + "picusnet.com", + "piercedallover.com", + "pigeonportal.com", + "pigmail.net", + "pigpig.net", + "pilotemail.com", + "pimagop.com", + "pinoymail.com", + "piracha.net", + "pisem.net", + "pjjkp.com", + "planet-mail.com", + "planet.nl", + "planetaccess.com", + "planetall.com", + "planetarymotion.net", + "planetdirect.com", + "planetearthinter.net", + "planetmail.com", + "planetmail.net", + "planetout.com", + "plasa.com", + "playersodds.com", + "playful.com", + "playstation.sony.com", + "plexolan.de", + "pluno.com", + "plus.com", + "plus.google.com", + "plusmail.com.br", + "pmail.net", + "pobox.com", + "pobox.hu", + "pobox.ru", + "pobox.sk", + "pochta.by", + "pochta.ru", + "pochta.ws", + "pochtamt.ru", + "poczta.fm", + "poczta.onet.pl", + "poetic.com", + "pokemail.net", + "pokemonpost.com", + "pokepost.com", + "polandmail.com", + "polbox.com", + "policeoffice.com", + "politician.com", + "politikerclub.de", + "polizisten-duzer.de", + "polyfaust.com", + "poofy.org", + "poohfan.com", + "pookmail.com", + "pool-sharks.com", + "poond.com", + "pop3.ru", + "popaccount.com", + "popmail.com", + "popsmail.com", + "popstar.com", + "populus.net", + "portableoffice.com", + "portugalmail.com", + "portugalmail.pt", + "portugalnet.com", + "positive-thinking.com", + "post.com", + "post.cz", + "post.sk", + "posta.net", + "posta.ro", + "posta.rosativa.ro.org", + "postaccesslite.com", + "postafiok.hu", + "postafree.com", + "postaweb.com", + "poste.it", + "postfach.cc", + "postinbox.com", + "postino.ch", + "postino.it", + "postmark.net", + "postmaster.co.uk", + "postmaster.twitter.com", + "postpro.net", + "pousa.com", + "powerdivas.com", + "powerfan.com", + "pp.inet.fi", + "praize.com", + "pray247.com", + "predprinimatel.ru", + "premium-mail.fr", + "premiumproducts.com", + "premiumservice.com", + "prepodavatel.ru", + "presidency.com", + "presnya.net", + "press.co.jp", + "prettierthanher.com", + "priest.com", + "primposta.com", + "primposta.hu", + "printesamargareta.ro", + "privacy.net", + "privatdemail.net", + "privy-mail.com", + "privymail.de", + "pro.hu", + "probemail.com", + "prodigy.net", + "prodigy.net.mx", + "professor.ru", + "progetplus.it", + "programist.ru", + "programmer.net", + "programozo.hu", + "proinbox.com", + "project2k.com", + "prokuratura.ru", + "prolaunch.com", + "promessage.com", + "prontomail.com", + "prontomail.compopulus.net", + "protestant.com", + "protonmail.com", + "proxymail.eu", + "prtnx.com", + "prydirect.info", + "psv-supporter.com", + "ptd.net", + "public-files.de", + "public.usa.com", + "publicist.com", + "pulp-fiction.com", + "punkass.com", + "puppy.com.my", + "purinmail.com", + "purpleturtle.com", + "put2.net", + "putthisinyourspamdatabase.com", + "pwrby.com", + "q.com", + "qatar.io", + "qatarmail.com", + "qdice.com", + "qip.ru", + "qmail.com", + "qprfans.com", + "qq.com", + "qrio.com", + "quackquack.com", + "quake.ru", + "quakemail.com", + "qualityservice.com", + "quantentunnel.de", + "qudsmail.com", + "quepasa.com", + "quickhosts.com", + "quickinbox.com", + "quickmail.nl", + "quickmail.ru", + "quicknet.nl", + "quickwebmail.com", + "quiklinks.com", + "quikmail.com", + "qv7.info", + "qwest.net", + "qwestoffice.net", + "r-o-o-t.com", + "r7.com", + "raakim.com", + "racedriver.com", + "racefanz.com", + "racingfan.com.au", + "racingmail.com", + "radicalz.com", + "radiku.ye.vc", + "radiologist.net", + "ragingbull.com", + "ralib.com", + "rambler.ru", + "ranmamail.com", + "rastogi.net", + "ratt-n-roll.com", + "rattle-snake.com", + "raubtierbaendiger.de", + "ravearena.com", + "ravefan.com", + "ravemail.co.za", + "ravemail.com", + "razormail.com", + "rccgmail.org", + "rcn.com", + "rcpt.at", + "realemail.net", + "realestatemail.net", + "reality-concept.club", + "reallyfast.biz", + "reallyfast.info", + "reallymymail.com", + "realradiomail.com", + "realtyagent.com", + "realtyalerts.ca", + "reborn.com", + "recode.me", + "reconmail.com", + "recursor.net", + "recycledmail.com", + "recycler.com", + "recyclermail.com", + "rediff.com", + "rediffmail.com", + "rediffmailpro.com", + "rednecks.com", + "redseven.de", + "redsfans.com", + "redwhitearmy.com", + "regbypass.com", + "reggaefan.com", + "reggafan.com", + "regiononline.com", + "registerednurses.com", + "regspaces.tk", + "reincarnate.com", + "relia.com", + "reliable-mail.com", + "religious.com", + "remail.ga", + "renren.com", + "repairman.com", + "reply.hu", + "reply.ticketmaster.com", + "represantive.com", + "representative.com", + "rescueteam.com", + "resgedvgfed.tk", + "resource.calendar.google.com", + "resumemail.com", + "retailfan.com", + "rexian.com", + "rezai.com", + "rhyta.com", + "richmondhill.com", + "rickymail.com", + "rin.ru", + "ring.by", + "riopreto.com.br", + "rklips.com", + "rmqkr.net", + "rn.com", + "ro.ru", + "roadrunner.com", + "roanokemail.com", + "rock.com", + "rocketmail.com", + "rocketship.com", + "rockfan.com", + "rodrun.com", + "rogers.com", + "rojname.com", + "rol.ro", + "rome.com", + "romymichele.com", + "roosh.com", + "rootprompt.org", + "rotfl.com", + "roughnet.com", + "royal.net", + "rpharmacist.com", + "rr.com", + "rrohio.com", + "rsub.com", + "rt.nl", + "rtrtr.com", + "ru.ru", + "rubyridge.com", + "runbox.com", + "rushpost.com", + "ruttolibero.com", + "rvshop.com", + "rxdoc.biz", + "s-mail.com", + "s0ny.net", + "sabreshockey.com", + "sacbeemail.com", + "saeuferleber.de", + "safarimail.com", + "safe-mail.net", + "safersignup.de", + "safetymail.info", + "safetypost.de", + "safrica.com", + "sagra.lu", + "sagra.lu.lu", + "sagra.lumarketing.lu", + "sags-per-mail.de", + "sailormoon.com", + "saint-mike.org", + "saintly.com", + "saintmail.net", + "sale-sale-sale.com", + "salehi.net", + "salesperson.net", + "samerica.com", + "samilan.net", + "samiznaetekogo.net", + "sammimail.com", + "sanchezsharks.com", + "sandelf.de", + "sanfranmail.com", + "sanook.com", + "sanriotown.com", + "santanmail.com", + "sapo.pt", + "sativa.ro.org", + "saturnfans.com", + "saturnperformance.com", + "saudia.com", + "savecougars.com", + "savelife.ml", + "saveowls.com", + "sayhi.net", + "saynotospams.com", + "sbcglbal.net", + "sbcglobal.com", + "sbcglobal.net", + "scandalmail.com", + "scanova.in", + "scanova.io", + "scarlet.nl", + "scfn.net", + "schafmail.de", + "schizo.com", + "schmusemail.de", + "schoolemail.com", + "schoolmail.com", + "schoolsucks.com", + "schreib-doch-mal-wieder.de", + "schrott-email.de", + "schweiz.org", + "sci.fi", + "science.com.au", + "scientist.com", + "scifianime.com", + "scotland.com", + "scotlandmail.com", + "scottishmail.co.uk", + "scottishtories.com", + "scottsboro.org", + "scrapbookscrapbook.com", + "scubadiving.com", + "seanet.com", + "search.ua", + "search417.com", + "searchwales.com", + "sebil.com", + "seckinmail.com", + "secret-police.com", + "secretarias.com", + "secretary.net", + "secretemail.de", + "secretservices.net", + "secure-mail.biz", + "secure-mail.cc", + "seductive.com", + "seekstoyboy.com", + "seguros.com.br", + "sekomaonline.com", + "selfdestructingmail.com", + "sellingspree.com", + "send.hu", + "sendmail.ru", + "sendme.cz", + "sendspamhere.com", + "senseless-entertainment.com", + "sent.as", + "sent.at", + "sent.com", + "sentrismail.com", + "serga.com.ar", + "servemymail.com", + "servermaps.net", + "services391.com", + "sesmail.com", + "sexmagnet.com", + "seznam.cz", + "sfr.fr", + "shahweb.net", + "shaniastuff.com", + "shared-files.de", + "sharedmailbox.org", + "sharewaredevelopers.com", + "sharklasers.com", + "sharmaweb.com", + "shaw.ca", + "she.com", + "shellov.net", + "shieldedmail.com", + "shieldemail.com", + "shiftmail.com", + "shinedyoureyes.com", + "shitaway.cf", + "shitaway.cu.cc", + "shitaway.ga", + "shitaway.gq", + "shitaway.ml", + "shitaway.tk", + "shitaway.usa.cc", + "shitmail.de", + "shitmail.me", + "shitmail.org", + "shitware.nl", + "shmeriously.com", + "shockinmytown.cu.cc", + "shootmail.com", + "shortmail.com", + "shortmail.net", + "shotgun.hu", + "showfans.com", + "showslow.de", + "shqiptar.eu", + "shuf.com", + "sialkotcity.com", + "sialkotian.com", + "sialkotoye.com", + "sibmail.com", + "sify.com", + "sigaret.net", + "silkroad.net", + "simbamail.fm", + "sina.cn", + "sina.com", + "sinamail.com", + "singapore.com", + "singles4jesus.com", + "singmail.com", + "singnet.com.sg", + "singpost.com", + "sinnlos-mail.de", + "sirindia.com", + "siteposter.net", + "skafan.com", + "skeefmail.com", + "skim.com", + "skizo.hu", + "skrx.tk", + "skunkbox.com", + "sky.com", + "skynet.be", + "slamdunkfan.com", + "slapsfromlastnight.com", + "slaskpost.se", + "slave-auctions.net", + "slickriffs.co.uk", + "slingshot.com", + "slippery.email", + "slipry.net", + "slo.net", + "slotter.com", + "sm.westchestergov.com", + "smap.4nmv.ru", + "smapxsmap.net", + "smashmail.de", + "smellfear.com", + "smellrear.com", + "smileyface.comsmithemail.net", + "sminkymail.com", + "smoothmail.com", + "sms.at", + "smtp.ru", + "snail-mail.net", + "snail-mail.ney", + "snakebite.com", + "snakemail.com", + "sndt.net", + "sneakemail.com", + "sneakmail.de", + "snet.net", + "sniper.hu", + "snkmail.com", + "snoopymail.com", + "snowboarding.com", + "snowdonia.net", + "so-simple.org", + "socamail.com", + "socceraccess.com", + "socceramerica.net", + "soccermail.com", + "soccermomz.com", + "social-mailer.tk", + "socialworker.net", + "sociologist.com", + "sofimail.com", + "sofort-mail.de", + "sofortmail.de", + "softhome.net", + "sogetthis.com", + "sogou.com", + "sohu.com", + "sokolniki.net", + "sol.dk", + "solar-impact.pro", + "solcon.nl", + "soldier.hu", + "solution4u.com", + "solvemail.info", + "songwriter.net", + "sonnenkinder.org", + "soodomail.com", + "soodonims.com", + "soon.com", + "soulfoodcookbook.com", + "soundofmusicfans.com", + "southparkmail.com", + "sovsem.net", + "sp.nl", + "space-bank.com", + "space-man.com", + "space-ship.com", + "space-travel.com", + "space.com", + "spaceart.com", + "spacebank.com", + "spacemart.com", + "spacetowns.com", + "spacewar.com", + "spainmail.com", + "spam.2012-2016.ru", + "spam4.me", + "spamail.de", + "spamarrest.com", + "spamavert.com", + "spambob.com", + "spambob.net", + "spambob.org", + "spambog.com", + "spambog.de", + "spambog.net", + "spambog.ru", + "spambooger.com", + "spambox.info", + "spambox.us", + "spamcannon.com", + "spamcannon.net", + "spamcero.com", + "spamcon.org", + "spamcorptastic.com", + "spamcowboy.com", + "spamcowboy.net", + "spamcowboy.org", + "spamday.com", + "spamdecoy.net", + "spameater.com", + "spameater.org", + "spamex.com", + "spamfree.eu", + "spamfree24.com", + "spamfree24.de", + "spamfree24.info", + "spamfree24.net", + "spamfree24.org", + "spamgoes.in", + "spamgourmet.com", + "spamgourmet.net", + "spamgourmet.org", + "spamherelots.com", + "spamhereplease.com", + "spamhole.com", + "spamify.com", + "spaminator.de", + "spamkill.info", + "spaml.com", + "spaml.de", + "spammotel.com", + "spamobox.com", + "spamoff.de", + "spamslicer.com", + "spamspot.com", + "spamstack.net", + "spamthis.co.uk", + "spamtroll.net", + "spankthedonkey.com", + "spartapiet.com", + "spazmail.com", + "speed.1s.fr", + "speedemail.net", + "speedpost.net", + "speedrules.com", + "speedrulz.com", + "speedy.com.ar", + "speedymail.org", + "sperke.net", + "spils.com", + "spinfinder.com", + "spiritseekers.com", + "spl.at", + "spoko.pl", + "spoofmail.de", + "sportemail.com", + "sportmail.ru", + "sportsmail.com", + "sporttruckdriver.com", + "spray.no", + "spray.se", + "spybox.de", + "spymac.com", + "sraka.xyz", + "srilankan.net", + "ssl-mail.com", + "st-davids.net", + "stade.fr", + "stalag13.com", + "standalone.net", + "starbuzz.com", + "stargateradio.com", + "starmail.com", + "starmail.org", + "starmedia.com", + "starplace.com", + "starspath.com", + "start.com.au", + "starting-point.com", + "startkeys.com", + "startrekmail.com", + "starwars-fans.com", + "stealthmail.com", + "stillchronic.com", + "stinkefinger.net", + "stipte.nl", + "stockracer.com", + "stockstorm.com", + "stoned.com", + "stones.com", + "stop-my-spam.pp.ua", + "stopdropandroll.com", + "storksite.com", + "streber24.de", + "streetwisemail.com", + "stribmail.com", + "strompost.com", + "strongguy.com", + "student.su", + "studentcenter.org", + "stuffmail.de", + "subnetwork.com", + "subram.com", + "sudanmail.net", + "sudolife.me", + "sudolife.net", + "sudomail.biz", + "sudomail.com", + "sudomail.net", + "sudoverse.com", + "sudoverse.net", + "sudoweb.net", + "sudoworld.com", + "sudoworld.net", + "sueddeutsche.de", + "suhabi.com", + "suisse.org", + "sukhumvit.net", + "sul.com.br", + "sunmail1.com", + "sunpoint.net", + "sunrise-sunset.com", + "sunsgame.com", + "sunumail.sn", + "suomi24.fi", + "super-auswahl.de", + "superdada.com", + "supereva.it", + "supergreatmail.com", + "supermail.ru", + "supermailer.jp", + "superman.ru", + "superposta.com", + "superrito.com", + "superstachel.de", + "surat.com", + "suremail.info", + "surf3.net", + "surfree.com", + "surfsupnet.net", + "surfy.net", + "surgical.net", + "surimail.com", + "survivormail.com", + "susi.ml", + "sviblovo.net", + "svk.jp", + "swbell.net", + "sweb.cz", + "swedenmail.com", + "sweetville.net", + "sweetxxx.de", + "swift-mail.com", + "swiftdesk.com", + "swingeasyhithard.com", + "swingfan.com", + "swipermail.zzn.com", + "swirve.com", + "swissinfo.org", + "swissmail.com", + "swissmail.net", + "switchboardmail.com", + "switzerland.org", + "sx172.com", + "sympatico.ca", + "syom.com", + "syriamail.com", + "t-online.de", + "t.psh.me", + "t2mail.com", + "tafmail.com", + "takoe.com", + "takoe.net", + "takuyakimura.com", + "talk21.com", + "talkcity.com", + "talkinator.com", + "talktalk.co.uk", + "tamb.ru", + "tamil.com", + "tampabay.rr.com", + "tangmonkey.com", + "tankpolice.com", + "taotaotano.com", + "tatanova.com", + "tattooedallover.com", + "tattoofanatic.com", + "tbwt.com", + "tcc.on.ca", + "tds.net", + "teacher.com", + "teachermail.net", + "teachers.org", + "teamdiscovery.com", + "teamtulsa.net", + "tech-center.com", + "tech4peace.org", + "techemail.com", + "techie.com", + "technisamail.co.za", + "technologist.com", + "technologyandstocks.com", + "techpointer.com", + "techscout.com", + "techseek.com", + "techsniper.com", + "techspot.com", + "teenagedirtbag.com", + "teewars.org", + "tele2.nl", + "telebot.com", + "telebot.net", + "telefonica.net", + "teleline.es", + "telenet.be", + "telepac.pt", + "telerymd.com", + "teleserve.dynip.com", + "teletu.it", + "teleworm.com", + "teleworm.us", + "telfort.nl", + "telfortglasvezel.nl", + "telinco.net", + "telkom.net", + "telpage.net", + "telstra.com", + "telstra.com.au", + "temp-mail.com", + "temp-mail.de", + "temp-mail.org", + "temp-mail.ru", + "temp.headstrong.de", + "tempail.com", + "tempe-mail.com", + "tempemail.biz", + "tempemail.co.za", + "tempemail.com", + "tempemail.net", + "tempinbox.co.uk", + "tempinbox.com", + "tempmail.eu", + "tempmail.it", + "tempmail.us", + "tempmail2.com", + "tempmaildemo.com", + "tempmailer.com", + "tempmailer.de", + "tempomail.fr", + "temporarioemail.com.br", + "temporaryemail.net", + "temporaryemail.us", + "temporaryforwarding.com", + "temporaryinbox.com", + "temporarymailaddress.com", + "tempthe.net", + "tempymail.com", + "temtulsa.net", + "tenchiclub.com", + "tenderkiss.com", + "tennismail.com", + "terminverpennt.de", + "terra.cl", + "terra.com", + "terra.com.ar", + "terra.com.br", + "terra.com.pe", + "terra.es", + "test.com", + "test.de", + "tfanus.com.er", + "tfbnw.net", + "tfz.net", + "tgasa.ru", + "tgma.ru", + "tgngu.ru", + "tgu.ru", + "thai.com", + "thaimail.com", + "thaimail.net", + "thanksnospam.info", + "thankyou2010.com", + "thc.st", + "the-african.com", + "the-airforce.com", + "the-aliens.com", + "the-american.com", + "the-animal.com", + "the-army.com", + "the-astronaut.com", + "the-beauty.com", + "the-big-apple.com", + "the-biker.com", + "the-boss.com", + "the-brazilian.com", + "the-canadian.com", + "the-canuck.com", + "the-captain.com", + "the-chinese.com", + "the-country.com", + "the-cowboy.com", + "the-davis-home.com", + "the-dutchman.com", + "the-eagles.com", + "the-englishman.com", + "the-fastest.net", + "the-fool.com", + "the-frenchman.com", + "the-galaxy.net", + "the-genius.com", + "the-gentleman.com", + "the-german.com", + "the-gremlin.com", + "the-hooligan.com", + "the-italian.com", + "the-japanese.com", + "the-lair.com", + "the-madman.com", + "the-mailinglist.com", + "the-marine.com", + "the-master.com", + "the-mexican.com", + "the-ministry.com", + "the-monkey.com", + "the-newsletter.net", + "the-pentagon.com", + "the-police.com", + "the-prayer.com", + "the-professional.com", + "the-quickest.com", + "the-russian.com", + "the-seasiders.com", + "the-snake.com", + "the-spaceman.com", + "the-stock-market.com", + "the-student.net", + "the-whitehouse.net", + "the-wild-west.com", + "the18th.com", + "thecoolguy.com", + "thecriminals.com", + "thedoghousemail.com", + "thedorm.com", + "theend.hu", + "theglobe.com", + "thegolfcourse.com", + "thegooner.com", + "theheadoffice.com", + "theinternetemail.com", + "thelanddownunder.com", + "thelimestones.com", + "themail.com", + "themillionare.net", + "theoffice.net", + "theplate.com", + "thepokerface.com", + "thepostmaster.net", + "theraces.com", + "theracetrack.com", + "therapist.net", + "thereisnogod.com", + "thesimpsonsfans.com", + "thestreetfighter.com", + "theteebox.com", + "thewatercooler.com", + "thewebpros.co.uk", + "thewizzard.com", + "thewizzkid.com", + "thexyz.ca", + "thexyz.cn", + "thexyz.com", + "thexyz.es", + "thexyz.fr", + "thexyz.in", + "thexyz.mobi", + "thexyz.net", + "thexyz.org", + "thezhangs.net", + "thirdage.com", + "thisgirl.com", + "thisisnotmyrealemail.com", + "thismail.net", + "thoic.com", + "thraml.com", + "thrott.com", + "throwam.com", + "throwawayemailaddress.com", + "thundermail.com", + "tibetemail.com", + "tidni.com", + "tilien.com", + "timein.net", + "timormail.com", + "tin.it", + "tipsandadvice.com", + "tiran.ru", + "tiscali.at", + "tiscali.be", + "tiscali.co.uk", + "tiscali.it", + "tiscali.lu", + "tiscali.se", + "tittbit.in", + "tizi.com", + "tkcity.com", + "tlcfan.com", + "tmail.ws", + "tmailinator.com", + "tmicha.net", + "toast.com", + "toke.com", + "tokyo.com", + "tom.com", + "toolsource.com", + "toomail.biz", + "toothfairy.com", + "topchat.com", + "topgamers.co.uk", + "topletter.com", + "topmail-files.de", + "topmail.com.ar", + "topranklist.de", + "topsurf.com", + "topteam.bg", + "toquedequeda.com", + "torba.com", + "torchmail.com", + "torontomail.com", + "tortenboxer.de", + "totalmail.com", + "totalmail.de", + "totalmusic.net", + "totalsurf.com", + "toughguy.net", + "townisp.com", + "tpg.com.au", + "tradermail.info", + "trainspottingfan.com", + "trash-amil.com", + "trash-mail.at", + "trash-mail.com", + "trash-mail.de", + "trash-mail.ga", + "trash-mail.ml", + "trash2009.com", + "trash2010.com", + "trash2011.com", + "trashdevil.com", + "trashdevil.de", + "trashemail.de", + "trashmail.at", + "trashmail.com", + "trashmail.de", + "trashmail.me", + "trashmail.net", + "trashmail.org", + "trashmailer.com", + "trashymail.com", + "trashymail.net", + "travel.li", + "trayna.com", + "trbvm.com", + "trbvn.com", + "trevas.net", + "trialbytrivia.com", + "trialmail.de", + "trickmail.net", + "trillianpro.com", + "trimix.cn", + "tritium.net", + "trjam.net", + "trmailbox.com", + "tropicalstorm.com", + "truckeremail.net", + "truckers.com", + "truckerz.com", + "truckracer.com", + "truckracers.com", + "trust-me.com", + "truth247.com", + "truthmail.com", + "tsamail.co.za", + "ttml.co.in", + "tulipsmail.net", + "tunisiamail.com", + "turboprinz.de", + "turboprinzessin.de", + "turkey.com", + "turual.com", + "tushino.net", + "tut.by", + "tvcablenet.be", + "tverskie.net", + "tverskoe.net", + "tvnet.lv", + "tvstar.com", + "twc.com", + "twcny.com", + "twentylove.com", + "twinmail.de", + "twinstarsmail.com", + "tx.rr.com", + "tycoonmail.com", + "tyldd.com", + "typemail.com", + "tyt.by", + "u14269.ml", + "u2club.com", + "ua.fm", + "uae.ac", + "uaemail.com", + "ubbi.com", + "ubbi.com.br", + "uboot.com", + "uggsrock.com", + "uk2.net", + "uk2k.com", + "uk2net.com", + "uk7.net", + "uk8.net", + "ukbuilder.com", + "ukcool.com", + "ukdreamcast.com", + "ukmail.org", + "ukmax.com", + "ukr.net", + "ukrpost.net", + "ukrtop.com", + "uku.co.uk", + "ultapulta.com", + "ultimatelimos.com", + "ultrapostman.com", + "umail.net", + "ummah.org", + "umpire.com", + "unbounded.com", + "underwriters.com", + "unforgettable.com", + "uni.de", + "uni.de.de", + "uni.demailto.de", + "unican.es", + "unihome.com", + "universal.pt", + "uno.ee", + "uno.it", + "unofree.it", + "unomail.com", + "unterderbruecke.de", + "uogtritons.com", + "uol.com.ar", + "uol.com.br", + "uol.com.co", + "uol.com.mx", + "uol.com.ve", + "uole.com", + "uole.com.ve", + "uolmail.com", + "uomail.com", + "upc.nl", + "upcmail.nl", + "upf.org", + "upliftnow.com", + "uplipht.com", + "uraniomail.com", + "ureach.com", + "urgentmail.biz", + "uroid.com", + "us.af", + "usa.com", + "usa.net", + "usaaccess.net", + "usanetmail.com", + "used-product.fr", + "userbeam.com", + "usermail.com", + "username.e4ward.com", + "userzap.com", + "usma.net", + "usmc.net", + "uswestmail.net", + "uymail.com", + "uyuyuy.com", + "uzhe.net", + "v-sexi.com", + "v8email.com", + "vaasfc4.tk", + "vahoo.com", + "valemail.net", + "valudeal.net", + "vampirehunter.com", + "varbizmail.com", + "vcmail.com", + "velnet.co.uk", + "velnet.com", + "velocall.com", + "veloxmail.com.br", + "venompen.com", + "verizon.net", + "verizonmail.com", + "verlass-mich-nicht.de", + "versatel.nl", + "verticalheaven.com", + "veryfast.biz", + "veryrealemail.com", + "veryspeedy.net", + "vfemail.net", + "vickaentb.tk", + "videotron.ca", + "viditag.com", + "viewcastmedia.com", + "viewcastmedia.net", + "vinbazar.com", + "violinmakers.co.uk", + "vip.126.com", + "vip.21cn.com", + "vip.citiz.net", + "vip.gr", + "vip.onet.pl", + "vip.qq.com", + "vip.sina.com", + "vipmail.ru", + "viralplays.com", + "virgilio.it", + "virgin.net", + "virginbroadband.com.au", + "virginmedia.com", + "virtual-mail.com", + "virtualactive.com", + "virtualguam.com", + "virtualmail.com", + "visitmail.com", + "visitweb.com", + "visto.com", + "visualcities.com", + "vivavelocity.com", + "vivianhsu.net", + "viwanet.ru", + "vjmail.com", + "vjtimail.com", + "vkcode.ru", + "vlcity.ru", + "vlmail.com", + "vnet.citiz.net", + "vnn.vn", + "vnukovo.net", + "vodafone.nl", + "vodafonethuis.nl", + "voila.fr", + "volcanomail.com", + "vollbio.de", + "volloeko.de", + "vomoto.com", + "voo.be", + "vorsicht-bissig.de", + "vorsicht-scharf.de", + "vote-democrats.com", + "vote-hillary.com", + "vote-republicans.com", + "vote4gop.org", + "votenet.com", + "vovan.ru", + "vp.pl", + "vpn.st", + "vr9.com", + "vsimcard.com", + "vubby.com", + "vyhino.net", + "w3.to", + "wahoye.com", + "walala.org", + "wales2000.net", + "walkmail.net", + "walkmail.ru", + "walla.co.il", + "wam.co.za", + "wanaboo.com", + "wanadoo.co.uk", + "wanadoo.es", + "wanadoo.fr", + "wapda.com", + "war-im-urlaub.de", + "warmmail.com", + "warpmail.net", + "warrior.hu", + "wasteland.rfc822.org", + "watchmail.com", + "waumail.com", + "wazabi.club", + "wbdet.com", + "wearab.net", + "web-contact.info", + "web-emailbox.eu", + "web-ideal.fr", + "web-mail.com.ar", + "web-mail.pp.ua", + "web-police.com", + "web.de", + "webaddressbook.com", + "webadicta.org", + "webave.com", + "webbworks.com", + "webcammail.com", + "webcity.ca", + "webcontact-france.eu", + "webdream.com", + "webemail.me", + "webemaillist.com", + "webinbox.com", + "webindia123.com", + "webjump.com", + "webm4il.info", + "webmail.bellsouth.net", + "webmail.blue", + "webmail.co.yu", + "webmail.co.za", + "webmail.fish", + "webmail.hu", + "webmail.lawyer", + "webmail.ru", + "webmail.wiki", + "webmails.com", + "webmailv.com", + "webname.com", + "webprogramming.com", + "webskulker.com", + "webstation.com", + "websurfer.co.za", + "webtopmail.com", + "webtribe.net", + "webuser.in", + "wee.my", + "weedmail.com", + "weekmail.com", + "weekonline.com", + "wefjo.grn.cc", + "weg-werf-email.de", + "wegas.ru", + "wegwerf-emails.de", + "wegwerfadresse.de", + "wegwerfemail.com", + "wegwerfemail.de", + "wegwerfmail.de", + "wegwerfmail.info", + "wegwerfmail.net", + "wegwerfmail.org", + "wegwerpmailadres.nl", + "wehshee.com", + "weibsvolk.de", + "weibsvolk.org", + "weinenvorglueck.de", + "welsh-lady.com", + "wesleymail.com", + "westnet.com", + "westnet.com.au", + "wetrainbayarea.com", + "wfgdfhj.tk", + "wh4f.org", + "whale-mail.com", + "whartontx.com", + "whatiaas.com", + "whatpaas.com", + "wheelweb.com", + "whipmail.com", + "whoever.com", + "wholefitness.com", + "whoopymail.com", + "whtjddn.33mail.com", + "whyspam.me", + "wickedmail.com", + "wickmail.net", + "wideopenwest.com", + "wildmail.com", + "wilemail.com", + "will-hier-weg.de", + "willhackforfood.biz", + "willselfdestruct.com", + "windowslive.com", + "windrivers.net", + "windstream.com", + "windstream.net", + "winemaven.info", + "wingnutz.com", + "winmail.com.au", + "winning.com", + "winrz.com", + "wir-haben-nachwuchs.de", + "wir-sind-cool.org", + "wirsindcool.de", + "witty.com", + "wiz.cc", + "wkbwmail.com", + "wmail.cf", + "wo.com.cn", + "woh.rr.com", + "wolf-web.com", + "wolke7.net", + "wollan.info", + "wombles.com", + "women-at-work.org", + "women-only.net", + "wonder-net.com", + "wongfaye.com", + "wooow.it", + "work4teens.com", + "worker.com", + "workmail.co.za", + "workmail.com", + "worldbreak.com", + "worldemail.com", + "worldmailer.com", + "worldnet.att.net", + "wormseo.cn", + "wosaddict.com", + "wouldilie.com", + "wovz.cu.cc", + "wow.com", + "wowgirl.com", + "wowmail.com", + "wowway.com", + "wp.pl", + "wptamail.com", + "wrestlingpages.com", + "wrexham.net", + "writeme.com", + "writemeback.com", + "writeremail.com", + "wronghead.com", + "wrongmail.com", + "wtvhmail.com", + "wwdg.com", + "www.com", + "www.e4ward.com", + "www.mailinator.com", + "www2000.net", + "wwwnew.eu", + "wx88.net", + "wxs.net", + "wyrm.supernews.com", + "x-mail.net", + "x-networks.net", + "x.ip6.li", + "x5g.com", + "xagloo.com", + "xaker.ru", + "xd.ae", + "xemaps.com", + "xents.com", + "xing886.uu.gl", + "xmail.com", + "xmaily.com", + "xmastime.com", + "xmenfans.com", + "xms.nl", + "xmsg.com", + "xoom.com", + "xoommail.com", + "xoxox.cc", + "xoxy.net", + "xpectmore.com", + "xpressmail.zzn.com", + "xs4all.nl", + "xsecurity.org", + "xsmail.com", + "xtra.co.nz", + "xtram.com", + "xuno.com", + "xww.ro", + "xy9ce.tk", + "xyz.am", + "xyzfree.net", + "xzapmail.com", + "y7mail.com", + "ya.ru", + "yada-yada.com", + "yaho.com", + "yahoo.ae", + "yahoo.at", + "yahoo.be", + "yahoo.ca", + "yahoo.ch", + "yahoo.cn", + "yahoo.co", + "yahoo.co.id", + "yahoo.co.il", + "yahoo.co.in", + "yahoo.co.jp", + "yahoo.co.kr", + "yahoo.co.nz", + "yahoo.co.th", + "yahoo.co.uk", + "yahoo.co.za", + "yahoo.com", + "yahoo.com.ar", + "yahoo.com.au", + "yahoo.com.br", + "yahoo.com.cn", + "yahoo.com.co", + "yahoo.com.hk", + "yahoo.com.is", + "yahoo.com.mx", + "yahoo.com.my", + "yahoo.com.ph", + "yahoo.com.ru", + "yahoo.com.sg", + "yahoo.com.tr", + "yahoo.com.tw", + "yahoo.com.vn", + "yahoo.cz", + "yahoo.de", + "yahoo.dk", + "yahoo.es", + "yahoo.fi", + "yahoo.fr", + "yahoo.gr", + "yahoo.hu", + "yahoo.ie", + "yahoo.in", + "yahoo.it", + "yahoo.jp", + "yahoo.net", + "yahoo.nl", + "yahoo.no", + "yahoo.pl", + "yahoo.pt", + "yahoo.ro", + "yahoo.ru", + "yahoo.se", + "yahoofs.com", + "yahoomail.com", + "yalla.com", + "yalla.com.lb", + "yalook.com", + "yam.com", + "yandex.com", + "yandex.mail", + "yandex.pl", + "yandex.ru", + "yandex.ua", + "yapost.com", + "yapped.net", + "yawmail.com", + "yclub.com", + "yeah.net", + "yebox.com", + "yeehaa.com", + "yehaa.com", + "yehey.com", + "yemenmail.com", + "yep.it", + "yepmail.net", + "yert.ye.vc", + "yesbox.net", + "yesey.net", + "yeswebmaster.com", + "ygm.com", + "yifan.net", + "ymail.com", + "ynnmail.com", + "yogamaven.com", + "yogotemail.com", + "yomail.info", + "yopmail.com", + "yopmail.fr", + "yopmail.net", + "yopmail.org", + "yopmail.pp.ua", + "yopolis.com", + "yopweb.com", + "youareadork.com", + "youmailr.com", + "youpy.com", + "your-house.com", + "your-mail.com", + "yourdomain.com", + "yourinbox.com", + "yourlifesucks.cu.cc", + "yourlover.net", + "yournightmare.com", + "yours.com", + "yourssincerely.com", + "yourteacher.net", + "yourwap.com", + "youthfire.com", + "youthpost.com", + "youvegotmail.net", + "yuuhuu.net", + "yuurok.com", + "yyhmail.com", + "z1p.biz", + "z6.com", + "z9mail.com", + "za.com", + "zahadum.com", + "zaktouni.fr", + "zcities.com", + "zdnetmail.com", + "zdorovja.net", + "zeeks.com", + "zeepost.nl", + "zehnminuten.de", + "zehnminutenmail.de", + "zensearch.com", + "zensearch.net", + "zerocrime.org", + "zetmail.com", + "zhaowei.net", + "zhouemail.510520.org", + "ziggo.nl", + "zing.vn", + "zionweb.org", + "zip.net", + "zipido.com", + "ziplip.com", + "zipmail.com", + "zipmail.com.br", + "zipmax.com", + "zippymail.info", + "zmail.pt", + "zmail.ru", + "zoemail.com", + "zoemail.net", + "zoemail.org", + "zoho.com", + "zomg.info", + "zonai.com", + "zoneview.net", + "zonnet.nl", + "zooglemail.com", + "zoominternet.net", + "zubee.com", + "zuvio.com", + "zuzzurello.com", + "zvmail.com", + "zwallet.com", + "zweb.in", + "zxcv.com", + "zxcvbnm.com", + "zybermail.com", + "zydecofan.com", + "zzn.com", + "zzom.co.uk", + "zzz.com", +} diff --git a/osrframework/domains/other_subdomains.py b/osrframework/domains/other_subdomains.py index c36f3ed..495574b 100644 --- a/osrframework/domains/other_subdomains.py +++ b/osrframework/domains/other_subdomains.py @@ -52,7 +52,7 @@ ".aintno.info", ".airlinemeals.net", ".ais-salzburg.at", - ".ajctm.ac", + #".ajctm.ac", ".alagrupa.com", ".albertn.ru", ".alexlan.org", @@ -97,7 +97,7 @@ ".beerprojects.com", ".benjamin.it", ".bep.co.id", - ".bertmillernatureclub.org", + #".bertmillernatureclub.org", ".bestforever.com", ".bgdsupport.com", ".bhms.com", @@ -122,7 +122,7 @@ ".brawlcustommusic.com", ".byte4byte.com", ".bzpo.ru", - ".caledonianlab.com", + #".caledonianlab.com", ".catsy.org", ".caturelang.co.id", ".cc.net.br", @@ -205,7 +205,7 @@ ".enemyterritory.org", ".entermypicks.com", ".eolicatalinay.cl", - ".epbsoft.com", + #".epbsoft.com", ".epicgamer.org", ".erke.biz.tr", ".erki.net", @@ -269,7 +269,7 @@ ".gw.lt", ".h0stname.net", ".h4ck.me", - ".hacked.jp", + #".hacked.jp", ".hackquest.com", ".hackrz.org", ".haki.hk", @@ -294,7 +294,7 @@ ".holylandshop.ru", ".home.kg", ".homelinuxserver.org", - ".homenet.org", + #".homenet.org", ".h-o-s-t.name", ".host2go.net", ".hpc.tw", @@ -317,7 +317,7 @@ ".imagetemplate.net", ".iminecraft.se", #".imly.org", - ".india.sh", + #".india.sh", ".inedelya.ru", ".inet2.org", ".inflict.us", @@ -511,7 +511,7 @@ ".psybnc.org", #".publicserviceclub.com", ".punked.us", - ".pwnz.org", + #".pwnz.org", ".qc.to", ".qlbv.vn", ".qualirede.com.br", @@ -613,7 +613,7 @@ ".surfnet.ca", ".sweetriders.com", ".swsc.org.np", - ".sxn.us", + #".sxn.us", ".syntereo.com", ".t28.net", ".t31.org", @@ -642,11 +642,11 @@ ".threecanoes.com", ".tintira.com", ".tn.my", - ".topdanang.com", + #".topdanang.com", #".tragazorras.com", ".tristancartledge.com", ".tru.io", - ".trumgame.net", + #".trumgame.net", ".tth.cl", ".tuck.tw", ".tv-l.ru", @@ -677,7 +677,7 @@ ".violates.me", ".violates.us", ".vistnet.net", - ".vivat-consult.ru", + #".vivat-consult.ru", ".vkagent.ru", ".voles35.ru", ".vomuan.com", diff --git a/osrframework/entify.py b/osrframework/entify.py index 36dc8a3..38615d2 100644 --- a/osrframework/entify.py +++ b/osrframework/entify.py @@ -22,6 +22,7 @@ import argparse +import datetime as dt import json import logging import os @@ -208,7 +209,7 @@ def getParser(): DEFAULT_VALUES = configuration.returnListOfConfigurationValues("entify") - parser = argparse.ArgumentParser(description='entify - entify is a program designed to extract using regular expressions all the entities from the files on a given folder. This software also provides an interface to look for these entities in any given text.', prog='entify', epilog="Check the README.md file for further details on the usage of this program or follow us on Twitter in .", add_help=False) + parser = argparse.ArgumentParser(description='entify - A program designed to extract using regular expressions all the entities from the files on a given folder. This software also provides an interface to look for these entities in any given text.', prog='entify', epilog="Check the README.md file for further details on the usage of this program or follow us on Twitter in .", add_help=False, conflict_handler='resolve') parser._optionals.title = "Input options (one required)" # Adding the main options @@ -216,6 +217,8 @@ listAll = regexp_selection.getAllRegexpNames() groupMainOptions.add_argument('-r', '--regexp', metavar='', choices=listAll, action='store', nargs='+', help='select the regular expressions to be looked for amongst the following: ' + str(listAll)) groupMainOptions.add_argument('-R', '--new_regexp', metavar='', action='store', help='add a new regular expression, for example, for testing purposes.') + groupMainOptions.add_argument('--license', required=False, action='store_true', default=False, help='shows the AGPLv3+ license and exists.') + # Adding the main options groupInput = parser.add_mutually_exclusive_group(required=True) @@ -318,7 +321,8 @@ # Showing the information gathered if requested if not args.quiet: - print(str(now) + "\tA summary of the results obtained are shown in the following table:\n") + now = dt.datetime.now() + print(str(now) + "\tA summary of the results obtained is shown in the following table:\n") print(general.success(general.usufyToTextExport(results))) now = dt.datetime.now() diff --git a/osrframework/enumeration.py b/osrframework/enumeration.py index ec4621b..9fd145e 100644 --- a/osrframework/enumeration.py +++ b/osrframework/enumeration.py @@ -79,7 +79,7 @@ def getParser(): - parser = argparse.ArgumentParser(description='enumerate-profiles - Checking the existence of a possible enumeration.', prog='enumerate-profiles', epilog='Check the README.md file for further details on the usage of this program or follow us on Twitter in .', add_help=False) + parser = argparse.ArgumentParser(description='enumerate-profiles - Checking the existence of a possible enumeration.', prog='enumerate-profiles', epilog='Check the README.md file for further details on the usage of this program or follow us on Twitter in .', add_help=False, conflict_handler='resolve') parser._optionals.title = "Input options (one required)" # Adding the main options diff --git a/osrframework/launcher.py b/osrframework/launcher.py new file mode 100644 index 0000000..01de400 --- /dev/null +++ b/osrframework/launcher.py @@ -0,0 +1,155 @@ +#!/usr/bin/python2 +# -*- coding: utf-8 -*- +# +################################################################################ +# +# Copyright 2015-2018 Félix Brezo and Yaiza Rubio +# +# This program is part of OSRFramework. You can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################ + +import argparse +import sys + +import osrframework +import osrframework.utils.general as general +import osrframework.alias_generator as alias_generator +import osrframework.checkfy as checkfy +import osrframework.domainfy as domainfy +import osrframework.entify as entify +import osrframework.mailfy as mailfy +import osrframework.phonefy as phonefy +import osrframework.searchfy as searchfy +import osrframework.usufy as usufy + + +EPILOG = """ + Use 'osrf --help' to learn more about each command.\n\n + + Check OSRFramework README.md file for further details on the usage of this + program or follow us on Twitter in . +""" + + +class OSRFParser(argparse.ArgumentParser): + def error(self, message): + sys.stderr.write("The following error was thrown by '%s' when parsing the provided parameters:\n\t%s\n\n" % (self.prog, message)) + self.print_help() + sys.exit(2) + +def getParser(): + parser = OSRFParser( + description='OSRFramework CLI', + prog='osrf', + epilog=EPILOG, + conflict_handler='resolve' + ) + + # Add subcommands as subparsers + subcommands = parser.add_subparsers( + title="SUBCOMMANDS", + description="List of available commands that can be invoked using OSRFramework CLI.", + metavar=" ", + dest='command_name' + ) + + subparser_alias_generator = subcommands.add_parser( + "alias_generator", + help="Generates a list of candidate usernames based on known information.", + parents=[alias_generator.getParser()] + ) + subparser_domainfy = subcommands.add_parser( + "domainfy", + help="Checks whether domain names using words and nicknames are available.", + parents=[domainfy.getParser()] + ) + subparser_entify = subcommands.add_parser( + "entify", + help="Extracts entities using regular expressions from provided URIs.", + parents=[entify.getParser()] + ) + subparser_mailfy = subcommands.add_parser( + "mailfy", + help="Gets information about email accounts. ", + parents=[mailfy.getParser()] + ) + subparser_checkfy = subcommands.add_parser( + "checkfy", + help="Verifies if a given email address matches a pattern. ", + parents=[checkfy.getParser()] + ) + subparser_phonefy = subcommands.add_parser( + "phonefy", + help="Looks for information linked to spam practices by a phone number.", + parents=[phonefy.getParser()] + ) + subparser_searchfy = subcommands.add_parser( + "searchfy", + help="Performs queries on several platforms", + parents=[searchfy.getParser()] + ) + subparser_usufy = subcommands.add_parser( + "usufy", + help="Looks for registered accounts with given nicknames", + parents=[usufy.getParser()] + ) + + # About options + groupAbout = parser.add_argument_group('ABOUT ARGUMENTS', 'Showing additional information about this program.') + groupAbout.add_argument('-h', '--help', action='help', help='shows this help and exists.') + groupAbout.add_argument('--license', action='store_true', default=False, help='shows the AGPLv3+ license and exists.') + groupAbout.add_argument('--version', action='version', version='[%(prog)s] OSRFramework ' + osrframework.__version__, help='shows the version of the program and exists.') + + return parser + + +def main(params=None): + """ + Main function to launch OSRFramework CLI + + The function is created in this way so as to let other applications make + use of the full configuration capabilities of the application. The + parameters received are used as parsed by this modules `getParser()`. + + Args: + ----- + params: A list with the parameters as grabbed by the terminal. It is + None when this is called by an entry_point. + + Returns: + -------- + Returns 0 if execution was successful and 1 for failed executions. + """ + parser = getParser() + + try: + if params != None: + args = parser.parse_args(params) + else: + args = parser.parse_args() + except: + sys.exit(0) + + if args.license: + general.showLicense() + + # Launch the appropiate util + module = __import__(args.command_name) + module.main(params[1:]) + sys.exit(0) + + +if __name__ == "__main__": + main(sys.argv[1:]) diff --git a/osrframework/mailfy.py b/osrframework/mailfy.py index 3979562..b33fd88 100644 --- a/osrframework/mailfy.py +++ b/osrframework/mailfy.py @@ -49,22 +49,9 @@ "126.com", "163.com", "189.cn", - #"aaathats3as.com", - "btinternet.com", - #"cocaine.ninja", - #"cock.lu", - #"cock.email", - #"firemail.cc", - #"getbackinthe.kitchen", "gmail.com", - #"hitler.rocks", - "hushmail.com", "icloud.com", - "keemail.me", - "lycos.com", "me.com", - #"memeware.net", - #"noob.com", "protonmail.ch", "protonmail.com", "rediffmail.com", @@ -73,13 +60,12 @@ "tutamail.com", "tutanota.com", "tutanota.de", - #"waifu.club", - #"wp.pl", "ya.ru", "yandex.com", "yeah.net", "zoho.com" ] + LEAKED_DOMAINS = [ "126.com", @@ -88,17 +74,10 @@ "aol.com", "bk.ru", "breakthru.com", - #"aaathats3as.com", "btinternet.com", - #"cocaine.ninja", - #"cock.lu", - #"cock.email", - #"firemail.cc", - #"getbackinthe.kitchen", "gmail.com", "gmx.com", "gmx.de", - #"hitler.rocks", "hotmail.com", "hushmail.com", "icloud.com", @@ -110,8 +89,6 @@ "me.com", "mail.ru", "mail2tor.com", - #"memeware.net", - #"noob.com", "outlook.com", "protonmail.ch", "protonmail.com", @@ -124,9 +101,6 @@ "tutamail.com", "tutanota.com", "tutanota.de", - "ukr.net", - #"waifu.club", - #"wp.pl", "ya.ru", "yahoo.com", "yandex.com", @@ -221,7 +195,7 @@ return True -def grabEmails(emails=None, emailsFile=None, nicks=None, nicksFile=None, domains = EMAIL_DOMAINS, excludeDomains = []): +def grabEmails(emails=None, emailsFile=None, nicks=None, nicksFile=None, domains=EMAIL_DOMAINS, excludeDomains=[]): """ Method that generates a list of emails. @@ -270,9 +244,7 @@ """ A wrapper for being able to launch all the threads. - We will use python-emailahoy library for the verification in non-Windows - systems as it is faster than validate_email. In Windows systems the latter - is preferred. + We will use python-emailahoy library for the verification. Args: ----- @@ -289,10 +261,14 @@ is_valid = True try: - if sys.platform == 'win32': - is_valid = validate_email.validate_email(args, verify=True) + checker = emailahoy.VerifyEmail() + status, message = checker.verify_email_smtp(args, from_host='gmail.com', from_email='sample@gmail.com') + if status == 250: + print("\t[*] Verification of '{}' status: {}. Details:\n{}".format(general.success(args), general.success("SUCCESS ({})".format(str(status))), message)) + is_valid = True else: - is_valid = emailahoy.verify_email_address(args) + print("\t[*] Verification of '{}' status: {}. Details:\n{}".format(general.error(args), general.error("FAILED ({})".format(str(status))), message)) + is_valid = False except Exception, e: print(general.warning("WARNING. An error was found when performing the search. You can omit this message.\n" + str(e))) is_valid = False @@ -385,7 +361,7 @@ for m in emails: # We need to create all the arguments that will be needed parameters = ( m, ) - pool.apply_async (pool_function, args= parameters, callback = log_result ) + pool.apply_async (pool_function, args=parameters, callback=log_result ) # Waiting for results to be finished or time to pass while len(poolResults) < len(emails) and not hasRunOutOfTime(_startTime): @@ -440,7 +416,7 @@ except: excludeList = [] - parser = argparse.ArgumentParser(description='mailfy.py - Checking the existence of a given mail.', prog='mailfy.py', epilog='Check the README.md file for further details on the usage of this program or follow us on Twitter in .', add_help=False) + parser = argparse.ArgumentParser(description='mailfy - Checking the existence of a given mail.', prog='mailfy', epilog='Check the README.md file for further details on the usage of this program or follow us on Twitter in .', add_help=False, conflict_handler='resolve') parser._optionals.title = "Input options (one required)" # Adding the main options @@ -460,7 +436,7 @@ groupProcessing.add_argument('-x', '--exclude', metavar='', choices=EMAIL_DOMAINS, nargs='+', required=False, default=excludeList, action='store', help="select the domains to be excluded from the search.") groupProcessing.add_argument('-F', '--file_header', metavar='', required=False, default=DEFAULT_VALUES["file_header"], action='store', help='Header for the output filenames to be generated. If None was provided the following will be used: profiles..' ) groupProcessing.add_argument('-T', '--threads', metavar='', required=False, action='store', default = int(DEFAULT_VALUES["threads"]), type=int, help='write down the number of threads to be used (default 16). If 0, the maximum number possible will be used, which may make the system feel unstable.') - groupProcessing.add_argument('--is_leaked', required=False, default=False, action='store_true', help='Defines whether mailfy.py should search for leaked emails instead of verifying them.') + groupProcessing.add_argument('--verify_emails', required=False, default=False, action='store_true', help='Defines whether mailfy should try to verify the existence of an email. This is an unstable feature that uses "emailahoy" and "verify_email" packages.') groupProcessing.add_argument('--quiet', required=False, action='store_true', default=False, help='tells the program not to show anything.') # About options @@ -519,11 +495,11 @@ general.showLicense() else: # Grabbing the list of global domains - if args.is_leaked: - domains = LEAKED_DOMAINS + if args.verify_emails: + domains = EMAIL_DOMAINS # Processing the options returned to remove the "all" option elif "all" in args.domains: - domains = EMAIL_DOMAINS + domains = LEAKED_DOMAINS else: # processing only the given domains and excluding the ones provided domains = [] @@ -538,7 +514,8 @@ startTime= dt.datetime.now() - if not args.is_leaked: + # Original functionality. UNSTABLE feature! + if args.verify_emails: # Showing the execution time... if not args.quiet: print(str(startTime) +"\tStarting search in " + general.emphasis(str(len(emails))) + " different emails:\n"+ json.dumps(emails, indent=2, sort_keys=True) + "\n") @@ -551,16 +528,23 @@ if not args.quiet: now = dt.datetime.now() - print(str(now) +"\tMailfy has found " + general.emphasis(str(len(results))) + " existing email(s). Has it been leaked somewhere?") + print("\n{}\tMailfy has found {} existing email(s). Have they been leaked somewhere?\n".format(str(now), general.emphasis(str(len(results))))) + print(general.emphasis("\tPress to stop...\n")) # Verify the existence of the mails found as leaked emails. for r in tmp: # We assume that the first attribute is always the email query = r["attributes"][0]["value"] + + # Iterate through the different leak platforms leaks = hibp.checkIfEmailWasHacked(query) + if len(leaks) > 0: if not args.quiet: - print(general.success("\t" + query + " has been found in at least " + str(len(leaks)) + " different leaks.")) + if len(leaks) > 0: + print("\t[*] '{}' has been found in at least {} different leaks.".format(general.success(query), general.success(str(len(leaks))))) + else: + print("\t[*] '{}' has NOT been found in any leak.".format(general.error(query))) email, alias, domain = getMoreInfo(query) for leak in leaks: @@ -581,14 +565,18 @@ print(general.warning("\t" + query + " has NOT been found on any leak yet.")) else: if not args.quiet: - print("\n" + str(startTime) +"\tStarting search of " + general.emphasis(str(len(emails))) + " different emails in leaked databases.\nNote that this will take between 1 and 2 seconds per query due to HIBP API restrictions:\n"+ json.dumps(emails, indent=2, sort_keys=True) + "\n") + print("\n" + str(startTime) +"\tStarting search of " + general.emphasis(str(len(emails))) + " different emails in leaked databases.\n\nNote that this will take between 1 and 2 seconds per query due to the thirdparties API restrictions:\n"+ json.dumps(emails, indent=2, sort_keys=True) + "\n") print(general.emphasis("\tPress to stop...\n")) # Perform is_leaked function results = [] + print("Mailfy will use haveibeenpwned.com (HIBP) API to find leaked emails...\n") + for i, e in enumerate(emails): if not args.quiet: - print("\t" + str(i+1) + "/" + str(len(emails)) + " - Searching if " + e + " has been leaked somewhere...") + print("\t" + str(i+1) + "/" + str(len(emails)) + " - Searching if " + e + " has been leaked...") + + # Iterate through the different leak platforms leaks = hibp.checkIfEmailWasHacked(e) if len(leaks) > 0: @@ -623,7 +611,7 @@ # Showing the information gathered if requested if not args.quiet: now = dt.datetime.now() - print("\n" + str(now) + "\tA summary of the results obtained are shown in the following table:\n") + print("\n" + str(now) + "\tA summary of the results obtained is shown in the following table:\n") print(general.success(general.usufyToTextExport(results))) now = dt.datetime.now() diff --git a/osrframework/phonefy.py b/osrframework/phonefy.py index d1b89be..4aeb95c 100644 --- a/osrframework/phonefy.py +++ b/osrframework/phonefy.py @@ -64,7 +64,7 @@ except: excludeList = [] - parser = argparse.ArgumentParser(description='phonefy.py - Piece of software that checks the existence of a given series of phones in a bunch of phone number lists associated to malicious activities.', prog='phonefy.py', epilog='Check the README.md file for further details on the usage of this program or follow us on Twitter in .', add_help=False) + parser = argparse.ArgumentParser(description='phonefy - Piece of software that checks the existence of a given series of phones in a bunch of phone number lists associated to malicious activities.', prog='phonefy', epilog='Check the README.md file for further details on the usage of this program or follow us on Twitter in .', add_help=False, conflict_handler='resolve') parser._optionals.title = "Input options (one required)" # Defining the mutually exclusive group for the main options @@ -161,7 +161,7 @@ # Showing the information gathered if requested if not args.quiet: now = dt.datetime.now() - print(str(now) + "\tA summary of the results obtained are shown in the following table:\n") + print(str(now) + "\tA summary of the results obtained is shown in the following table:\n") print(general.success(general.usufyToTextExport(results))) if args.web_browser: diff --git a/osrframework/searchfy.py b/osrframework/searchfy.py index 7689734..745ae29 100644 --- a/osrframework/searchfy.py +++ b/osrframework/searchfy.py @@ -67,7 +67,7 @@ except: excludeList = [] - parser = argparse.ArgumentParser(description='searchfy.py - Piece of software that performs a query on the platforms in OSRFramework.', prog='searchfy.py', epilog='Check the README.md file for further details on the usage of this program or follow us on Twitter in .', add_help=False) + parser = argparse.ArgumentParser(description='searchfy - Piece of software that performs a query on the platforms in OSRFramework.', prog='searchfy', epilog='Check the README.md file for further details on the usage of this program or follow us on Twitter in .', add_help=False, conflict_handler='resolve') parser._optionals.title = "Input options (one required)" # Adding the main options @@ -162,21 +162,21 @@ # Printing the results if requested now = dt.datetime.now() - print(str(now) + "\tA summary of the results obtained are listed in the following table:\n") + print("\n{date}\tA summary of the results obtained is shown in the following table:\n".format(date=str(now))) print(general.success(general.usufyToTextExport(results))) if args.web_browser: general.openResultsInBrowser(results) now = dt.datetime.now() - print("\n" + str(now) + "\tYou can find all the information collected in the following files:") + print("\n{date}\tYou can find all the information collected in the following files:".format(date=str(now))) for ext in args.extension: # Showing the output files print("\t" + general.emphasis(fileHeader + "." + ext)) # Showing the execution time... endTime= dt.datetime.now() - print("\n" + str(endTime) +"\tFinishing execution...\n") + print("\n{date}\tFinishing execution...\n".format(date=str(endTime))) print("Total time used:\t" + general.emphasis(str(endTime-startTime))) print("Average seconds/query:\t" + general.emphasis(str((endTime-startTime).total_seconds()/len(args.platforms))) +" seconds\n") diff --git a/osrframework/thirdparties/haveibeenpwned_com/hibp.py b/osrframework/thirdparties/haveibeenpwned_com/hibp.py index 392be56..8c37370 100644 --- a/osrframework/thirdparties/haveibeenpwned_com/hibp.py +++ b/osrframework/thirdparties/haveibeenpwned_com/hibp.py @@ -19,12 +19,13 @@ ################################################################################## import argparse +import cfscrape import json import requests import sys import time -def checkIfEmailWasHacked(email=None, sleepSeconds=1.5): +def checkIfEmailWasHacked(email=None, sleepSeconds=1): """ Method that checks if the given email is stored in the HIBP website. @@ -43,45 +44,77 @@ A python structure for the json received. If nothing was found, it will return an empty list. """ - # Sleeping a second + # Sleeping just a little bit time.sleep(sleepSeconds) + print("\t[*] Bypassing Cloudflare Restriction...") + ua = 'osrframework 0.18' + useragent = {'User-Agent': ua} + cookies, user_agent = cfscrape.get_tokens('https://haveibeenpwned.com/api/v2/breachedaccount/test@example.com', user_agent=ua) + + leaks = [] + + apiURL = "https://haveibeenpwned.com/api/v2/breachedaccount/{}".format(email) + + # Accessing the HIBP API + time.sleep(sleepSeconds) # Building API query - apiURL= "https://haveibeenpwned.com/api/v2/breachedaccount/" + email - # Accessing the HIBP API + data = requests.get( + apiURL, + headers=useragent, + cookies=cookies, + verify=True + ).text + + # Reading the text data onto python structures try: - data = requests.get(apiURL).text - - # Reading the text data onto python structures jsonData = json.loads(data) - leaks = [] - - # Building the i3visio like structure for e in jsonData: + # Building the i3visio like structure new = {} - new["value"] = e["Name"] + new["value"] = "(HIBP) " + e.get("Name") new["type"] = "i3visio.platform_leaked" new["attributes"] = [ + { + "value": "@source", + "type": "haveibeenpwned.com", + "attributes": [] + }, { "value": "i3visio_uri", "type": apiURL, "attributes": [] + }, + { + "value": "@pwn_count", + "type": e.get("PwnCount"), + "attributes": [] + }, + { + "value": "@added_date", + "type": e.get("AddedDate"), + "attributes": [] + }, + { + "value": "@breach_date", + "type": e.get("BreachDate"), + "attributes": [] + }, + { + "value": "@description", + "type": e.get("Description"), + "attributes": [] } ] - new['PwnCount'] = e['PwnCount'] - new['Domain'] = e['Domain'] - new['AddedDate'] = e['AddedDate'] - new['BreachDate'] = e['BreachDate'] - new['Description'] = e['Description'] + leaks.append(new) + except ValueError: + return [] + except Exception: + print("ERROR: Something happenned when using HIBP API.") + return [] - leaks.append(new) - - return leaks - - except: - # No information was found, then we return a null entity - return [] + return leaks if __name__ == "__main__": diff --git a/osrframework/usufy.py b/osrframework/usufy.py index 6ad52f3..b17d563 100644 --- a/osrframework/usufy.py +++ b/osrframework/usufy.py @@ -326,13 +326,12 @@ # Recovering all the possible options platOptions = platform_selection.getAllPlatformNames("usufy") - parser = argparse.ArgumentParser(description= 'usufy - Piece of software that checks the existence of a profile for a given user in dozens of different platforms.', prog='usufy', epilog='Check the README.md file for further details on the usage of this program or follow us on Twitter in .', add_help=False) + parser = argparse.ArgumentParser(description= 'usufy - Piece of software that checks the existence of a profile for a given user in dozens of different platforms.', prog='usufy', epilog='Check the README.md file for further details on the usage of this program or follow us on Twitter in .', add_help=False, conflict_handler='resolve') parser._optionals.title = "Input options (one required)" # Adding the main options groupMainOptions = parser.add_mutually_exclusive_group(required=True) groupMainOptions.add_argument('--info', metavar='', choices=['list_platforms', 'list_tags'], action='store', help='select the action to be performed amongst the following: list_platforms (list the details of the selected platforms), list_tags (list the tags of the selected platforms). Afterwards, it exists.') - groupMainOptions.add_argument('--license', required=False, action='store_true', default=False, help='shows the AGPLv3+ license and exists.') groupMainOptions.add_argument('-b', '--benchmark', action='store_true', default=False, help='perform the benchmarking tasks.') groupMainOptions.add_argument('-f', '--fuzz', metavar='', action='store', type=argparse.FileType('r'), help='this option will try to find usufy-like URLs. The list of fuzzing platforms in the file should be (one per line): \t') groupMainOptions.add_argument('-l', '--list', metavar='', action='store', type=argparse.FileType('r'), help='path to the file where the list of nicks to verify is stored (one per line).') @@ -362,7 +361,7 @@ groupAbout = parser.add_argument_group('About arguments', 'Showing additional information about this program.') groupAbout.add_argument('-h', '--help', action='help', help='shows this help and exists.') groupAbout.add_argument('-v', '--verbose', metavar='', choices=[0, 1, 2], required=False, action='store', default=1, help='select the verbosity level: 0 - none; 1 - normal (default); 2 - debug.', type=int) - groupAbout.add_argument('--version', action='version', version='[%(prog)s] OSRFramework ' + osrframework.__version__, help='shows the version of the program and exists.') + groupAbout.add_argument('--version', action='version', version='[%(prog)s] OSRFramework ' + osrframework.__version__, help='shows the version of the program and exits.') return parser @@ -410,9 +409,7 @@ print(general.title(sayingHello)) logger.info("Starting usufy...") - if args.license: - general.showLicense() - elif args.fuzz: + if args.fuzz: logger.info("Performing the fuzzing tasks...") res = fuzzUsufy(args.fuzz, args.fuzz_config) logger.info("Recovered platforms:\n" + str(res)) diff --git a/osrframework/utils/__init__.py b/osrframework/utils/__init__.py index 342c9ea..4c8b5c6 100644 --- a/osrframework/utils/__init__.py +++ b/osrframework/utils/__init__.py @@ -17,8 +17,3 @@ # ################################################################################## - -import logger - -# Calling the logger when being imported -logger.setupLogger(loggerName="osrframework.utils") diff --git a/osrframework/utils/browser.py b/osrframework/utils/browser.py index f102d3b..85343e0 100644 --- a/osrframework/utils/browser.py +++ b/osrframework/utils/browser.py @@ -21,12 +21,11 @@ ################################################################################## # Required libraries -import mechanize import cookielib import ConfigParser +import mechanize +import os import random -import os - import osrframework.utils.configuration as configuration @@ -89,9 +88,9 @@ with open(configPath, "w") as oF: oF.write(cont) except Exception, e: - print "WARNING. No configuration file could be found and the default file was not found either, so configuration will be set as default." - print str(e) - print + print("WARNING. No configuration file could be found and the default file was not found either, so configuration will be set as default.") + print(str(e)) + print() # Storing configuration as default self.userAgents = ['Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/55.0.2883.87 Chrome/55.0.2883.87 Safari/537.36'] self.proxies = {} @@ -149,7 +148,6 @@ Returns: Returns a resource that has to be read, for instance, with html = self.br.read() """ - logger = logging.getLogger("osrframework.utils") # Configuring user agents... @@ -180,7 +178,7 @@ # [TO-DO] # Additional things may be done here to load javascript. html = recurso.read() - + return html def setNewPassword(self, url, username, password): diff --git a/osrframework/utils/configuration.py b/osrframework/utils/configuration.py index 32f7347..bf86548 100644 --- a/osrframework/utils/configuration.py +++ b/osrframework/utils/configuration.py @@ -39,17 +39,17 @@ # Setting owner try: os.chown(itempath, uid, gid) - except Exception, e: + except Exception as e: # If this crashes it may be because we are running the # application in Windows systems, where os.chown does NOT work. pass # Setting permissions - os.chmod(itempath, 0600) + os.chmod(itempath, 600) elif os.path.isdir(itempath): # Setting owner try: os.chown(itempath, uid, gid) - except Exception, e: + except Exception as e: # If this crashes it may be because we are running the # application in Windows systems, where os.chown does NOT work. pass @@ -133,7 +133,7 @@ # Moving its contents as the default values with open(configPath, "w") as oF: oF.write(cont) - except Exception, e: + except Exception as e: raise errors.DefaultConfigurationFileNotFoundError(configPath, defaultConfigPath); # Reading the configuration file @@ -181,7 +181,7 @@ # Moving its contents as the default values with open(configPath, "w") as oF: oF.write(cont) - except Exception, e: + except Exception as e: raise errors.DefaultConfigurationFileNotFoundError(configPath, defaultConfigPath); #raise errors.ConfigurationParameterNotValidError(configPath, section, param, value) diff --git a/osrframework/utils/general.py b/osrframework/utils/general.py index d0637c7..34df1e4 100644 --- a/osrframework/utils/general.py +++ b/osrframework/utils/general.py @@ -98,8 +98,7 @@ ] } isTerminal: If isTerminal is activated, only information related to - i3visio.alias, i3visio.platform and i3visio.uri will be displayed - in the terminal. + relevant utils will be shown. canUnicode: Variable that stores if the printed output can deal with Unicode characters. @@ -143,13 +142,24 @@ string: The modified header. """ if h[0] == "@": - h = h.replace("@","_") + h = h.replace("@", "_") elif "i3visio." in h: h = h.replace("i3visio.", "i3visio_") return h # Entities allowed for the output in terminal - allowedInTerminal = ["i3visio_alias", "i3visio_uri", "i3visio_platform", "i3visio_email", "i3visio_ipv4", "i3visio_phone", "i3visio_dni", "i3visio_domain", "i3visio_platform_leaked"] + allowedInTerminal = [ + "i3visio_alias", + "i3visio_uri", + "i3visio_platform", + "i3visio_email", + "i3visio_ipv4", + "i3visio_phone", + "i3visio_dni", + "i3visio_domain", + "i3visio_platform_leaked", + "_source" + ] # List of profiles found values = {} headers = ["_id"] @@ -162,11 +172,13 @@ oldHeaders = oldTabularData["OSRFramework"][0] headers = [] for h in oldHeaders: - if h == "i3visio_domain" or h == "i3visio.domain": - print h h = _grabbingNewHeader(h) if h in allowedInTerminal: - headers.append(h) + # Set to simplify the table shown in mailfy for leaked platforms + if h in ["i3visio_domain", "i3visio_alias"] and "_source" in old_headers: + pass + else: + headers.append(h) # Changing the starting @ for a '_' and changing the "i3visio." for "i3visio_". Changed in 0.9.4+ for i, h in enumerate(headers): h = _grabbingNewHeader(h) @@ -321,6 +333,7 @@ # Defining the headers sheet.name_columns_by_row(0) text.TABLEFMT = "grid" + try: with open(fPath, "w") as oF: oF.write(str(sheet)) @@ -601,12 +614,12 @@ try: oldData=nx.read_gml(fPath) except UnicodeDecodeError as e: - print "UnicodeDecodeError:\t" + str(e) - print "Something went wrong when reading the .gml file relating to the decoding of UNICODE." + print("UnicodeDecodeError:\t" + str(e)) + print("Something went wrong when reading the .gml file relating to the decoding of UNICODE.") import time as time fPath+="_" +str(time.time()) - print "To avoid losing data, the output file will be renamed to use the timestamp as:\n" + fPath + "_" + str(time.time()) - print + print("To avoid losing data, the output file will be renamed to use the timestamp as:\n" + fPath + "_" + str(time.time())) + print() # No information has been recovered oldData = nx.Graph() except Exception as e: diff --git a/osrframework/utils/platforms.py b/osrframework/utils/platforms.py index 07942dc..c043a6f 100644 --- a/osrframework/utils/platforms.py +++ b/osrframework/utils/platforms.py @@ -215,11 +215,12 @@ qURL = qURI else: qURL, query = self.createURL(word=query, mode=mode) + i3Browser = browser.Browser() try: - # check if it needs creds + # TODO: check if it needs creds if self.needsCredentials[mode]: - authenticated = self._getAuthenticated(i3Browser) + authenticated = self._getAuthenticated(i3Browser, qURL) if authenticated: # Accessing the resources data = i3Browser.recoverURL(qURL) @@ -296,6 +297,7 @@ results.append(r) elif mode == "searchfy": + print("[*] Launching search using the {} module...".format(self.__class__.__name__)) # Recovering all the found aliases... ids = re.findall(self.searchfyAliasRegexp, data, re.DOTALL) @@ -305,44 +307,49 @@ r["value"] = self.platformName + " - " + i r["attributes"] = [] + #print("id: {}".format(i)) # Appending platform URI aux = {} aux["type"] = "i3visio.uri" # Creating the URI based on the base URL for the new profiles... - uri, alias = self.createURL(word=i, mode="base") - #uri=self.baseURL+i - - aux["value"] = uri - - aux["attributes"] = [] - r["attributes"].append(aux) - # Appending the alias - aux = {} - aux["type"] = "i3visio.alias" - aux["value"] = alias - aux["attributes"] = [] - r["attributes"].append(aux) - # Appending platform name - aux = {} - aux["type"] = "i3visio.platform" - aux["value"] = self.platformName - aux["attributes"] = [] - r["attributes"].append(aux) - # Appending the query performed to grab this items - aux = {} - aux["type"] = "i3visio.search" - aux["value"] = query - aux["attributes"] = [] - r["attributes"].append(aux) - - # TO-DO: - # Perform additional procesing - # Iterating the requested profiles to extract more entities from the URI would be slow! - """if process: - # This function returns a json text in usufy format for the returned objects. - r["attributes"] += json.loads(self.getInfo(process = True, mode="usufy", qURI=uri, query=i)) - # Appending the result to results: in this case only one profile will be grabbed""" - results.append(r) + try: + uri, alias = self.createURL(word=i, mode="usufy") + #uri=self.baseURL+i + + aux["value"] = uri + + aux["attributes"] = [] + r["attributes"].append(aux) + # Appending the alias + aux = {} + aux["type"] = "i3visio.alias" + aux["value"] = alias + aux["attributes"] = [] + r["attributes"].append(aux) + # Appending platform name + aux = {} + aux["type"] = "i3visio.platform" + aux["value"] = self.platformName + aux["attributes"] = [] + r["attributes"].append(aux) + # Appending the query performed to grab this items + aux = {} + aux["type"] = "i3visio.search" + aux["value"] = query + aux["attributes"] = [] + r["attributes"].append(aux) + + # TO-DO: + # Perform additional procesing + # Iterating the requested profiles to extract more entities from the URI would be slow! + """if process: + # This function returns a json text in usufy format for the returned objects. + r["attributes"] += json.loads(self.getInfo(process = True, mode="usufy", qURI=uri, query=i)) + # Appending the result to results: in this case only one profile will be grabbed""" + results.append(r) + except NameError: + pass + return json.dumps(results) def modeIsValid(self, mode): @@ -521,16 +528,17 @@ ''' return self.platformName == obj.platformName - def _getAuthenticated(self, browser): + def _getAuthenticated(self, browser, url): ''' Getting authenticated. This method will be overwritten. :param browser: The browser in which the user will be authenticated. + :param url: The URL to get authenticated in. ''' # check if we have creds if len(self.creds) > 0: - # choosing a cred - c = random.choice(self.creds) + # TODO: in choosing a cred there is an uneeded nesting of arrays + c = random.choice(self.creds)[0] # adding the credential browser.setNewPassword(url, c.user, c.password) return True diff --git a/osrframework/wrappers/behance.py b/osrframework/wrappers/behance.py index 32eb678..e2a793a 100644 --- a/osrframework/wrappers/behance.py +++ b/osrframework/wrappers/behance.py @@ -38,7 +38,7 @@ Constructor... """ self.platformName = "Behance" - self.tags = ["image"] + self.tags = ["imagery"] ######################## # Defining valid modes # diff --git a/osrframework/wrappers/blackplanet.py b/osrframework/wrappers/blackplanet.py deleted file mode 100644 index a5a3c3d..0000000 --- a/osrframework/wrappers/blackplanet.py +++ /dev/null @@ -1,112 +0,0 @@ -# !/usr/bin/python -# -*- coding: cp1252 -*- -# -################################################################################## -# -# Copyright 2016 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com) -# -# This program is part of OSRFramework. You can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -################################################################################## - -import argparse -import json -import re -import sys -import urllib2 - -import osrframework.utils.browser as browser -from osrframework.utils.platforms import Platform - -class Blackplanet(Platform): - """ - A object for Blackplanet. - """ - def __init__(self): - """ - Constructor... - """ - self.platformName = "Blackplanet" - self.tags = ["contact"] - - ######################## - # Defining valid modes # - ######################## - self.isValidMode = {} - self.isValidMode["phonefy"] = False - self.isValidMode["usufy"] = True - self.isValidMode["searchfy"] = False - - ###################################### - # Search URL for the different modes # - ###################################### - # Strings with the URL for each and every mode - self.url = {} - #self.url["phonefy"] = "http://anyurl.com//phone/" + "" - self.url["usufy"] = "http://www.blackplanet.com/" + "" - #self.url["searchfy"] = "http://anyurl.com/search/" + "" - - ###################################### - # Whether the user needs credentials # - ###################################### - self.needsCredentials = {} - #self.needsCredentials["phonefy"] = False - self.needsCredentials["usufy"] = False - #self.needsCredentials["searchfy"] = False - - ################# - # Valid queries # - ################# - # Strings that will imply that the query number is not appearing - self.validQuery = {} - # The regular expression '.+' will match any query. - #self.validQuery["phonefy"] = ".*" - self.validQuery["usufy"] = ".+" - #self.validQuery["searchfy"] = ".*" - - ################### - # Not_found clues # - ################### - # Strings that will imply that the query number is not appearing - self.notFoundText = {} - #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["Page not found"] - #self.notFoundText["searchfy"] = [] - - ######################### - # Fields to be searched # - ######################### - self.fieldsRegExp = {} - - # Definition of regular expressions to be searched in phonefy mode - #self.fieldsRegExp["phonefy"] = {} - # Example of fields: - #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" - - # Definition of regular expressions to be searched in usufy mode - self.fieldsRegExp["usufy"] = {} - # Example of fields: - #self.fieldsRegExp["usufy"]["i3visio.location"] = "" - - # Definition of regular expressions to be searched in searchfy mode - #self.fieldsRegExp["searchfy"] = {} - # Example of fields: - #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" - - ################ - # Fields found # - ################ - # This attribute will be feeded when running the program. - self.foundFields = {} - diff --git a/osrframework/wrappers/bordom.py b/osrframework/wrappers/bordom.py index b92d70d..da52d4f 100644 --- a/osrframework/wrappers/bordom.py +++ b/osrframework/wrappers/bordom.py @@ -38,7 +38,7 @@ Constructor... """ self.platformName = "Bordom" - self.tags = ["image"] + self.tags = ["imagery"] ######################## # Defining valid modes # diff --git a/osrframework/wrappers/breakcom.py b/osrframework/wrappers/breakcom.py deleted file mode 100644 index 1cce738..0000000 --- a/osrframework/wrappers/breakcom.py +++ /dev/null @@ -1,114 +0,0 @@ -# !/usr/bin/python -# -*- coding: utf-8 -*- -# -################################################################################## -# -# Copyright 2016-2017 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com) -# -# This program is part of OSRFramework. You can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the Affero GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. -# -################################################################################## - -__author__ = "i3visio" -__version__ = "1.1" - -import argparse -import json -import re -import sys -import urllib2 - -import osrframework.utils.browser as browser -from osrframework.utils.platforms import Platform - -class Breakcom(Platform): - """ - A <Platform> object for Breakcom. - """ - def __init__(self): - """ - Constructor... - """ - self.platformName = "Breakcom" - self.tags = ["video"] - - ######################## - # Defining valid modes # - ######################## - self.isValidMode = {} - self.isValidMode["phonefy"] = False - self.isValidMode["usufy"] = True - self.isValidMode["searchfy"] = False - - ###################################### - # Search URL for the different modes # - ###################################### - # Strings with the URL for each and every mode - self.url = {} - #self.url["phonefy"] = "http://anyurl.com//phone/" + "<phonefy>" - self.url["usufy"] = "http://www.break.com/user/" + "<usufy>" - #self.url["searchfy"] = "http://anyurl.com/search/" + "<searchfy>" - - ###################################### - # Whether the user needs credentials # - ###################################### - self.needsCredentials = {} - #self.needsCredentials["phonefy"] = False - self.needsCredentials["usufy"] = False - #self.needsCredentials["searchfy"] = False - - ################# - # Valid queries # - ################# - # Strings that will imply that the query number is not appearing - self.validQuery = {} - # The regular expression '.+' will match any query. - #self.validQuery["phonefy"] = ".*" - self.validQuery["usufy"] = ".+" - #self.validQuery["searchfy"] = ".*" - - ################### - # Not_found clues # - ################### - # Strings that will imply that the query number is not appearing - self.notFoundText = {} - #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["Break.com"] - #self.notFoundText["searchfy"] = [] - - ######################### - # Fields to be searched # - ######################### - self.fieldsRegExp = {} - - # Definition of regular expressions to be searched in phonefy mode - #self.fieldsRegExp["phonefy"] = {} - # Example of fields: - #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" - - # Definition of regular expressions to be searched in usufy mode - self.fieldsRegExp["usufy"] = {} - # Example of fields: - #self.fieldsRegExp["usufy"]["i3visio.location"] = "" - - # Definition of regular expressions to be searched in searchfy mode - #self.fieldsRegExp["searchfy"] = {} - # Example of fields: - #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" - - ################ - # Fields found # - ################ - # This attribute will be feeded when running the program. - self.foundFields = {} diff --git a/osrframework/wrappers/bubok.py b/osrframework/wrappers/bubok.py index ce9ce30..2170ad3 100644 --- a/osrframework/wrappers/bubok.py +++ b/osrframework/wrappers/bubok.py @@ -48,7 +48,7 @@ # Strings with the URL for each and every mode self.url = {} #self.url["phonefy"] = "http://anyurl.com//phone/" + "" - self.url["usufy"] = "http://www.bubok.es/autores/" + "" + self.url["usufy"] = "https://www.bubok.es/autores/" + "" #self.url["searchfy"] = "http://anyurl.com/search/" + "" ###################################### @@ -75,7 +75,7 @@ # Strings that will imply that the query number is not appearing self.notFoundText = {} #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["Bubok - Distribución nacional e internacional de libros de autores noveles"] + self.notFoundText["usufy"] = ["Bubok - Publica tu libro y distribúyelo internacionalmente"] #self.notFoundText["searchfy"] = [] ######################### diff --git a/osrframework/wrappers/buzznet.py b/osrframework/wrappers/buzznet.py index 11f76b5..d822097 100644 --- a/osrframework/wrappers/buzznet.py +++ b/osrframework/wrappers/buzznet.py @@ -81,7 +81,7 @@ # Strings that will imply that the query number is not appearing self.notFoundText = {} #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["The page you requested was not found."] + self.notFoundText["usufy"] = ["The page you requested was not found.", "
Content Currently Unavailable
"] #self.notFoundText["searchfy"] = [] ######################### diff --git a/osrframework/wrappers/cafemom.py b/osrframework/wrappers/cafemom.py deleted file mode 100644 index c85cf04..0000000 --- a/osrframework/wrappers/cafemom.py +++ /dev/null @@ -1,114 +0,0 @@ -# !/usr/bin/python -# -*- coding: cp1252 -*- -# -################################################################################## -# -# Copyright 2016 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com) -# -# This program is part of OSRFramework. You can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -################################################################################## - -import argparse -import json -import re -import sys -import urllib2 - -import osrframework.utils.browser as browser -from osrframework.utils.platforms import Platform - -class Cafemom(Platform): - ''' - A object for Cafemom. - ''' - def __init__(self): - ''' - Constructor... - ''' - self.platformName = "Cafemom" - self.tags = ["social"] - - ######################## - # Defining valid modes # - ######################## - self.isValidMode = {} - self.isValidMode["phonefy"] = False - self.isValidMode["usufy"] = True - self.isValidMode["searchfy"] = False - - ###################################### - # Search URL for the different modes # - ###################################### - # Strings with the URL for each and every mode - self.url = {} - #self.url["phonefy"] = "http://anyurl.com//phone/" + "" - self.url["usufy"] = "http://www.cafemom.com/home/" + "" - #self.url["searchfy"] = "http://anyurl.com/search/" + "" - - ###################################### - # Whether the user needs credentials # - ###################################### - self.needsCredentials = {} - #self.needsCredentials["phonefy"] = False - self.needsCredentials["usufy"] = False - #self.needsCredentials["searchfy"] = False - - ################# - # Valid queries # - ################# - # Strings that will imply that the query number is not appearing - self.validQuery = {} - # The regular expression '.+' will match any query. - #self.validQuery["phonefy"] = ".*" - self.validQuery["usufy"] = ".+" - #self.validQuery["searchfy"] = ".*" - - ################### - # Not_found clues # - ################### - # Strings that will imply that the query number is not appearing - self.notFoundText = {} - #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["is not a CafeMom member.

"] - #self.notFoundText["searchfy"] = [] - - ######################### - # Fields to be searched # - ######################### - self.fieldsRegExp = {} - - # Definition of regular expressions to be searched in phonefy mode - #self.fieldsRegExp["phonefy"] = {} - # Example of fields: - #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" - - # Definition of regular expressions to be searched in usufy mode - self.fieldsRegExp["usufy"] = {} - # Example of fields: - #self.fieldsRegExp["usufy"]["i3visio.location"] = "" - - # Definition of regular expressions to be searched in searchfy mode - #self.fieldsRegExp["searchfy"] = {} - # Example of fields: - #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" - - ################ - # Fields found # - ################ - # This attribute will be feeded when running the program. - self.foundFields = {} - - - diff --git a/osrframework/wrappers/canva.py b/osrframework/wrappers/canva.py index 219528a..00f3c06 100644 --- a/osrframework/wrappers/canva.py +++ b/osrframework/wrappers/canva.py @@ -41,7 +41,7 @@ Constructor... """ self.platformName = "Canva" - self.tags = ["image"] + self.tags = ["imagery"] ######################## # Defining valid modes # diff --git a/osrframework/wrappers/carbonmade.py b/osrframework/wrappers/carbonmade.py index e4d9059..ccf1758 100644 --- a/osrframework/wrappers/carbonmade.py +++ b/osrframework/wrappers/carbonmade.py @@ -38,7 +38,7 @@ Constructor... """ self.platformName = "Carbonmade" - self.tags = ["image", "tools"] + self.tags = ["imagery"] ######################## # Defining valid modes # diff --git a/osrframework/wrappers/cardinghispano.py b/osrframework/wrappers/cardinghispano.py index d613a48..0aa7e76 100644 --- a/osrframework/wrappers/cardinghispano.py +++ b/osrframework/wrappers/cardinghispano.py @@ -81,7 +81,7 @@ # Strings that will imply that the query number is not appearing self.notFoundText = {} #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["El miembro específicado no pudo ser encontrado. Por favor ingrese el nombre completo del miembro."] + self.notFoundText["usufy"] = ["Miembros destacados | Carding en Español"] #self.notFoundText["searchfy"] = [] ######################### diff --git a/osrframework/wrappers/cryptocompare.py b/osrframework/wrappers/cryptocompare.py new file mode 100644 index 0000000..c144caf --- /dev/null +++ b/osrframework/wrappers/cryptocompare.py @@ -0,0 +1,113 @@ +# !/usr/bin/python +# -*- coding: cp1252 -*- +# +################################################################################## +# +# Copyright 2018 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com) +# +# This program is part of OSRFramework. You can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +################################################################################## + +__author__ = "i3visio " +__version__ = "1.0" + +import argparse +import json +import re +import sys +import urllib2 + +import osrframework.utils.browser as browser +from osrframework.utils.platforms import Platform + +class Cryptocompare(Platform): + """ + A object for Cryptocompare. + """ + def __init__(self): + """ + Constructor... + """ + self.platformName = "cryptocompare" + self.tags = ["forum", "cryptocurrencies"] + + ######################## + # Defining valid modes # + ######################## + self.isValidMode = {} + self.isValidMode["phonefy"] = False + self.isValidMode["usufy"] = True + self.isValidMode["searchfy"] = False + + ###################################### + # Search URL for the different modes # + ###################################### + # Strings with the URL for each and every mode + self.url = {} + #self.url["phonefy"] = "http://anyurl.com//phone/" + "" + self.url["usufy"] = "https://www.cryptocompare.com/profile//#/Activity" + #self.url["searchfy"] = "http://anyurl.com/search/" + "" + + ###################################### + # Whether the user needs credentials # + ###################################### + self.needsCredentials = {} + #self.needsCredentials["phonefy"] = False + self.needsCredentials["usufy"] = False + #self.needsCredentials["searchfy"] = False + + ################# + # Valid queries # + ################# + # Strings that will imply that the query number is not appearing + self.validQuery = {} + # The regular expression '.+' will match any query + #self.validQuery["phonefy"] = ".*" + self.validQuery["usufy"] = ".+" + #self.validQuery["searchfy"] = ".*" + + ################### + # Not_found clues # + ################### + # Strings that will imply that the query number is not appearing + self.notFoundText = {} + #self.notFoundText["phonefy"] = [] + self.notFoundText["usufy"] = ["404 | CryptoCompare.com"] + #self.notFoundText["searchfy"] = [] + + ######################### + # Fields to be searched # + ######################### + self.fieldsRegExp = {} + + # Definition of regular expressions to be searched in phonefy mode + #self.fieldsRegExp["phonefy"] = {} + # Example of fields: + #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" + + # Definition of regular expressions to be searched in usufy mode + self.fieldsRegExp["usufy"] = {} + # Example of fields: + #self.fieldsRegExp["usufy"]["i3visio.location"] = "" + # Definition of regular expressions to be searched in searchfy mode + #self.fieldsRegExp["searchfy"] = {} + # Example of fields: + #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" + + ################ + # Fields found # + ################ + # This attribute will be feeded when running the program. + self.foundFields = {} diff --git a/osrframework/wrappers/dribbble.py b/osrframework/wrappers/dribbble.py index 5ee9931..c871b3c 100644 --- a/osrframework/wrappers/dribbble.py +++ b/osrframework/wrappers/dribbble.py @@ -38,7 +38,7 @@ Constructor... """ self.platformName = "Dribbble" - self.tags = ["image"] + self.tags = ["imagery"] ######################## # Defining valid modes # diff --git a/osrframework/wrappers/eyeem.py b/osrframework/wrappers/eyeem.py index 5d3a52f..d48bdac 100644 --- a/osrframework/wrappers/eyeem.py +++ b/osrframework/wrappers/eyeem.py @@ -41,7 +41,7 @@ Constructor... """ self.platformName = "Eyeem" - self.tags = ["photos"] + self.tags = ["imagery"] ######################## # Defining valid modes # diff --git a/osrframework/wrappers/facebook.py b/osrframework/wrappers/facebook.py index d34a6db..1fc6aa3 100644 --- a/osrframework/wrappers/facebook.py +++ b/osrframework/wrappers/facebook.py @@ -30,11 +30,11 @@ from osrframework.utils.platforms import Platform class Facebook(Platform): - """ + """ A object for Facebook. """ def __init__(self): - """ + """ Constructor... """ self.platformName = "Facebook" @@ -42,32 +42,32 @@ # Base URL self.baseURL = "http://facebook.com/" - + ######################## # Defining valid modes # ######################## - self.isValidMode = {} + self.isValidMode = {} self.isValidMode["phonefy"] = False self.isValidMode["usufy"] = True - self.isValidMode["searchfy"] = True - + self.isValidMode["searchfy"] = True + ###################################### # Search URL for the different modes # ###################################### # Strings with the URL for each and every mode - self.url = {} + self.url = {} #self.url["phonefy"] = "http://anyurl.com//phone/" + "" - self.url["usufy"] = "https://www.facebook.com/" + "" - self.url["searchfy"] = "https://www.facebook.com/public?query=" + "" + self.url["usufy"] = "https://www.facebook.com/" + "" + self.url["searchfy"] = "https://www.facebook.com/public?query=" + "" ###################################### # Whether the user needs credentials # ###################################### - self.needsCredentials = {} + self.needsCredentials = {} #self.needsCredentials["phonefy"] = False self.needsCredentials["usufy"] = False - self.needsCredentials["searchfy"] = False - + self.needsCredentials["searchfy"] = False + ################# # Valid queries # ################# @@ -77,7 +77,7 @@ #self.validQuery["phonefy"] = ".*" self.validQuery["usufy"] = ".+" self.validQuery["searchfy"] = ".+" - + ################### # Not_found clues # ################### @@ -85,32 +85,30 @@ self.notFoundText = {} #self.notFoundText["phonefy"] = [] self.notFoundText["usufy"] = ["Esta página no está disponible", "This content is currently unavailable", "Sorry, this page isn't available"] - self.notFoundText["searchfy"] = [] - + self.notFoundText["searchfy"] = [] + ######################### # Fields to be searched # ######################### self.fieldsRegExp = {} - + # Definition of regular expressions to be searched in phonefy mode #self.fieldsRegExp["phonefy"] = {} # Example of fields: #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" - + # Definition of regular expressions to be searched in usufy mode self.fieldsRegExp["usufy"] = {} # Example of fields: #self.fieldsRegExp["usufy"]["i3visio.location"] = "" # Definition of regular expressions to be searched in searchfy mode self.fieldsRegExp["searchfy"] = {} - self.searchfyAliasRegexp = "lfloat _ohe\" href=\"https://www.facebook.com/([^\"]+)\" aria-hidden=\"true\"" + self.searchfyAliasRegexp = "tabindex=\"-1\" href=\"https://www.facebook.com/([^\"]+)\">" # Example of fields: - #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" - + #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" + ################ # Fields found # ################ # This attribute will be feeded when running the program. self.foundFields = {} - - diff --git a/osrframework/wrappers/facesaerch.py b/osrframework/wrappers/facesaerch.py index 9ea4f83..d3a5dcc 100644 --- a/osrframework/wrappers/facesaerch.py +++ b/osrframework/wrappers/facesaerch.py @@ -38,7 +38,7 @@ Constructor... ''' self.platformName = "Facesaerch" - self.tags = ["image", "search"] + self.tags = ["imagery", "search"] ######################## # Defining valid modes # diff --git a/osrframework/wrappers/flickr.py b/osrframework/wrappers/flickr.py index 01e297d..c04228e 100644 --- a/osrframework/wrappers/flickr.py +++ b/osrframework/wrappers/flickr.py @@ -38,7 +38,7 @@ Constructor... """ self.platformName = "Flickr" - self.tags = ["image", "social"] + self.tags = ["imagery", "social"] ######################## # Defining valid modes # diff --git a/osrframework/wrappers/foodspotting.py b/osrframework/wrappers/foodspotting.py deleted file mode 100644 index 4390bfb..0000000 --- a/osrframework/wrappers/foodspotting.py +++ /dev/null @@ -1,112 +0,0 @@ -# !/usr/bin/python -# -*- coding: cp1252 -*- -# -################################################################################## -# -# Copyright 2016 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com) -# -# This program is part of OSRFramework. You can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -################################################################################## - -import argparse -import json -import re -import sys -import urllib2 - -import osrframework.utils.browser as browser -from osrframework.utils.platforms import Platform - -class Foodspotting(Platform): - """ - A object for Foodspotting. - """ - def __init__(self): - """ - Constructor... - """ - self.platformName = "Foodspotting" - self.tags = ["opinions"] - - ######################## - # Defining valid modes # - ######################## - self.isValidMode = {} - self.isValidMode["phonefy"] = False - self.isValidMode["usufy"] = True - self.isValidMode["searchfy"] = False - - ###################################### - # Search URL for the different modes # - ###################################### - # Strings with the URL for each and every mode - self.url = {} - #self.url["phonefy"] = "http://anyurl.com//phone/" + "" - self.url["usufy"] = "http://www.foodspotting.com/" + "" - #self.url["searchfy"] = "http://anyurl.com/search/" + "" - - ###################################### - # Whether the user needs credentials # - ###################################### - self.needsCredentials = {} - #self.needsCredentials["phonefy"] = False - self.needsCredentials["usufy"] = False - #self.needsCredentials["searchfy"] = False - - ################# - # Valid queries # - ################# - # Strings that will imply that the query number is not appearing - self.validQuery = {} - # The regular expression '.+' will match any query. - #self.validQuery["phonefy"] = re.compile(".*") - self.validQuery["usufy"] = "[^0-9].+" - #self.validQuery["searchfy"] = re.compile(".*") - - ################### - # Not_found clues # - ################### - # Strings that will imply that the query number is not appearing - self.notFoundText = {} - #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["The page you were looking for doesn't exist (404)"] - #self.notFoundText["searchfy"] = [] - - ######################### - # Fields to be searched # - ######################### - self.fieldsRegExp = {} - - # Definition of regular expressions to be searched in phonefy mode - #self.fieldsRegExp["phonefy"] = {} - # Example of fields: - #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" - - # Definition of regular expressions to be searched in usufy mode - self.fieldsRegExp["usufy"] = {} - # Example of fields: - #self.fieldsRegExp["usufy"]["i3visio.location"] = "" - # Definition of regular expressions to be searched in searchfy mode - #self.fieldsRegExp["searchfy"] = {} - # Example of fields: - #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" - - ################ - # Fields found # - ################ - # This attribute will be feeded when running the program. - self.foundFields = {} - - diff --git a/osrframework/wrappers/foros24h.py b/osrframework/wrappers/foros24h.py index 878a4ba..dca8ba6 100644 --- a/osrframework/wrappers/foros24h.py +++ b/osrframework/wrappers/foros24h.py @@ -54,7 +54,7 @@ # Strings with the URL for each and every mode self.url = {} #self.url["phonefy"] = "http://anyurl.com//phone/" + "" - self.url["usufy"] = "http://www.foros24h.com/members/" + "" + ".html" + self.url["usufy"] = "http://www.foros24h.com/perfil/" + "" + ".html" #self.url["searchfy"] = "http://anyurl.com/search/" + "" ###################################### @@ -81,7 +81,9 @@ # Strings that will imply that the query number is not appearing self.notFoundText = {} #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["Este usuario no se ha registrado y por lo tanto no tiene un perfil para ver."] + self.notFoundText["usufy"] = [ + "Usuarios de Foros24h.com" + ] #self.notFoundText["searchfy"] = [] ######################### diff --git a/osrframework/wrappers/fotolog.py b/osrframework/wrappers/fotolog.py index f0fa759..3697a5e 100644 --- a/osrframework/wrappers/fotolog.py +++ b/osrframework/wrappers/fotolog.py @@ -20,8 +20,8 @@ # ################################################################################## -__author__ = "John Doe " -__version__ = "1.0" +__author__ = "i3visio " +__version__ = "1.1" import argparse import json @@ -41,7 +41,7 @@ Constructor... """ self.platformName = "Fotolog" - self.tags = ["photos"] + self.tags = ["imagery"] ######################## # Defining valid modes # @@ -84,7 +84,7 @@ # Strings that will imply that the query number is not appearing self.notFoundText = {} #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["

Error 404 : No fue posible encontrar la página solicitada

"] + self.notFoundText["usufy"] = ["Fotolog - 404 undefined"] #self.notFoundText["searchfy"] = [] ######################### diff --git a/osrframework/wrappers/gather.py b/osrframework/wrappers/gather.py deleted file mode 100644 index 37d0d00..0000000 --- a/osrframework/wrappers/gather.py +++ /dev/null @@ -1,113 +0,0 @@ -# !/usr/bin/python -# -*- coding: cp1252 -*- -# -################################################################################## -# -# Copyright 2016 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com) -# -# This program is part of OSRFramework. You can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -################################################################################## - -import argparse -import json -import re -import sys -import urllib2 - -import osrframework.utils.browser as browser -from osrframework.utils.platforms import Platform - - -class Gather(Platform): - """ - A object for Gather. - """ - def __init__(self): - """ - Constructor... - """ - self.platformName = "Gather" - self.tags = ["social", "activism", "opinions"] - - ######################## - # Defining valid modes # - ######################## - self.isValidMode = {} - self.isValidMode["phonefy"] = False - self.isValidMode["usufy"] = True - self.isValidMode["searchfy"] = False - - ###################################### - # Search URL for the different modes # - ###################################### - # Strings with the URL for each and every mode - self.url = {} - #self.url["phonefy"] = "http://anyurl.com//phone/" + "" - self.url["usufy"] = "http://" + "" + ".gather.com" - #self.url["searchfy"] = "http://anyurl.com/search/" + "" - - ###################################### - # Whether the user needs credentials # - ###################################### - self.needsCredentials = {} - #self.needsCredentials["phonefy"] = False - self.needsCredentials["usufy"] = False - #self.needsCredentials["searchfy"] = False - - ################# - # Valid queries # - ################# - # Strings that will imply that the query number is not appearing - self.validQuery = {} - # The regular expression '.+' will match any query. - #self.validQuery["phonefy"] = ".*" - self.validQuery["usufy"] = ".+" - #self.validQuery["searchfy"] = ".*" - - ################### - # Not_found clues # - ################### - # Strings that will imply that the query number is not appearing - self.notFoundText = {} - #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["Group or Member Unavailable | Gather"] - #self.notFoundText["searchfy"] = [] - - ######################### - # Fields to be searched # - ######################### - self.fieldsRegExp = {} - - # Definition of regular expressions to be searched in phonefy mode - #self.fieldsRegExp["phonefy"] = {} - # Example of fields: - #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" - - # Definition of regular expressions to be searched in usufy mode - self.fieldsRegExp["usufy"] = {} - # Example of fields: - #self.fieldsRegExp["usufy"]["i3visio.location"] = "" - # Definition of regular expressions to be searched in searchfy mode - #self.fieldsRegExp["searchfy"] = {} - # Example of fields: - #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" - - ################ - # Fields found # - ################ - # This attribute will be feeded when running the program. - self.foundFields = {} - - diff --git a/osrframework/wrappers/genspot.py b/osrframework/wrappers/genspot.py deleted file mode 100644 index 5c00f34..0000000 --- a/osrframework/wrappers/genspot.py +++ /dev/null @@ -1,113 +0,0 @@ -# !/usr/bin/python -# -*- coding: cp1252 -*- -# -################################################################################## -# -# Copyright 2016 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com) -# -# This program is part of OSRFramework. You can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -################################################################################## - -import argparse -import json -import re -import sys -import urllib2 - -import osrframework.utils.browser as browser -from osrframework.utils.platforms import Platform - - -class Genspot(Platform): - """ - A object for Genspot. - """ - def __init__(self): - """ - Constructor... - """ - self.platformName = "Genspot" - self.tags = ["e-commerce", "opinions"] - - ######################## - # Defining valid modes # - ######################## - self.isValidMode = {} - self.isValidMode["phonefy"] = False - self.isValidMode["usufy"] = True - self.isValidMode["searchfy"] = False - - ###################################### - # Search URL for the different modes # - ###################################### - # Strings with the URL for each and every mode - self.url = {} - #self.url["phonefy"] = "http://anyurl.com//phone/" + "" - self.url["usufy"] = "http://www.genspot.com/u/" + "" - #self.url["searchfy"] = "http://anyurl.com/search/" + "" - - ###################################### - # Whether the user needs credentials # - ###################################### - self.needsCredentials = {} - #self.needsCredentials["phonefy"] = False - self.needsCredentials["usufy"] = False - #self.needsCredentials["searchfy"] = False - - ################# - # Valid queries # - ################# - # Strings that will imply that the query number is not appearing - self.validQuery = {} - # The regular expression '.+' will match any query. - #self.validQuery["phonefy"] = ".*" - self.validQuery["usufy"] = ".+" - #self.validQuery["searchfy"] = ".*" - - ################### - # Not_found clues # - ################### - # Strings that will imply that the query number is not appearing - self.notFoundText = {} - #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["was removed from GenSpot."] - #self.notFoundText["searchfy"] = [] - - ######################### - # Fields to be searched # - ######################### - self.fieldsRegExp = {} - - # Definition of regular expressions to be searched in phonefy mode - #self.fieldsRegExp["phonefy"] = {} - # Example of fields: - #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" - - # Definition of regular expressions to be searched in usufy mode - self.fieldsRegExp["usufy"] = {} - # Example of fields: - #self.fieldsRegExp["usufy"]["i3visio.location"] = "" - # Definition of regular expressions to be searched in searchfy mode - #self.fieldsRegExp["searchfy"] = {} - # Example of fields: - #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" - - ################ - # Fields found # - ################ - # This attribute will be feeded when running the program. - self.foundFields = {} - - diff --git a/osrframework/wrappers/github.py b/osrframework/wrappers/github.py index cb9cb23..e18a2fd 100644 --- a/osrframework/wrappers/github.py +++ b/osrframework/wrappers/github.py @@ -31,12 +31,12 @@ class Github(Platform): - """ + """ A object for Github. """ def __init__(self): - """ - Constructor... + """ + Constructor... """ self.platformName = "Github" self.tags = ["development"] @@ -47,28 +47,28 @@ ######################## # Defining valid modes # ######################## - self.isValidMode = {} + self.isValidMode = {} self.isValidMode["phonefy"] = False self.isValidMode["usufy"] = True - self.isValidMode["searchfy"] = True - + self.isValidMode["searchfy"] = True + ###################################### # Search URL for the different modes # ###################################### # Strings with the URL for each and every mode - self.url = {} + self.url = {} #self.url["phonefy"] = "http://anyurl.com//phone/" + "" - self.url["usufy"] = "https://github.com/" + "" - self.url["searchfy"] = "https://github.com/search?utf8=%E2%9C%93&q=&type=Users&ref=searchresults" + self.url["usufy"] = "https://github.com/" + "" + self.url["searchfy"] = "https://github.com/search?utf8=%E2%9C%93&q=&type=Users&ref=searchresults" ###################################### # Whether the user needs credentials # ###################################### - self.needsCredentials = {} + self.needsCredentials = {} #self.needsCredentials["phonefy"] = False self.needsCredentials["usufy"] = False - self.needsCredentials["searchfy"] = False - + self.needsCredentials["searchfy"] = False + ################# # Valid queries # ################# @@ -78,7 +78,7 @@ #self.validQuery["phonefy"] = ".*" self.validQuery["usufy"] = ".+" self.validQuery["searchfy"] = ".+" - + ################### # Not_found clues # ################### @@ -86,32 +86,30 @@ self.notFoundText = {} #self.notFoundText["phonefy"] = [] self.notFoundText["usufy"] = ["This is not the web page you are looking for"] - self.notFoundText["searchfy"] = [] - + self.notFoundText["searchfy"] = [] + ######################### # Fields to be searched # ######################### self.fieldsRegExp = {} - + # Definition of regular expressions to be searched in phonefy mode #self.fieldsRegExp["phonefy"] = {} # Example of fields: #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" - + # Definition of regular expressions to be searched in usufy mode self.fieldsRegExp["usufy"] = {} # Example of fields: #self.fieldsRegExp["usufy"]["i3visio.location"] = "" # Definition of regular expressions to be searched in searchfy mode self.fieldsRegExp["searchfy"] = {} - self.searchfyAliasRegexp = "\"@([^\"]+)\""" - self.url["usufy"] = "https://www.houzz.es/pro/" + "" + self.url["usufy"] = "https://www.houzz.com/user/" + "" #self.url["searchfy"] = "http://anyurl.com/search/" + "" ###################################### @@ -84,7 +84,9 @@ # Strings that will imply that the query number is not appearing self.notFoundText = {} #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["

La página solicitada no existe.

"] + self.notFoundText["usufy"] = [ + '' + ] #self.notFoundText["searchfy"] = [] ######################### diff --git a/osrframework/wrappers/ifunny.py b/osrframework/wrappers/ifunny.py index 9fb2a71..a9cf0af 100644 --- a/osrframework/wrappers/ifunny.py +++ b/osrframework/wrappers/ifunny.py @@ -41,7 +41,7 @@ Constructor... """ self.platformName = "IFunny" - self.tags = ["image"] + self.tags = ["imagery"] ######################## # Defining valid modes # diff --git a/osrframework/wrappers/imgur.py b/osrframework/wrappers/imgur.py index f89c989..baf111c 100644 --- a/osrframework/wrappers/imgur.py +++ b/osrframework/wrappers/imgur.py @@ -38,7 +38,7 @@ Constructor... """ self.platformName = "Imgur" - self.tags = ["image"] + self.tags = ["imagery"] ######################## # Defining valid modes # diff --git a/osrframework/wrappers/instagram.py b/osrframework/wrappers/instagram.py index a2471ae..e54526e 100644 --- a/osrframework/wrappers/instagram.py +++ b/osrframework/wrappers/instagram.py @@ -30,41 +30,41 @@ from osrframework.utils.platforms import Platform class Instagram(Platform): - """ + """ A object for Instagram. """ def __init__(self): - """ - Constructor... + """ + Constructor... """ self.platformName = "Instagram" - self.tags = ["image", "social"] + self.tags = ["imagery"] ######################## # Defining valid modes # ######################## - self.isValidMode = {} + self.isValidMode = {} self.isValidMode["phonefy"] = False self.isValidMode["usufy"] = True - self.isValidMode["searchfy"] = False - + self.isValidMode["searchfy"] = True + ###################################### # Search URL for the different modes # ###################################### # Strings with the URL for each and every mode - self.url = {} + self.url = {} #self.url["phonefy"] = "http://anyurl.com//phone/" + "" - self.url["usufy"] = "http://www.instagram.com/" + "" - #self.url["searchfy"] = "http://anyurl.com/search/" + "" + self.url["usufy"] = "http://www.instagram.com/" + "" + self.url["searchfy"] = "http://picbear.online/search/" + "" ###################################### # Whether the user needs credentials # ###################################### - self.needsCredentials = {} + self.needsCredentials = {} #self.needsCredentials["phonefy"] = False self.needsCredentials["usufy"] = False - #self.needsCredentials["searchfy"] = False - + self.needsCredentials["searchfy"] = False + ################# # Valid queries # ################# @@ -73,8 +73,8 @@ # The regular expression '.+' will match any query. #self.validQuery["phonefy"] = ".*" self.validQuery["usufy"] = ".+" - #self.validQuery["searchfy"] = ".*" - + self.validQuery["searchfy"] = ".*" + ################### # Not_found clues # ################### @@ -82,31 +82,30 @@ self.notFoundText = {} #self.notFoundText["phonefy"] = [] self.notFoundText["usufy"] = ["Página no encontrada"] - #self.notFoundText["searchfy"] = [] - + self.notFoundText["searchfy"] = [] + ######################### # Fields to be searched # ######################### self.fieldsRegExp = {} - + # Definition of regular expressions to be searched in phonefy mode #self.fieldsRegExp["phonefy"] = {} # Example of fields: #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" - + # Definition of regular expressions to be searched in usufy mode self.fieldsRegExp["usufy"] = {} # Example of fields: #self.fieldsRegExp["usufy"]["i3visio.location"] = "" # Definition of regular expressions to be searched in searchfy mode - #self.fieldsRegExp["searchfy"] = {} - # Example of fields: - #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" - + self.fieldsRegExp["searchfy"] = {} + #"\"@([^\"]+)\"" <\/div>
. -# -################################################################################## - -import argparse -import json -import re -import sys -import urllib2 - -import osrframework.utils.browser as browser -from osrframework.utils.platforms import Platform - -class Islamicawakening(Platform): - """ - A object for Islamicawakening. - """ - def __init__(self): - """ - Constructor... - """ - self.platformName = "Islamicawakening" - self.tags = ["activism"] - - ######################## - # Defining valid modes # - ######################## - self.isValidMode = {} - self.isValidMode["phonefy"] = False - self.isValidMode["usufy"] = True - self.isValidMode["searchfy"] = False - - ###################################### - # Search URL for the different modes # - ###################################### - # Strings with the URL for each and every mode - self.url = {} - #self.url["phonefy"] = "http://anyurl.com//phone/" + "" - self.url["usufy"] = "http://www.islamicawakening.com/members/" + "" - #self.url["searchfy"] = "http://anyurl.com/search/" + "" - - ###################################### - # Whether the user needs credentials # - ###################################### - self.needsCredentials = {} - #self.needsCredentials["phonefy"] = False - self.needsCredentials["usufy"] = False - #self.needsCredentials["searchfy"] = False - - ################# - # Valid queries # - ################# - # Strings that will imply that the query number is not appearing - self.validQuery = {} - # The regular expression '.+' will match any query. - #self.validQuery["phonefy"] = ".*" - self.validQuery["usufy"] = ".+" - #self.validQuery["searchfy"] = ".*" - - ################### - # Not_found clues # - ################### - # Strings that will imply that the query number is not appearing - self.notFoundText = {} - #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["This user has not registered and therefore does not have a profile to view.", "

Account Suspended

"] - #self.notFoundText["searchfy"] = [] - - ######################### - # Fields to be searched # - ######################### - self.fieldsRegExp = {} - - # Definition of regular expressions to be searched in phonefy mode - #self.fieldsRegExp["phonefy"] = {} - # Example of fields: - #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" - - # Definition of regular expressions to be searched in usufy mode - self.fieldsRegExp["usufy"] = {} - # Example of fields: - #self.fieldsRegExp["usufy"]["i3visio.location"] = "" - # Definition of regular expressions to be searched in searchfy mode - #self.fieldsRegExp["searchfy"] = {} - # Example of fields: - #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" - - ################ - # Fields found # - ################ - # This attribute will be feeded when running the program. - self.foundFields = {} - - diff --git a/osrframework/wrappers/khanacademy.py b/osrframework/wrappers/khanacademy.py new file mode 100644 index 0000000..fa6fb4e --- /dev/null +++ b/osrframework/wrappers/khanacademy.py @@ -0,0 +1,113 @@ +# !/usr/bin/python +# -*- coding: cp1252 -*- +# +################################################################################## +# +# Copyright 2018 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com) +# +# This program is part of OSRFramework. You can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +################################################################################## + +__author__ = "i3visio " +__version__ = "1.0" + +import argparse +import json +import re +import sys +import urllib2 + +import osrframework.utils.browser as browser +from osrframework.utils.platforms import Platform + +class KhanAcademy(Platform): + """ + A object for KhanAcademy. + """ + def __init__(self): + """ + Constructor... + """ + self.platformName = "khanacademy" + self.tags = ["learning"] + + ######################## + # Defining valid modes # + ######################## + self.isValidMode = {} + self.isValidMode["phonefy"] = False + self.isValidMode["usufy"] = True + self.isValidMode["searchfy"] = False + + ###################################### + # Search URL for the different modes # + ###################################### + # Strings with the URL for each and every mode + self.url = {} + #self.url["phonefy"] = "http://anyurl.com//phone/" + "" + self.url["usufy"] = "https://www.khanacademy.org/profile/" + #self.url["searchfy"] = "http://anyurl.com/search/" + "" + + ###################################### + # Whether the user needs credentials # + ###################################### + self.needsCredentials = {} + #self.needsCredentials["phonefy"] = False + self.needsCredentials["usufy"] = False + #self.needsCredentials["searchfy"] = False + + ################# + # Valid queries # + ################# + # Strings that will imply that the query number is not appearing + self.validQuery = {} + # The regular expression '.+' will match any query + #self.validQuery["phonefy"] = ".*" + self.validQuery["usufy"] = ".+" + #self.validQuery["searchfy"] = ".*" + + ################### + # Not_found clues # + ################### + # Strings that will imply that the query number is not appearing + self.notFoundText = {} + #self.notFoundText["phonefy"] = [] + self.notFoundText["usufy"] = ["Profile not available | Khan Academy"] + #self.notFoundText["searchfy"] = [] + + ######################### + # Fields to be searched # + ######################### + self.fieldsRegExp = {} + + # Definition of regular expressions to be searched in phonefy mode + #self.fieldsRegExp["phonefy"] = {} + # Example of fields: + #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" + + # Definition of regular expressions to be searched in usufy mode + self.fieldsRegExp["usufy"] = {} + # Example of fields: + #self.fieldsRegExp["usufy"]["i3visio.location"] = "" + # Definition of regular expressions to be searched in searchfy mode + #self.fieldsRegExp["searchfy"] = {} + # Example of fields: + #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" + + ################ + # Fields found # + ################ + # This attribute will be feeded when running the program. + self.foundFields = {} diff --git a/osrframework/wrappers/kiwi.py b/osrframework/wrappers/kiwi.py deleted file mode 100644 index 2b114d6..0000000 --- a/osrframework/wrappers/kiwi.py +++ /dev/null @@ -1,113 +0,0 @@ -# !/usr/bin/python -# -*- coding: cp1252 -*- -# -################################################################################## -# -# Copyright 2017 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com) -# -# This program is part of OSRFramework. You can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -################################################################################## - -__author__ = "Yaiza Rubio and Félix Brezo " -__version__ = "1.2" - -import argparse -import json -import re -import sys -import urllib2 - -import osrframework.utils.browser as browser -from osrframework.utils.platforms import Platform - -class Kiwi(Platform): - """ - A object for Kiwi. - """ - def __init__(self): - """ - Constructor... - """ - self.platformName = "Kiwi" - self.tags = ["social", "teenagers"] - - ######################## - # Defining valid modes # - ######################## - self.isValidMode = {} - self.isValidMode["phonefy"] = False - self.isValidMode["usufy"] = True - self.isValidMode["searchfy"] = False - - ###################################### - # Search URL for the different modes # - ###################################### - # Strings with the URL for each and every mode - self.url = {} - #self.url["phonefy"] = "http://anyurl.com//phone/" + "" - self.url["usufy"] = "https://kiwi.qa/" - #self.url["searchfy"] = "http://anyurl.com/search/" + "" - - ###################################### - # Whether the user needs credentials # - ###################################### - self.needsCredentials = {} - #self.needsCredentials["phonefy"] = False - self.needsCredentials["usufy"] = False - #self.needsCredentials["searchfy"] = False - - ################# - # Valid queries # - ################# - # Strings that will imply that the query number is not appearing - self.validQuery = {} - # The regular expression '.+' will match any query - #self.validQuery["phonefy"] = ".*" - self.validQuery["usufy"] = "[^\.]{1,16}" - #self.validQuery["searchfy"] = ".*" - - ################### - # Not_found clues # - ################### - # Strings that will imply that the query number is not appearing - self.notFoundText = {} - #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["ga('send', 'event', 'ERROR',"] - #self.notFoundText["searchfy"] = [] - - ######################### - # Fields to be searched # - ######################### - self.fieldsRegExp = {} - - # Definition of regular expressions to be searched in phonefy mode - #self.fieldsRegExp["phonefy"] = {} - # Example of fields: - #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" - - # Definition of regular expressions to be searched in usufy mode - self.fieldsRegExp["usufy"] = {} - # Example of fields: - #self.fieldsRegExp["usufy"]["i3visio.location"] = {"start": 'Location: "', "end": '"'} - # Definition of regular expressions to be searched in searchfy mode - #self.fieldsRegExp["searchfy"] = {} - # Example of fields: - #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" - - ################ - # Fields found # - ################ - # This attribute will be feeded when running the program. - self.foundFields = {} diff --git a/osrframework/wrappers/klout.py b/osrframework/wrappers/klout.py deleted file mode 100644 index 38d3368..0000000 --- a/osrframework/wrappers/klout.py +++ /dev/null @@ -1,111 +0,0 @@ -# !/usr/bin/python -# -*- coding: cp1252 -*- -# -################################################################################## -# -# Copyright 2016 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com) -# -# This program is part of OSRFramework. You can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -################################################################################## - -import argparse -import json -import re -import sys -import urllib2 - -import osrframework.utils.browser as browser -from osrframework.utils.platforms import Platform -class Klout(Platform): - """ - A object for Klout. - """ - def __init__(self): - """ - Constructor... - """ - self.platformName = "Klout" - self.tags = ["social"] - - ######################## - # Defining valid modes # - ######################## - self.isValidMode = {} - self.isValidMode["phonefy"] = False - self.isValidMode["usufy"] = True - self.isValidMode["searchfy"] = False - - ###################################### - # Search URL for the different modes # - ###################################### - # Strings with the URL for each and every mode - self.url = {} - #self.url["phonefy"] = "http://anyurl.com//phone/" + "" - self.url["usufy"] = "http://www.klout.com/" + "" - #self.url["searchfy"] = "http://anyurl.com/search/" + "" - - ###################################### - # Whether the user needs credentials # - ###################################### - self.needsCredentials = {} - #self.needsCredentials["phonefy"] = False - self.needsCredentials["usufy"] = False - #self.needsCredentials["searchfy"] = False - - ################# - # Valid queries # - ################# - # Strings that will imply that the query number is not appearing - self.validQuery = {} - # The regular expression '.+' will match any query. - #self.validQuery["phonefy"] = ".*" - self.validQuery["usufy"] = ".+" - #self.validQuery["searchfy"] = ".*" - - ################### - # Not_found clues # - ################### - # Strings that will imply that the query number is not appearing - self.notFoundText = {} - #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["klout.com/static/images/sasquatch2.png"] - #self.notFoundText["searchfy"] = [] - - ######################### - # Fields to be searched # - ######################### - self.fieldsRegExp = {} - - # Definition of regular expressions to be searched in phonefy mode - #self.fieldsRegExp["phonefy"] = {} - # Example of fields: - #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" - - # Definition of regular expressions to be searched in usufy mode - self.fieldsRegExp["usufy"] = {} - # Example of fields: - #self.fieldsRegExp["usufy"]["i3visio.location"] = "" - # Definition of regular expressions to be searched in searchfy mode - #self.fieldsRegExp["searchfy"] = {} - # Example of fields: - #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" - - ################ - # Fields found # - ################ - # This attribute will be feeded when running the program. - self.foundFields = {} - - diff --git a/osrframework/wrappers/linkedin.py b/osrframework/wrappers/linkedin.py deleted file mode 100644 index 887e3a4..0000000 --- a/osrframework/wrappers/linkedin.py +++ /dev/null @@ -1,112 +0,0 @@ -# !/usr/bin/python -# -*- coding: cp1252 -*- -# -################################################################################## -# -# Copyright 2016 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com) -# -# This program is part of OSRFramework. You can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -################################################################################## - -import argparse -import json -import re -import sys -import urllib2 - -import osrframework.utils.browser as browser -from osrframework.utils.platforms import Platform - -class Linkedin(Platform): - """ - A object for Linkedin. - """ - def __init__(self): - """ - Constructor... - """ - self.platformName = "Linkedin" - self.tags = ["professional", "contact"] - - ######################## - # Defining valid modes # - ######################## - self.isValidMode = {} - self.isValidMode["phonefy"] = False - self.isValidMode["usufy"] = True - self.isValidMode["searchfy"] = False - - ###################################### - # Search URL for the different modes # - ###################################### - # Strings with the URL for each and every mode - self.url = {} - #self.url["phonefy"] = "http://anyurl.com//phone/" + "" - self.url["usufy"] = "https://www.linkedin.com/in/" + "" - #self.url["searchfy"] = "http://anyurl.com/search/" + "" - - ###################################### - # Whether the user needs credentials # - ###################################### - self.needsCredentials = {} - #self.needsCredentials["phonefy"] = False - self.needsCredentials["usufy"] = False - #self.needsCredentials["searchfy"] = False - - ################# - # Valid queries # - ################# - # Strings that will imply that the query number is not appearing - self.validQuery = {} - # The regular expression '.+' will match any query. - #self.validQuery["phonefy"] = ".*" - self.validQuery["usufy"] = ".+" - #self.validQuery["searchfy"] = ".*" - - ################### - # Not_found clues # - ################### - # Strings that will imply that the query number is not appearing - self.notFoundText = {} - #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["Perfil no encontrado"] - #self.notFoundText["searchfy"] = [] - - ######################### - # Fields to be searched # - ######################### - self.fieldsRegExp = {} - - # Definition of regular expressions to be searched in phonefy mode - #self.fieldsRegExp["phonefy"] = {} - # Example of fields: - #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" - - # Definition of regular expressions to be searched in usufy mode - self.fieldsRegExp["usufy"] = {} - # Example of fields: - #self.fieldsRegExp["usufy"]["i3visio.location"] = "" - # Definition of regular expressions to be searched in searchfy mode - #self.fieldsRegExp["searchfy"] = {} - # Example of fields: - #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" - - ################ - # Fields found # - ################ - # This attribute will be feeded when running the program. - self.foundFields = {} - - diff --git a/osrframework/wrappers/netlog.py b/osrframework/wrappers/netlog.py deleted file mode 100644 index e100cca..0000000 --- a/osrframework/wrappers/netlog.py +++ /dev/null @@ -1,112 +0,0 @@ -# !/usr/bin/python -# -*- coding: cp1252 -*- -# -################################################################################## -# -# Copyright 2016 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com) -# -# This program is part of OSRFramework. You can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -################################################################################## - -import argparse -import json -import re -import sys -import urllib2 - -import osrframework.utils.browser as browser -from osrframework.utils.platforms import Platform - -class Netlog(Platform): - """ - A object for Netlog. - """ - def __init__(self): - """ - Constructor... - """ - self.platformName = "Netlog" - self.tags = ["social"] - - ######################## - # Defining valid modes # - ######################## - self.isValidMode = {} - self.isValidMode["phonefy"] = False - self.isValidMode["usufy"] = True - self.isValidMode["searchfy"] = False - - ###################################### - # Search URL for the different modes # - ###################################### - # Strings with the URL for each and every mode - self.url = {} - #self.url["phonefy"] = "http://anyurl.com//phone/" + "" - self.url["usufy"] = "http://nl.netlog.com/" + "" - #self.url["searchfy"] = "http://anyurl.com/search/" + "" - - ###################################### - # Whether the user needs credentials # - ###################################### - self.needsCredentials = {} - #self.needsCredentials["phonefy"] = False - self.needsCredentials["usufy"] = False - #self.needsCredentials["searchfy"] = False - - ################# - # Valid queries # - ################# - # Strings that will imply that the query number is not appearing - self.validQuery = {} - # The regular expression '.+' will match any query. - #self.validQuery["phonefy"] = ".*" - self.validQuery["usufy"] = ".+" - #self.validQuery["searchfy"] = ".*" - - ################### - # Not_found clues # - ################### - # Strings that will imply that the query number is not appearing - self.notFoundText = {} - #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["werd niet teruggevonden op Netlog"] - #self.notFoundText["searchfy"] = [] - - ######################### - # Fields to be searched # - ######################### - self.fieldsRegExp = {} - - # Definition of regular expressions to be searched in phonefy mode - #self.fieldsRegExp["phonefy"] = {} - # Example of fields: - #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" - - # Definition of regular expressions to be searched in usufy mode - self.fieldsRegExp["usufy"] = {} - # Example of fields: - #self.fieldsRegExp["usufy"]["i3visio.location"] = "" - # Definition of regular expressions to be searched in searchfy mode - #self.fieldsRegExp["searchfy"] = {} - # Example of fields: - #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" - - ################ - # Fields found # - ################ - # This attribute will be feeded when running the program. - self.foundFields = {} - - diff --git a/osrframework/wrappers/openbugbounty.py b/osrframework/wrappers/openbugbounty.py index d828da6..6e28e3c 100644 --- a/osrframework/wrappers/openbugbounty.py +++ b/osrframework/wrappers/openbugbounty.py @@ -84,7 +84,7 @@ # Strings that will imply that the query number is not appearing self.notFoundText = {} #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = [ "

404 Error: Page Not found

" ] + self.notFoundText["usufy"] = [ "/images/404.jpg" ] #self.notFoundText["searchfy"] = [] ######################### diff --git a/osrframework/wrappers/peerbackers.py b/osrframework/wrappers/peerbackers.py deleted file mode 100644 index 3bcc59c..0000000 --- a/osrframework/wrappers/peerbackers.py +++ /dev/null @@ -1,112 +0,0 @@ -# !/usr/bin/python -# -*- coding: cp1252 -*- -# -################################################################################## -# -# Copyright 2016 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com) -# -# This program is part of OSRFramework. You can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -################################################################################## - -import argparse -import json -import re -import sys -import urllib2 - -import osrframework.utils.browser as browser -from osrframework.utils.platforms import Platform - -class Peerbackers(Platform): - """ - A object for Peerbackers. - """ - def __init__(self): - """ - Constructor... - """ - self.platformName = "Peerbackers" - self.tags = ["e-commerce"] - - ######################## - # Defining valid modes # - ######################## - self.isValidMode = {} - self.isValidMode["phonefy"] = False - self.isValidMode["usufy"] = True - self.isValidMode["searchfy"] = False - - ###################################### - # Search URL for the different modes # - ###################################### - # Strings with the URL for each and every mode - self.url = {} - #self.url["phonefy"] = "http://anyurl.com//phone/" + "" - self.url["usufy"] = "http://peerbackers.com/members/" + "" - #self.url["searchfy"] = "http://anyurl.com/search/" + "" - - ###################################### - # Whether the user needs credentials # - ###################################### - self.needsCredentials = {} - #self.needsCredentials["phonefy"] = False - self.needsCredentials["usufy"] = False - #self.needsCredentials["searchfy"] = False - - ################# - # Valid queries # - ################# - # Strings that will imply that the query number is not appearing - self.validQuery = {} - # The regular expression '.+' will match any query. - #self.validQuery["phonefy"] = ".*" - self.validQuery["usufy"] = ".+" - #self.validQuery["searchfy"] = ".*" - - ################### - # Not_found clues # - ################### - # Strings that will imply that the query number is not appearing - self.notFoundText = {} - #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["peerbackers - Your Path To Capital - Crowdfunding Consulting"] - #self.notFoundText["searchfy"] = [] - - ######################### - # Fields to be searched # - ######################### - self.fieldsRegExp = {} - - # Definition of regular expressions to be searched in phonefy mode - #self.fieldsRegExp["phonefy"] = {} - # Example of fields: - #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" - - # Definition of regular expressions to be searched in usufy mode - self.fieldsRegExp["usufy"] = {} - # Example of fields: - #self.fieldsRegExp["usufy"]["i3visio.location"] = "" - # Definition of regular expressions to be searched in searchfy mode - #self.fieldsRegExp["searchfy"] = {} - # Example of fields: - #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" - - ################ - # Fields found # - ################ - # This attribute will be feeded when running the program. - self.foundFields = {} - - diff --git a/osrframework/wrappers/photobucket.py b/osrframework/wrappers/photobucket.py index 1b7695a..37a5bfc 100644 --- a/osrframework/wrappers/photobucket.py +++ b/osrframework/wrappers/photobucket.py @@ -39,7 +39,7 @@ Constructor... """ self.platformName = "Photobucket" - self.tags = ["image"] + self.tags = ["imagery"] ######################## # Defining valid modes # @@ -55,7 +55,7 @@ # Strings with the URL for each and every mode self.url = {} #self.url["phonefy"] = "http://anyurl.com//phone/" + "" - self.url["usufy"] = "http://smg.photobucket.com/user/" + "" + "/library/?sort=3&page=1" + self.url["usufy"] = "http://photobucket.com/user/" + "" + "/library/?sort=3&page=1" #self.url["searchfy"] = "http://anyurl.com/search/" + "" ###################################### diff --git a/osrframework/wrappers/pixinsight.py b/osrframework/wrappers/pixinsight.py index 68509dd..40b50f3 100644 --- a/osrframework/wrappers/pixinsight.py +++ b/osrframework/wrappers/pixinsight.py @@ -39,7 +39,7 @@ Constructor... """ self.platformName = "Pixinsight" - self.tags = ["image"] + self.tags = ["imagery"] ######################## # Defining valid modes # diff --git a/osrframework/wrappers/pixls.py b/osrframework/wrappers/pixls.py index 6734ff3..e06898c 100644 --- a/osrframework/wrappers/pixls.py +++ b/osrframework/wrappers/pixls.py @@ -38,7 +38,7 @@ Constructor... """ self.platformName = "Pixls" - self.tags = ["image", "professional", "development"] + self.tags = ["imagery"] ######################## # Defining valid modes # diff --git a/osrframework/wrappers/px500.py b/osrframework/wrappers/px500.py index 5bcb77d..3b44123 100644 --- a/osrframework/wrappers/px500.py +++ b/osrframework/wrappers/px500.py @@ -39,7 +39,7 @@ Constructor... """ self.platformName = "500px" - self.tags = ["professional", "image"] + self.tags = ["imagery"] ######################## # Defining valid modes # diff --git a/osrframework/wrappers/smugmug.py b/osrframework/wrappers/smugmug.py index 58bcb2d..ec8d858 100644 --- a/osrframework/wrappers/smugmug.py +++ b/osrframework/wrappers/smugmug.py @@ -41,7 +41,7 @@ Constructor... """ self.platformName = "Smugmug" - self.tags = ["photos"] + self.tags = ["imagery"] ######################## # Defining valid modes # diff --git a/osrframework/wrappers/sourceforge.py b/osrframework/wrappers/sourceforge.py deleted file mode 100644 index 0f21e79..0000000 --- a/osrframework/wrappers/sourceforge.py +++ /dev/null @@ -1,111 +0,0 @@ -# !/usr/bin/python -# -*- coding: cp1252 -*- -# -################################################################################## -# -# Copyright 2016 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com) -# -# This program is part of OSRFramework. You can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -################################################################################## - -import argparse -import json -import re -import sys -import urllib2 - -import osrframework.utils.browser as browser -from osrframework.utils.platforms import Platform - -class Sourceforge(Platform): - """ - A object for Sourceforge. - """ - def __init__(self): - """ - Constructor... - """ - self.platformName = "Sourceforge" - self.tags = ["development"] - - ######################## - # Defining valid modes # - ######################## - self.isValidMode = {} - self.isValidMode["phonefy"] = False - self.isValidMode["usufy"] = True - self.isValidMode["searchfy"] = False - - ###################################### - # Search URL for the different modes # - ###################################### - # Strings with the URL for each and every mode - self.url = {} - #self.url["phonefy"] = "http://anyurl.com//phone/" + "" - self.url["usufy"] = "http://sourceforge.net/u/" + "" - #self.url["searchfy"] = "http://anyurl.com/search/" + "" - - ###################################### - # Whether the user needs credentials # - ###################################### - self.needsCredentials = {} - #self.needsCredentials["phonefy"] = False - self.needsCredentials["usufy"] = False - #self.needsCredentials["searchfy"] = False - - ################# - # Valid queries # - ################# - # Strings that will imply that the query number is not appearing - self.validQuery = {} - # The regular expression '.+' will match any query. - #self.validQuery["phonefy"] = ".*" - self.validQuery["usufy"] = ".+" - #self.validQuery["searchfy"] = ".*" - - ################### - # Not_found clues # - ################### - # Strings that will imply that the query number is not appearing - self.notFoundText = {} - #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["We're sorry but we weren't able to process this request."] - #self.notFoundText["searchfy"] = [] - - ######################### - # Fields to be searched # - ######################### - self.fieldsRegExp = {} - - # Definition of regular expressions to be searched in phonefy mode - #self.fieldsRegExp["phonefy"] = {} - # Example of fields: - #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" - - # Definition of regular expressions to be searched in usufy mode - self.fieldsRegExp["usufy"] = {} - # Example of fields: - #self.fieldsRegExp["usufy"]["i3visio.location"] = "" - # Definition of regular expressions to be searched in searchfy mode - #self.fieldsRegExp["searchfy"] = {} - # Example of fields: - #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" - - ################ - # Fields found # - ################ - # This attribute will be feeded when running the program. - self.foundFields = {} - diff --git a/osrframework/wrappers/telegram.py b/osrframework/wrappers/telegram.py new file mode 100644 index 0000000..9d9bb7c --- /dev/null +++ b/osrframework/wrappers/telegram.py @@ -0,0 +1,113 @@ +# !/usr/bin/python +# -*- coding: cp1252 -*- +# +################################################################################## +# +# Copyright 2018 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com) +# +# This program is part of OSRFramework. You can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +################################################################################## + +__author__ = "i3visio " +__version__ = "1.0" + +import argparse +import json +import re +import sys +import urllib2 + +import osrframework.utils.browser as browser +from osrframework.utils.platforms import Platform + +class Telegram(Platform): + """ + A object for Telegram. + """ + def __init__(self): + """ + Constructor... + """ + self.platformName = "telegram" + self.tags = ["chat"] + + ######################## + # Defining valid modes # + ######################## + self.isValidMode = {} + self.isValidMode["phonefy"] = False + self.isValidMode["usufy"] = True + self.isValidMode["searchfy"] = False + + ###################################### + # Search URL for the different modes # + ###################################### + # Strings with the URL for each and every mode + self.url = {} + #self.url["phonefy"] = "http://anyurl.com//phone/" + "" + self.url["usufy"] = "https://telegram.me/" + #self.url["searchfy"] = "http://anyurl.com/search/" + "" + + ###################################### + # Whether the user needs credentials # + ###################################### + self.needsCredentials = {} + #self.needsCredentials["phonefy"] = False + self.needsCredentials["usufy"] = False + #self.needsCredentials["searchfy"] = False + + ################# + # Valid queries # + ################# + # Strings that will imply that the query number is not appearing + self.validQuery = {} + # The regular expression '.+' will match any query + #self.validQuery["phonefy"] = ".*" + self.validQuery["usufy"] = ".+" + #self.validQuery["searchfy"] = ".*" + + ################### + # Not_found clues # + ################### + # Strings that will imply that the query number is not appearing + self.notFoundText = {} + #self.notFoundText["phonefy"] = [] + self.notFoundText["usufy"] = ["tgme_username_link", 'tgme_icon_user'] + #self.notFoundText["searchfy"] = [] + + ######################### + # Fields to be searched # + ######################### + self.fieldsRegExp = {} + + # Definition of regular expressions to be searched in phonefy mode + #self.fieldsRegExp["phonefy"] = {} + # Example of fields: + #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" + + # Definition of regular expressions to be searched in usufy mode + self.fieldsRegExp["usufy"] = {} + # Example of fields: + #self.fieldsRegExp["usufy"]["i3visio.location"] = "" + # Definition of regular expressions to be searched in searchfy mode + #self.fieldsRegExp["searchfy"] = {} + # Example of fields: + #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" + + ################ + # Fields found # + ################ + # This attribute will be feeded when running the program. + self.foundFields = {} diff --git a/osrframework/wrappers/tumblr.py b/osrframework/wrappers/tumblr.py deleted file mode 100644 index 7386a0a..0000000 --- a/osrframework/wrappers/tumblr.py +++ /dev/null @@ -1,112 +0,0 @@ -# !/usr/bin/python -# -*- coding: cp1252 -*- -# -################################################################################## -# -# Copyright 2016 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com) -# -# This program is part of OSRFramework. You can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -################################################################################## - -import argparse -import json -import re -import sys -import urllib2 - -import osrframework.utils.browser as browser -from osrframework.utils.platforms import Platform - -class Tumblr(Platform): - """ - A object for Tumblr. - """ - def __init__(self): - """ - Constructor... - """ - self.platformName = "Tumblr" - self.tags = ["social"] - - ######################## - # Defining valid modes # - ######################## - self.isValidMode = {} - self.isValidMode["phonefy"] = False - self.isValidMode["usufy"] = True - self.isValidMode["searchfy"] = False - - ###################################### - # Search URL for the different modes # - ###################################### - # Strings with the URL for each and every mode - self.url = {} - #self.url["phonefy"] = "http://anyurl.com//phone/" + "" - self.url["usufy"] = "http://" + "" + ".tumblr.com" - #self.url["searchfy"] = "http://anyurl.com/search/" + "" - - ###################################### - # Whether the user needs credentials # - ###################################### - self.needsCredentials = {} - #self.needsCredentials["phonefy"] = False - self.needsCredentials["usufy"] = False - #self.needsCredentials["searchfy"] = False - - ################# - # Valid queries # - ################# - # Strings that will imply that the query number is not appearing - self.validQuery = {} - # The regular expression '.+' will match any query. - #self.validQuery["phonefy"] = ".*" - self.validQuery["usufy"] = "[^\.]+" - #self.validQuery["searchfy"] = ".*" - - ################### - # Not_found clues # - ################### - # Strings that will imply that the query number is not appearing - self.notFoundText = {} - #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["Untitled"] - #self.notFoundText["searchfy"] = [] - - ######################### - # Fields to be searched # - ######################### - self.fieldsRegExp = {} - - # Definition of regular expressions to be searched in phonefy mode - #self.fieldsRegExp["phonefy"] = {} - # Example of fields: - #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" - - # Definition of regular expressions to be searched in usufy mode - self.fieldsRegExp["usufy"] = {} - # Example of fields: - #self.fieldsRegExp["usufy"]["i3visio.location"] = "" - # Definition of regular expressions to be searched in searchfy mode - #self.fieldsRegExp["searchfy"] = {} - # Example of fields: - #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" - - ################ - # Fields found # - ################ - # This attribute will be feeded when running the program. - self.foundFields = {} - - diff --git a/osrframework/wrappers/tune.py b/osrframework/wrappers/tune.py deleted file mode 100644 index 5ef5f9d..0000000 --- a/osrframework/wrappers/tune.py +++ /dev/null @@ -1,112 +0,0 @@ -# !/usr/bin/python -# -*- coding: cp1252 -*- -# -################################################################################## -# -# Copyright 2016 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com) -# -# This program is part of OSRFramework. You can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -################################################################################## - -import argparse -import json -import re -import sys -import urllib2 - -import osrframework.utils.browser as browser -from osrframework.utils.platforms import Platform - -class Tune(Platform): - """ - A object for Tune. - """ - def __init__(self): - """ - Constructor... - """ - self.platformName = "Tune" - self.tags = ["social", "video"] - - ######################## - # Defining valid modes # - ######################## - self.isValidMode = {} - self.isValidMode["phonefy"] = False - self.isValidMode["usufy"] = True - self.isValidMode["searchfy"] = False - - ###################################### - # Search URL for the different modes # - ###################################### - # Strings with the URL for each and every mode - self.url = {} - #self.url["phonefy"] = "http://anyurl.com//phone/" + "" - self.url["usufy"] = "http://tune.pk/user/" + "" + "/about/" - #self.url["searchfy"] = "http://anyurl.com/search/" + "" - - ###################################### - # Whether the user needs credentials # - ###################################### - self.needsCredentials = {} - #self.needsCredentials["phonefy"] = False - self.needsCredentials["usufy"] = False - #self.needsCredentials["searchfy"] = False - - ################# - # Valid queries # - ################# - # Strings that will imply that the query number is not appearing - self.validQuery = {} - # The regular expression '.+' will match any query. - #self.validQuery["phonefy"] = ".*" - self.validQuery["usufy"] = ".+" - #self.validQuery["searchfy"] = ".*" - - ################### - # Not_found clues # - ################### - # Strings that will imply that the query number is not appearing - self.notFoundText = {} - #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["

User does not exist!

"] - #self.notFoundText["searchfy"] = [] - - ######################### - # Fields to be searched # - ######################### - self.fieldsRegExp = {} - - # Definition of regular expressions to be searched in phonefy mode - #self.fieldsRegExp["phonefy"] = {} - # Example of fields: - #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" - - # Definition of regular expressions to be searched in usufy mode - self.fieldsRegExp["usufy"] = {} - # Example of fields: - self.fieldsRegExp["usufy"]["i3visio.location.country"] = {"start": " "} - # Definition of regular expressions to be searched in searchfy mode - #self.fieldsRegExp["searchfy"] = {} - # Example of fields: - #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" - - ################ - # Fields found # - ################ - # This attribute will be feeded when running the program. - self.foundFields = {} - - diff --git a/osrframework/wrappers/tuporno.py b/osrframework/wrappers/tuporno.py deleted file mode 100644 index a3b5e21..0000000 --- a/osrframework/wrappers/tuporno.py +++ /dev/null @@ -1,112 +0,0 @@ -# !/usr/bin/python -# -*- coding: cp1252 -*- -# -################################################################################## -# -# Copyright 2016 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com) -# -# This program is part of OSRFramework. You can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# -################################################################################## - -import argparse -import json -import re -import sys -import urllib2 - -import osrframework.utils.browser as browser -from osrframework.utils.platforms import Platform - -class Tuporno(Platform): - """ - A object for Tuporno. - """ - def __init__(self): - """ - Constructor... - """ - self.platformName = "Tuporno" - self.tags = ["sex"] - - ######################## - # Defining valid modes # - ######################## - self.isValidMode = {} - self.isValidMode["phonefy"] = False - self.isValidMode["usufy"] = True - self.isValidMode["searchfy"] = False - - ###################################### - # Search URL for the different modes # - ###################################### - # Strings with the URL for each and every mode - self.url = {} - #self.url["phonefy"] = "http://anyurl.com//phone/" + "" - self.url["usufy"] = "http://tuporno.tv/usuario/" + "" - #self.url["searchfy"] = "http://anyurl.com/search/" + "" - - ###################################### - # Whether the user needs credentials # - ###################################### - self.needsCredentials = {} - #self.needsCredentials["phonefy"] = False - self.needsCredentials["usufy"] = False - #self.needsCredentials["searchfy"] = False - - ################# - # Valid queries # - ################# - # Strings that will imply that the query number is not appearing - self.validQuery = {} - # The regular expression '.+' will match any query. - #self.validQuery["phonefy"] = ".*" - self.validQuery["usufy"] = ".+" - #self.validQuery["searchfy"] = ".*" - - ################### - # Not_found clues # - ################### - # Strings that will imply that the query number is not appearing - self.notFoundText = {} - #self.notFoundText["phonefy"] = [] - self.notFoundText["usufy"] = ["Tuporno.tv - Videos Porno"] - #self.notFoundText["searchfy"] = [] - - ######################### - # Fields to be searched # - ######################### - self.fieldsRegExp = {} - - # Definition of regular expressions to be searched in phonefy mode - #self.fieldsRegExp["phonefy"] = {} - # Example of fields: - #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" - - # Definition of regular expressions to be searched in usufy mode - self.fieldsRegExp["usufy"] = {} - # Example of fields: - #self.fieldsRegExp["usufy"]["i3visio.location"] = "" - # Definition of regular expressions to be searched in searchfy mode - #self.fieldsRegExp["searchfy"] = {} - # Example of fields: - #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" - - ################ - # Fields found # - ################ - # This attribute will be feeded when running the program. - self.foundFields = {} - - diff --git a/osrframework/wrappers/twicsy.py b/osrframework/wrappers/twicsy.py index 16c4ce7..28a59c3 100644 --- a/osrframework/wrappers/twicsy.py +++ b/osrframework/wrappers/twicsy.py @@ -38,7 +38,7 @@ Constructor... """ self.platformName = "Twicsy" - self.tags = ["social", "photos"] + self.tags = ["social", "imagery"] ######################## # Defining valid modes # diff --git a/osrframework/wrappers/unsplash.py b/osrframework/wrappers/unsplash.py new file mode 100644 index 0000000..8b706d8 --- /dev/null +++ b/osrframework/wrappers/unsplash.py @@ -0,0 +1,113 @@ +# !/usr/bin/python +# -*- coding: cp1252 -*- +# +################################################################################## +# +# Copyright 2016 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com) +# +# This program is part of OSRFramework. You can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +################################################################################## + +import argparse +import json +import re +import sys +import urllib2 + +import osrframework.utils.browser as browser +from osrframework.utils.platforms import Platform + +class Unsplash(Platform): + """ + A <Platform> object for Unsplash. + """ + def __init__(self): + """ + Constructor... + """ + self.platformName = "Unsplash" + self.tags = ["imagery"] + + ######################## + # Defining valid modes # + ######################## + self.isValidMode = {} + self.isValidMode["phonefy"] = False + self.isValidMode["usufy"] = True + self.isValidMode["searchfy"] = False + + ###################################### + # Search URL for the different modes # + ###################################### + # Strings with the URL for each and every mode + self.url = {} + #self.url["phonefy"] = "http://anyurl.com//phone/" + "<phonefy>" + self.url["usufy"] = "https://unsplash.com/@" + "<usufy>" + #self.url["searchfy"] = "http://anyurl.com/search/" + "<searchfy>" + + ###################################### + # Whether the user needs credentials # + ###################################### + self.needsCredentials = {} + #self.needsCredentials["phonefy"] = False + self.needsCredentials["usufy"] = False + #self.needsCredentials["searchfy"] = False + + ################# + # Valid queries # + ################# + # Strings that will imply that the query number is not appearing + self.validQuery = {} + # The regular expression '.+' will match any query. + #self.validQuery["phonefy"] = ".*" + self.validQuery["usufy"] = ".+" + #self.validQuery["searchfy"] = ".*" + + ################### + # Not_found clues # + ################### + # Strings that will imply that the query number is not appearing + self.notFoundText = {} + #self.notFoundText["phonefy"] = [] + self.notFoundText["usufy"] = ["https://images.unsplash.com/gifs/weird/weird-9.gif"] + #self.notFoundText["searchfy"] = [] + + ######################### + # Fields to be searched # + ######################### + self.fieldsRegExp = {} + + # Definition of regular expressions to be searched in phonefy mode + #self.fieldsRegExp["phonefy"] = {} + # Example of fields: + #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" + + # Definition of regular expressions to be searched in usufy mode + self.fieldsRegExp["usufy"] = {} + # Example of fields: + #self.fieldsRegExp["usufy"]["i3visio.location"] = "" + + # Definition of regular expressions to be searched in searchfy mode + #self.fieldsRegExp["searchfy"] = {} + # Example of fields: + #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" + + ################ + # Fields found # + ################ + # This attribute will be feeded when running the program. + self.foundFields = {} + + diff --git a/osrframework/wrappers/whattpad.py b/osrframework/wrappers/whattpad.py new file mode 100644 index 0000000..6ac07ac --- /dev/null +++ b/osrframework/wrappers/whattpad.py @@ -0,0 +1,113 @@ +# !/usr/bin/python +# -*- coding: cp1252 -*- +# +################################################################################## +# +# Copyright 2018 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com) +# +# This program is part of OSRFramework. You can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +################################################################################## + +__author__ = "i3visio <contacto@i3visio.com>" +__version__ = "1.0" + +import argparse +import json +import re +import sys +import urllib2 + +import osrframework.utils.browser as browser +from osrframework.utils.platforms import Platform + +class Whatpadd(Platform): + """ + A <Platform> object for Cryptocompare. + """ + def __init__(self): + """ + Constructor... + """ + self.platformName = "whattpad" + self.tags = ["blog"] + + ######################## + # Defining valid modes # + ######################## + self.isValidMode = {} + self.isValidMode["phonefy"] = False + self.isValidMode["usufy"] = True + self.isValidMode["searchfy"] = False + + ###################################### + # Search URL for the different modes # + ###################################### + # Strings with the URL for each and every mode + self.url = {} + #self.url["phonefy"] = "http://anyurl.com//phone/" + "<phonefy>" + self.url["usufy"] = "https://www.wattpad.com/user/<usufy>" + #self.url["searchfy"] = "http://anyurl.com/search/" + "<searchfy>" + + ###################################### + # Whether the user needs credentials # + ###################################### + self.needsCredentials = {} + #self.needsCredentials["phonefy"] = False + self.needsCredentials["usufy"] = False + #self.needsCredentials["searchfy"] = False + + ################# + # Valid queries # + ################# + # Strings that will imply that the query number is not appearing + self.validQuery = {} + # The regular expression '.+' will match any query + #self.validQuery["phonefy"] = ".*" + self.validQuery["usufy"] = ".+" + #self.validQuery["searchfy"] = ".*" + + ################### + # Not_found clues # + ################### + # Strings that will imply that the query number is not appearing + self.notFoundText = {} + #self.notFoundText["phonefy"] = [] + self.notFoundText["usufy"] = ["<title>User not found - Wattpad"] + #self.notFoundText["searchfy"] = [] + + ######################### + # Fields to be searched # + ######################### + self.fieldsRegExp = {} + + # Definition of regular expressions to be searched in phonefy mode + #self.fieldsRegExp["phonefy"] = {} + # Example of fields: + #self.fieldsRegExp["phonefy"]["i3visio.location"] = "" + + # Definition of regular expressions to be searched in usufy mode + self.fieldsRegExp["usufy"] = {} + # Example of fields: + #self.fieldsRegExp["usufy"]["i3visio.location"] = "" + # Definition of regular expressions to be searched in searchfy mode + #self.fieldsRegExp["searchfy"] = {} + # Example of fields: + #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" + + ################ + # Fields found # + ################ + # This attribute will be feeded when running the program. + self.foundFields = {} diff --git a/osrframework/wrappers/xtelefonos.py b/osrframework/wrappers/xtelefonos.py new file mode 100644 index 0000000..6d760a6 --- /dev/null +++ b/osrframework/wrappers/xtelefonos.py @@ -0,0 +1,108 @@ +# !/usr/bin/python +# -*- coding: utf-8 -*- +# +################################################################################## +# +# Copyright 2016 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com) +# +# This program is part of OSRFramework. You can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################## + +import argparse +import json +import re +import sys +import urllib2 + +import osrframework.utils.browser as browser +from osrframework.utils.platforms import Platform + +class Xtelefono(Platform): + """ object for Xtelefono. + """ + def __init__(self): + """Consstructor... + """ + self.platformName = "Xtelefonos" + self.tags = ["phone"] + + ######################## + # Defining valid modes # + ######################## + self.isValidMode = {} + self.isValidMode["phonefy"] = True + self.isValidMode["usufy"] = False + self.isValidMode["searchfy"] = False + + ###################################### + # Search URL for the different modes # + ###################################### + self.url = {} + self.url["phonefy"] = "http://www.xtelefono.es/search/?q=" + "" + #self.url["usufy"] = "http://anyurl.com/user/" + "" + #self.url["searchfy"] = "http://anyurl.com/search/" + "" + + ###################################### + # Whether the user needs credentials # + ###################################### + self.needsCredentials = {} + self.needsCredentials["phonefy"] = False + self.needsCredentials["usufy"] = False + self.needsCredentials["searchfy"] = False + + ################# + # Valid queries # + ################# + # Strings that will imply that the query number is not appearing + self.validQuery = {} + # The regular expression '.+' will match any query. + self.validQuery["phonefy"] = ".+" + self.validQuery["usufy"] = ".+" + self.validQuery["searchfy"] = ".+" + + ################### + # Not_found clues # + ################### + # Strings that will imply that the phone number is not appearing + self.notFoundText = {} + self.notFoundText["phonefy"] = [" Número desconocido"] + #self.notFoundText["usufy"] = [] + #self.notFoundText["searchfy"] = [] + + ######################### + # Fields to be searched # + ######################### + self.fieldsRegExp = {} + # Definition of regular expressions to be searched in phonefy mode + self.fieldsRegExp["phonefy"] = {} + #self.fieldsRegExp["phonefy"]["i3visio.location.province"] = "(.*)," + #self.fieldsRegExp["phonefy"]["i3visio.location.country"] = "class='country_located' alt='([a-zA-Zñ]*)'" + self.fieldsRegExp["phonefy"]["i3visio.text"] = '

(.*)

' + + # Definition of regular expressions to be searched in usufy mode + #self.fieldsRegExp["usufy"] = {} + # Example of fields: + #self.fieldsRegExp["usufy"]["i3visio.location"] = "" + + # Definition of regular expressions to be searched in searchfy mode + #self.fieldsRegExp["searchfy"] = {} + # Example of fields: + #self.fieldsRegExp["searchfy"]["i3visio.location"] = "" + + ################ + # Fields found # + ################ + # This attribute will be feeded when running the program. + self.foundFields = {} diff --git a/osrframework.egg-info/PKG-INFO b/osrframework.egg-info/PKG-INFO index bad9a0f..c1ccfe4 100644 --- a/osrframework.egg-info/PKG-INFO +++ b/osrframework.egg-info/PKG-INFO @@ -1,18 +1,17 @@ Metadata-Version: 1.1 Name: osrframework -Version: 0.18.0 +Version: 0.18.8 Summary: OSRFramework - A set of GPLv3+ OSINT tools developed by i3visio analysts for online research. Home-page: http://github.com/i3visio/osrframework Author: Felix Brezo and Yaiza Rubio Author-email: contacto@i3visio.com License: COPYING -Description-Content-Type: UNKNOWN Description: OSRFramework ============ OSRFramework: Open Sources Research Framework - Copyright (C) 2014-2017 F. Brezo and Y. Rubio, i3visio + Copyright (C) 2014-2018 F. Brezo and Y. Rubio, i3visio [![Version in PyPI](https://img.shields.io/pypi/v/osrframework.svg)]() [![License](https://img.shields.io/badge/license-GNU%20Affero%20General%20Public%20License%20Version%203%20or%20Later-blue.svg)]() @@ -55,11 +54,11 @@ Fast way to do it on any system for a user with administration privileges: ``` - pip install osrframework + pip2 install osrframework ``` You can upgrade to the latest release of the framework with: ``` - pip install osrframework --upgrade + pip2 install osrframework --upgrade ``` This will manage all the dependencies for you and install the latest version of the framework. @@ -79,9 +78,10 @@ that you can open a terminal anywhere and typing the name of the program (seems to be an improvement from previous installations...). Examples: ``` - usufy.py -n i3visio febrezo yrubiosec -p twitter facebook - searchfy.py -q "i3visio" - mailfy.py -n i3visio + osrf --help + usufy -n i3visio febrezo yrubiosec -p twitter facebook + searchfy -q "i3visio" + mailfy -n i3visio ``` Type -h or --help to get more information about which are the parameters of each diff --git a/osrframework.egg-info/SOURCES.txt b/osrframework.egg-info/SOURCES.txt index a24cda6..47a5f62 100644 --- a/osrframework.egg-info/SOURCES.txt +++ b/osrframework.egg-info/SOURCES.txt @@ -22,9 +22,11 @@ doc/USUFY.md osrframework/__init__.py osrframework/alias_generator.py +osrframework/checkfy.py osrframework/domainfy.py osrframework/entify.py osrframework/enumeration.py +osrframework/launcher.py osrframework/mailfy.py osrframework/phonefy.py osrframework/searchfy.py @@ -40,6 +42,7 @@ osrframework/domains/__init__.py osrframework/domains/brand_tld.py osrframework/domains/cctld.py +osrframework/domains/email_providers.py osrframework/domains/generic_tld.py osrframework/domains/geographic_tld.py osrframework/domains/gtld.py @@ -134,7 +137,6 @@ osrframework/wrappers/bitcointalk.py osrframework/wrappers/bitly.py osrframework/wrappers/bitrated.py -osrframework/wrappers/blackplanet.py osrframework/wrappers/blip.py osrframework/wrappers/blogmarks.py osrframework/wrappers/blogspot.py @@ -142,14 +144,12 @@ osrframework/wrappers/boonex.py osrframework/wrappers/bordom.py osrframework/wrappers/boxedup.py -osrframework/wrappers/breakcom.py osrframework/wrappers/bubok.py osrframework/wrappers/bucketlistly.py osrframework/wrappers/buddypic.py osrframework/wrappers/burbuja.py osrframework/wrappers/burdastyle.py osrframework/wrappers/buzznet.py -osrframework/wrappers/cafemom.py osrframework/wrappers/canva.py osrframework/wrappers/carbonmade.py osrframework/wrappers/cardinghispano.py @@ -173,6 +173,7 @@ osrframework/wrappers/couchsurfing.py osrframework/wrappers/crokes.py osrframework/wrappers/crowdin.py +osrframework/wrappers/cryptocompare.py osrframework/wrappers/cryptofresh.py osrframework/wrappers/dailymotion.py osrframework/wrappers/datpiff.py @@ -205,7 +206,6 @@ osrframework/wrappers/fiverr.py osrframework/wrappers/flickr.py osrframework/wrappers/flixster.py -osrframework/wrappers/foodspotting.py osrframework/wrappers/forobtc.py osrframework/wrappers/forocoches.py osrframework/wrappers/foroptc.py @@ -220,9 +220,7 @@ osrframework/wrappers/gamesheep.py osrframework/wrappers/gametracker.py osrframework/wrappers/gapyear.py -osrframework/wrappers/gather.py osrframework/wrappers/geeksphone.py -osrframework/wrappers/genspot.py osrframework/wrappers/getlocalization.py osrframework/wrappers/getsatisfaction.py osrframework/wrappers/github.py @@ -244,23 +242,20 @@ osrframework/wrappers/instagram.py osrframework/wrappers/instructables.py osrframework/wrappers/intfiction.py -osrframework/wrappers/islamicawakening.py osrframework/wrappers/issuu.py osrframework/wrappers/ivoox.py osrframework/wrappers/jamiiforums.py osrframework/wrappers/kali.py osrframework/wrappers/kanogames.py osrframework/wrappers/keybase.py +osrframework/wrappers/khanacademy.py osrframework/wrappers/kickstarter.py osrframework/wrappers/kimatel.py osrframework/wrappers/kinja.py -osrframework/wrappers/kiwi.py -osrframework/wrappers/klout.py osrframework/wrappers/kongregate.py osrframework/wrappers/kupika.py osrframework/wrappers/lastfm.py osrframework/wrappers/leakforums.py -osrframework/wrappers/linkedin.py osrframework/wrappers/listaspam.py osrframework/wrappers/livejournal.py osrframework/wrappers/looki.py @@ -285,7 +280,6 @@ osrframework/wrappers/myfitnesspal.py osrframework/wrappers/myspace.py osrframework/wrappers/nairaland.py -osrframework/wrappers/netlog.py osrframework/wrappers/netvibes.py osrframework/wrappers/newgrounds.py osrframework/wrappers/notablug.py @@ -300,7 +294,6 @@ osrframework/wrappers/pastebin.py osrframework/wrappers/patreon.py osrframework/wrappers/pearltrees.py -osrframework/wrappers/peerbackers.py osrframework/wrappers/periscope.py osrframework/wrappers/pgpmit.py osrframework/wrappers/phishtank.py @@ -340,7 +333,6 @@ osrframework/wrappers/smugmug.py osrframework/wrappers/soundcloud.py osrframework/wrappers/soup.py -osrframework/wrappers/sourceforge.py osrframework/wrappers/spaniards.py osrframework/wrappers/spoj.py osrframework/wrappers/spotify.py @@ -354,6 +346,7 @@ osrframework/wrappers/teamtreehouse.py osrframework/wrappers/techcrunch.py osrframework/wrappers/technorati.py +osrframework/wrappers/telegram.py osrframework/wrappers/thehoodup.py osrframework/wrappers/thesims.py osrframework/wrappers/thestudentroom.py @@ -364,15 +357,13 @@ osrframework/wrappers/trakt.py osrframework/wrappers/translate_hola.py osrframework/wrappers/trulia.py -osrframework/wrappers/tumblr.py -osrframework/wrappers/tune.py -osrframework/wrappers/tuporno.py osrframework/wrappers/twicsy.py osrframework/wrappers/twitch.py osrframework/wrappers/twitter.py osrframework/wrappers/twoplustwo.py osrframework/wrappers/typepad.py osrframework/wrappers/unioncarder.py +osrframework/wrappers/unsplash.py osrframework/wrappers/ustream.py osrframework/wrappers/v7n.py osrframework/wrappers/venmo.py @@ -384,6 +375,7 @@ osrframework/wrappers/vk.py osrframework/wrappers/warriorforum.py osrframework/wrappers/webtv.py +osrframework/wrappers/whattpad.py osrframework/wrappers/wikia.py osrframework/wrappers/wikipediaar.py osrframework/wrappers/wikipediaca.py @@ -399,6 +391,7 @@ osrframework/wrappers/wykop.py osrframework/wrappers/xanga.py osrframework/wrappers/xing.py +osrframework/wrappers/xtelefonos.py osrframework/wrappers/xtube.py osrframework/wrappers/younow.py osrframework/wrappers/youtube.py diff --git a/osrframework.egg-info/entry_points.txt b/osrframework.egg-info/entry_points.txt index dd22fdf..918dde2 100644 --- a/osrframework.egg-info/entry_points.txt +++ b/osrframework.egg-info/entry_points.txt @@ -1,6 +1,8 @@ [console_scripts] alias_generator = osrframework.alias_generator:main alias_generator.py = osrframework.alias_generator:main +checkfy = osrframework.checkfy:main +checkfy.py = osrframework.checkfy:main domainfy = osrframework.domainfy:main domainfy.py = osrframework.domainfy:main entify = osrframework.entify:main @@ -9,6 +11,8 @@ enumerate-profiles.py = osrframework.enumeration:main mailfy = osrframework.mailfy:main mailfy.py = osrframework.mailfy:main +osrf = osrframework.launcher:main +osrframework-cli = osrframework.launcher:main phonefy = osrframework.phonefy:main phonefy.py = osrframework.phonefy:main searchfy = osrframework.searchfy:main diff --git a/osrframework.egg-info/requires.txt b/osrframework.egg-info/requires.txt index 3234005..61fd73e 100644 --- a/osrframework.egg-info/requires.txt +++ b/osrframework.egg-info/requires.txt @@ -21,3 +21,5 @@ flask pyyaml colorama +configparser +cfscrape diff --git a/setup.py b/setup.py index 568d6d6..9d1b08b 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,4 @@ -# !/usr/bin/python2 +# !/usr/bin/python # -*- coding: utf-8 -*- # ################################################################################## @@ -27,69 +27,6 @@ import shutil import site -# Checking if obsolete versions are installed in the machine -IS_VIRTUAL_ENV = False - -# Get packagesPaths depending on whether the user launched it with sudo or not -if sys.platform == 'win32': - # This will throw two folders, but we need the first one only. Typically: - # ['c:\\Users\\\\AppData\\Roaming\\Python\\Python27\\site-packages'] - packagesPaths = site.getusersitepackages()[0] - print "[*] The installation is going to be run as superuser." -else: - # We need this verification because Windows does not have a wrapper ofr os.geteuid() - if not os.geteuid() == 0: - try: - packagesPaths = site.getusersitepackages() - # TODO: Check whether the packagesPaths is in the PATH, if not, add it - print "[*] The installation has not been launched as superuser." - user_bin_path = site.USER_BASE + "/bin" - print "[*] We will verify is the '" + user_bin_path + "' folder is in the path so as to make the utils available anywhere in the system." - bin_path = os.popen("echo $PATH").read() - if user_bin_path in bin_path: - print "[*] Great. '" + user_bin_path + "' is in the path. No further actions needed." - else: - print "[*] We are manually adding the '" + user_bin_path + "' folder to the ~/.bashrc file." - # Building the commands to be added to .bashrc - new_lines = """ - # Added by OSRFramework - # --------------------- - # Check this issue in Github for additional information about why these lines where added: - - export PY_USER_BIN= """ + user_bin_path + """ - export PATH=$PATH:$PY_USER_BIN - """ - - command = "echo '''" + new_lines + "''' >> ~/.bashrc" - print "[*] As we want to be transparent, the command that is being run is the following:\n" + command - a = os.popen(command).read() - except: - IS_VIRTUAL_ENV = True - else: - # This will throw two folders, but we need the first one only: - # ['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages'] - packagesPaths = site.getsitepackages()[0] - print "[*] The installation is going to be run as superuser." - -if not IS_VIRTUAL_ENV: - osrframeworkSystemPath = os.path.join(packagesPaths, "osrframework") - - print "[*] The chosen installation path is: " + osrframeworkSystemPath - - # Removing old installations first... - if os.path.isdir(osrframeworkSystemPath): - print "[!] Found an old installation at: " + osrframeworkSystemPath - try: - shutil.rmtree(osrframeworkSystemPath) - print "[*] Successfully removed the old installation. Installation will resume now to upgrade it..." - except Exception as e: - print str(e) - print "[E] The installed version of OSRFramework cannot be removed. Try to remove it manually in your python installation under 'local/lib/python2.7/dist-packages/'." - print sys.exit() - else: - print "[*] No OSRFramework installation found in the system." -else: - print "[*] OSRFramework seems to be installed using `virtualenv`." HERE = os.path.abspath(os.path.dirname(__file__)) @@ -119,7 +56,7 @@ # Creating the application paths paths = configuration.getConfigPath() -print "[*] Launching the installation of the osrframework module..." +print("[*] Launching the installation of the osrframework module...") # Launching the setup setup( name="osrframework", @@ -140,6 +77,8 @@ 'entify.py = osrframework.entify:main', 'enumerate-profiles = osrframework.enumeration:main', 'enumerate-profiles.py = osrframework.enumeration:main', + 'checkfy = osrframework.checkfy:main', + 'checkfy.py = osrframework.checkfy:main', 'mailfy = osrframework.mailfy:main', 'mailfy.py = osrframework.mailfy:main', 'phonefy = osrframework.phonefy:main', @@ -148,6 +87,8 @@ 'searchfy.py = osrframework.searchfy:main', 'usufy = osrframework.usufy:main', 'usufy.py = osrframework.usufy:main', + 'osrf = osrframework.launcher:main', + 'osrframework-cli = osrframework.launcher:main', ], }, classifiers=[ @@ -199,21 +140,23 @@ "python-whois", "flask", "pyyaml", - "colorama" + "colorama", + "configparser", + "cfscrape" ], ) ############################ ### Creating other files ### ############################ -print "[*] Changing permissions of the user folders..." +print("[*] Changing permissions of the user folders...") try: configuration.changePermissionsRecursively(paths["appPath"], int(os.getenv('SUDO_UID')), int(os.getenv('SUDO_GID'))) except: # Something happened with the permissions... We omit this. pass -print "[*] Copying relevant files..." +print("[*] Copying relevant files...") files_to_copy= { paths["appPath"] : [ os.path.join("config", "browser.cfg"), @@ -239,6 +182,7 @@ for sourceFile in files_to_copy[destiny]: fileToMove = os.path.join(HERE,sourceFile) + cmd = "" # Choosing the command depending on the SO if sys.platform == 'win32': if os.path.isdir(fileToMove): @@ -250,5 +194,4 @@ cmd = "cp -r -- \"" + fileToMove + "\" \"" + destiny + "\"" else: cmd = "sudo cp -r -- \"" + fileToMove + "\" \"" + destiny + "\"" - #print cmd output = os.popen(cmd).read()