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 .
-#
-##################################################################################
-
-__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 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/" + ""
- self.url["usufy"] = "http://www.break.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 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 = ""
+__author__ = "Felix Brezo and Yaiza Rubio "
__version__ = "1.0"
import argparse
@@ -41,7 +41,7 @@
Constructor...
"""
self.platformName = "Goblinrefuge"
- self.tags = ["video", "audio", "image"]
+ self.tags = ["imagery"]
########################
# Defining valid modes #
diff --git a/osrframework/wrappers/houzz.py b/osrframework/wrappers/houzz.py
index 3e3fafb..c6250bc 100644
--- a/osrframework/wrappers/houzz.py
+++ b/osrframework/wrappers/houzz.py
@@ -3,7 +3,7 @@
#
##################################################################################
#
-# Copyright 2016-2017 Félix Brezo and Yaiza Rubio (i3visio, contacto@i3visio.com)
+# Copyright 2016-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
@@ -20,8 +20,8 @@
#
##################################################################################
-__author__ = "John Doe "
-__version__ = "1.0"
+__author__ = "i3visio "
+__version__ = "1.1"
import argparse
import json
@@ -57,7 +57,7 @@
# Strings with the URL for each and every mode
self.url = {}
#self.url["phonefy"] = "http://anyurl.com//phone/" + ""
- 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"] = [""]
+ 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 .
+#
+##################################################################################
+
+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 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/" + ""
+ self.url["usufy"] = "https://unsplash.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"] = ["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 .
+#
+##################################################################################
+
+__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 Whatpadd(Platform):
+ """
+ A 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/" + ""
+ self.url["usufy"] = "https://www.wattpad.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 query number is not appearing
+ self.notFoundText = {}
+ #self.notFoundText["phonefy"] = []
+ self.notFoundText["usufy"] = ["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"] = '