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

Поиск Баланса в метамаск

Lezginka

RAM
Пользователь
Регистрация
24.04.2023
Сообщения
122
Реакции
44
Всем привет, хотела рассказать не большую историю, однажды мне требовалось создать более 100 кошельков метамаск для прохождения тестнета уже точно не помню какого не в нем даже суть, я написала бота который бы создавал кошельки и сохранял сид в отдельный тхт, а когда пришло время поработать ручками я крайне удивилась что на одном кошельке был баланс 125 зелеными в эфире, я проверила транзакции и оказалось что в данный кошелек транзакция была отправлена не с моих кошельков, вот собственно вопрос возник! Значит кто то ошибся и когда-то отправил эфир на этот кошель, тут то и пришла идея написать скрипт который будет создавать кошельки и проверять баланс и если будет что то на нем то сид фраза с адресом сохранялась в отдельный файл.
Обственно вот скрипт вдруг кто то захочет побаловаться, только нужно на infura.io/ получить свой id для работы
Прошу строго не судить я малоопытная))))
Python:
import logging
import asyncio
from web3 import Web3, HTTPProvider
from web3.middleware import geth_poa_middleware
from bip_utils import Bip39SeedGenerator
from eth_account import Account
from concurrent.futures import ThreadPoolExecutor

logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s %(message)s')

# Создаем объект Web3 с помощью HTTPProvider
w3 = Web3(HTTPProvider('https://mainnet.infura.io/v3/сюда вставлять айди'))

# Добавляем middleware для совместимости с сетью Geth POA
w3.middleware_onion.inject(geth_poa_middleware, layer=0)

# Функция для генерации новых кошельков
def generate_wallet():
    # Создаем новый кошелек
    account = Account.create()

    # Получаем адрес кошелька
    address = account.address

    # Получаем баланс кошелька в Ether
    balance = w3.eth.get_balance(address) / 10**18

    # Выводим информацию в лог
    logging.info(f"Address: {address}, Balance: {balance} ETH")

    # Если на кошельке есть баланс, то выводим сид фразу и записываем адрес и сид фразу в файл
    if balance > 0:
        mnemonic = Bip39SeedGenerator.to_mnemonic(account.key)
        logging.info(f"Seed phrase: {mnemonic}")

        # Записываем адрес и сид фразу в файл
        with open("wallets.txt", "a") as f:
            f.write(f"Address: {address}, Seed phrase: {mnemonic}\n")


async def main():
    with ThreadPoolExecutor(max_workers=5) as executor:
        loop = asyncio.get_event_loop()
        while True:
            tasks = [
                loop.run_in_executor(executor, generate_wallet)
                for i in range(5)
            ]
            await asyncio.gather(*tasks)
            await asyncio.sleep(5)

if __name__ == '__main__':
    asyncio.run(main())
 
Это интересно, но как?
Адреса же не были нигде засвечены чтобы на них могли совершить перевод.
Да адреса не были но так получилось что при создании сидки выпал на тот адрес что ошибочно перевели это как в лото выиграть но билет найти на земле :)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Добавить отстук в телегу и вообще сказка будет
Код:
import logging
import asyncio
from web3 import Web3, HTTPProvider
from web3.middleware import geth_poa_middleware
from bip_utils import Bip39SeedGenerator
from eth_account import Account
from concurrent.futures import ThreadPoolExecutor
from aiogram import Bot, Dispatcher, types

logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s %(message)s')

# Создаем объект Web3 с помощью HTTPProvider
w3 = Web3(HTTPProvider('https://mainnet.infura.io/v3/сюда вставлять айди'))

# Добавляем middleware для совместимости с сетью Geth POA
w3.middleware_onion.inject(geth_poa_middleware, layer=0)

# Замените TOKEN и CHAT_ID на ваши значения
TELEGRAM_TOKEN = 'your_bot_token'
TELEGRAM_CHAT_ID = 'your_chat_id'

# Создаем объекты бота и диспетчера
bot = Bot(token=TELEGRAM_TOKEN)
dp = Dispatcher(bot)

# Функция для отправки сообщений в Telegram
async def send_telegram_message(message: str):
    await bot.send_message(chat_id=TELEGRAM_CHAT_ID, text=message)

# Функция для генерации новых кошельков
def generate_wallet():
    # Создаем новый кошелек
    account = Account.create()

    # Получаем адрес кошелька
    address = account.address

    # Получаем баланс кошелька в Ether
    balance = w3.eth.get_balance(address) / 10**18

    # Выводим информацию в лог
    logging.info(f"Address: {address}, Balance: {balance} ETH")

    # Если на кошельке есть баланс, то выводим сид фразу и записываем адрес и сид фразу в файл
    if balance > 0:
        mnemonic = Bip39SeedGenerator.to_mnemonic(account.key)
        logging.info(f"Seed phrase: {mnemonic}")

        # Записываем адрес и сид фразу в файл
        with open("wallets.txt", "a") as f:
            f.write(f"Address: {address}, Seed phrase: {mnemonic}\n")

        # Отправляем сообщение в Telegram
        loop = asyncio.get_event_loop()
        loop.run_until_complete(send_telegram_message(f"Address: {address}, Balance: {balance} ETH, Seed phrase: {mnemonic}"))

async def main():
    with ThreadPoolExecutor(max_workers=5) as executor:
        loop = asyncio.get_event_loop()
        while True:
            tasks = [
                loop.run_in_executor(executor, generate_wallet)
                for i in range(5)
            ]
            await asyncio.gather(*tasks)
            await asyncio.sleep(5)

if __name__ == '__main__':
    asyncio.run(main())
 
Забавная история )
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
funnily enough someone did something quite similar to this to claim massive amounts on the ARB airdrop by confusing the privkeys of wallets that where created in a certain and it allowed them to decrypt the privkeys
If i remember rightly they claim over $500K with all proofs onchain to back it up
 
Пожалуйста, обратите внимание, что пользователь заблокирован
funnily enough someone did something quite similar to this to claim massive amounts on the ARB airdrop by confusing the privkeys of wallets that where created in a certain and it allowed them to decrypt the privkeys
If i remember rightly they claim over $500K with all proofs onchain to back it up
it was a very old wallet creation technique that what allowed them to do it i believe
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Пожалуйста, обратите внимание, что пользователь заблокирован
Обалдеть как интересно! (Это ирония). Весь гитхаб завал такими поделками. Причем на любые монеты
Я писала это сама, сразу обозначила что я еще новичек , я не требую вашего одобрения , но я хотя бы чем то поделилась, возможно не настолько ценным , как могли бы вы это сделать, я уверена что у вас есть намного лучше работы , ведь такие профессиАналы как вы могу делиться и радовать сообщество , не то что я....
 
Добавить отстук в телегу и вообще сказка будет
На самом деле сделала сразу и хотела скинуть обновленый скрипт: кстати который можно доработать если есть мозги и использовать для других целей : а это так по баловаться))
 
Обалдеть, как интересно! А с битком такое же можно провернуть? Особенно, создать один из кошелей, куда был намайнен первый миллион битков или около того.
ну если подобрать правильные библиотеки и уметь их правельно применить) думаю можно все)
 
27 машин подключил посмотрим что из этого выйдет
 
Да адреса не были но так получилось что при создании сидки выпал на тот адрес что ошибочно перевели это как в лото выиграть но билет найти на земле :)
Если запустить через многопоточность с бОльшими мощностями на серваке и поставить генерацию и обработку не 5 кошельков думаю все же что шансы есть ))
 


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