Показать сообщение отдельно
Непрочитано 24.11.2021, 16:49   #3
MoneyMaker
Member
 
Регистрация: 08.01.2021
Сообщений: 52
По умолчанию

ЧАСТЬ 3 ПОДГОТОВКА И ЗАПУСК

Первое что нам понадобиться - это свежий список всех адресов сети содержащих положительный баланс.
Измучившись и перепробовав десяток парсеров блокчейна (не один толком не работал),
был найден ресурс одного энтузиаста который периодически выкладывает http://addresses.loyce.club
два нужных нам файла - свежие отсортированные адреса и адреса с указанием баланса (в сатоши). Качаем оба.
Первый нужен для фильтра блума, второй чтоб без использования публичных сервисов узнать баланс нужного кошелька.

Для создания фильтра сперва нужно перекатать скаченный тхт файл в формат HEX160.
Я делал в винде, так и буду объяснять, уверен что то же самое можно и в убунту.
Скачиваем и устанавливаем в винду Perl (на нем написан скрипт), затем создаем текстовый файл с произвольным именем, копируем код от сюда - http://lenschulwitz.com/b58/base58perl.txt. вставляем в текстовый файл .

Затем часть кода (в самом конце)....
----------------------------------------------------------
#Sample test taken from https://en.bitcoin.it/wiki/Technical...coin_addresses.
my $base58_encoded_address = "16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM";
print "\nRunning tests for bitcoin address $base58_encoded_address\n";
print "Bitcoin address is valid. Address type: '", check_bitcoin_address($base58_encoded_address), "'.\n";
my $binary_address = decodebase58tohex($base58_encoded_address);
print "Binary hexadecimal representation is: $binary_address\n";
my $reencoded_base58 = encodebase58fromhex($binary_address);
print "Re-encoded back to Base58 is: $reencoded_base58\n\n";
-----------------------------------------------------------
Меняем на...
-----------------------------------------------------------
my $fileSrc = 'base58.txt';
open my $fhSrc, $fileSrc or die "Could not open $fileSrc: $!";

my $fileDest = 'hex.txt';
open(my $fhDest, '>>', $fileDest) or die "Could not open file $fileDest: $!";

while( my $base58_encoded_address = <$fhSrc>) {
my $binary_address = decodebase58tohex($base58_encoded_address);
say $fhDest $binary_address;
}

close $fhSrc;
close $fhDest;
-----------------------------------------------------------

Сохраняем файл, меняем расширение на "pl", меняем название файла с адресами на base58.txt, складываем в один каталог, запускаем скрипт и через пару минут получаем в том же каталоге файл hex.txt

Дальше закидываем файл hex.txt в виртуалку, в каталог brainflayer в домашней папке.

Затем в терминале убунту вводим

cd brainflayer/
./hex2blf hex.txt btcaddress.blf

В каталоге программы появится файл btcaddress.blf - фильтр Блума. Подробно что это за штука можно прочитать на википедии.
Если коротко - это такой фильтр который помогает программе не сравнивать каждый из миллиардов сгенерированных адресов, с 33 млн адресов с балансом (что сократило бы скорость процесса до нуля в секунду) а сразу говорить принадлежит ли сгенерированный адрес множеству из адресов с балансом. Важной особенностью которую про этот фильтр нужно знать - является недостаток в виде небольшой вероятности ложноположительного срабатывания. (то есть фильтр скажет что адрес множеству принадлежит - а он на самом деле нет)
Главное в его работе - отсутствие ложноотрицательных срабатываний (это когда сгенерированный адрес отбрасывается а в действительности множеству он принадлежит).

Еще про фильтр можно добавить то что чем больше в него загружать адресов то вероятность ложноположительного срабатывания ростет.
К примеру в качестве эксперимента я загружал в него список всех адресов когда-либо имевших положительный баланс (250 млн) - ложное срабатывание было в 100% словарей)))))

У нас все готово к работе, загружаем в каталог проги вордлист и запускаем перебор!

./brainflayer -v -b btcaddress.blf -i ваш_файл_паролей.txt

либо можно перенаправлять в brainflayer вывод одного из генераторов паролей: hashcat, crunch и т.п. (в два раза снижается скорость)

hashcat -a 0 pass.dict -r rule1.rule --stdout | ./brainflayer -v -b btcaddress.blf

ВАЖНО!!! (сэкономлю Вам пару сотен человеко-часов)
Если Ваш файл с паролями создан в винде то перед запуском в обязательном порядке нужно применить к файлу следующую команду

cat ваш_файл_паролей.txt | sed "s/\r$//" > ваш_файл_паролей_2.txt

Она удалит (если он есть) символ переноса строки который в винде не отображается а линукс воспринимает как отдельный символ и соответственно "кандидат" не подходит.

В качестве первоначальных тестов строго рекомендую собрать маленькие "самодельные" словари и списки адресов заранее сделанных из этих словарей - чтоб увидеть как программа их находит.
Создать можно с помощью все того же https://www.bitaddress.org.
MoneyMaker вне форума   Ответить с цитированием