Найти в Дзене
CRYPTO DEEP TECH

DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC

В этой статье мы раскроем обширную тему: “Dust Attack” известная как: "Dusting Attack" или "Crypto Dust". Возможно каждый пользователь криптовалют или держатель большой суммы монет BTC, ETH замещал на своем криптовалютном кошельке поступление незначительно малой суммы монет в satoshi, это поступление маскируется под видом "Donate", но на самом деле это целая математический отточенная система по отъёму всех накопленных монет кошелька на балансе. Целью раскрытие системы и всех подводных камней “Dust Attack”, нас подвигла и натолкнуло статья опубликованная 8 января 2024 г. на сайте глобальной криптоэкономики CoinDesk Пока все гадают, кто же именно отправил 27 BTC на популярный Биткоин Кошелек [Satoshi Nakamoto] мы рассмотрим две различные примеры пылевой атаки, чтобы пролить свет на все тонкости этой манипуляции и какие риски могут ждать пользователей и держателей популярной криптовалюты Биткоин. Рассмотрим ещё одну статью и возьмем для примера TXID из которого было совершено очень больш
Оглавление

В этой статье мы раскроем обширную тему: “Dust Attack” известная как: "Dusting Attack" или "Crypto Dust". Возможно каждый пользователь криптовалют или держатель большой суммы монет BTC, ETH замещал на своем криптовалютном кошельке поступление незначительно малой суммы монет в satoshi, это поступление маскируется под видом "Donate", но на самом деле это целая математический отточенная система по отъёму всех накопленных монет кошелька на балансе. Целью раскрытие системы и всех подводных камней “Dust Attack”, нас подвигла и натолкнуло статья опубликованная 8 января 2024 г. на сайте глобальной криптоэкономики CoinDesk

https://www.coindesk.com/markets/2024/01/08/mysterious-12m-bitcoin-transaction-to-satoshi-nakamoto-sparks-speculations/
https://www.coindesk.com/markets/2024/01/08/mysterious-12m-bitcoin-transaction-to-satoshi-nakamoto-sparks-speculations/
pic.twitter.com/w34kjnAHPJ
pic.twitter.com/w34kjnAHPJ
d7db4f96a4059c8906b953677ce533493d7b9da0f854a21b99f5772910dd0a31
d7db4f96a4059c8906b953677ce533493d7b9da0f854a21b99f5772910dd0a31
-4
Пока все гадают, кто же именно отправил 27 BTC на популярный Биткоин Кошелек [Satoshi Nakamoto] мы рассмотрим две различные примеры пылевой атаки, чтобы пролить свет на все тонкости этой манипуляции и какие риски могут ждать пользователей и держателей популярной криптовалюты Биткоин.

Рассмотрим ещё одну статью и возьмем для примера TXID из которого было совершено очень большое количество пылевой атаки.

https://dust-attack.blogspot.com
https://dust-attack.blogspot.com
1d6580dcd979951bd600252b741c22a3ea8e605e43168f8452c68915c3ea2bf3
1d6580dcd979951bd600252b741c22a3ea8e605e43168f8452c68915c3ea2bf3
Согласно, статье в этой транзакции было совершено наибольшее количество краж монет BTC с использованием системы пылевой атаки.

Обратим внимание на два Биткоин Адреса которые в период [июль-август 2022] совершили успешные пылевые атаки на общую сумму: 10000 BTC

Пример №1
https://www.blockchain.com/explorer/addresses/btc/14RKFqH45xYPMpW4KQ28RB6XtrZ8XpEM5i
https://www.blockchain.com/explorer/addresses/btc/14RKFqH45xYPMpW4KQ28RB6XtrZ8XpEM5i
Пример №2
https://www.blockchain.com/explorer/addresses/btc/15n6boxiQj45oHcmDjtNMjh35sFWZX4PBt
https://www.blockchain.com/explorer/addresses/btc/15n6boxiQj45oHcmDjtNMjh35sFWZX4PBt

Для проведение пылевой атаки большую роль играет подтверждение изоморфизма майнерами, т.к. с 2022 по 2024 года многие криптовалютные сервисы и аппаратные кошельки активно борются с пылевой атакой.

На данный момент широкую популярность получил способ самостоятельно создавать пылевые транзакции на собственном холодном кошельке. Возьмем пример № 1 и перейдем в раздел “Create Dust Transaction”

Установим Python 3.12.1 на Windows 10

Link to gif content #01

Скачиваем исходный код устанавливаем get-pip.py , а также запускаем install.py для установки пакетов:

Link to gif content #02

Сгенерируем собственный холодный кошелек

Link to gif content #03

Пополняем баланс холодного кошелька: 1AK4LYE6PYwBmSYHQX3v2UsXXHTvCAsJeKБаланс и транзакция платежа
Баланс: 0.02786906 BTC или в единицах Биткоина: 2786906 satoshi
Баланс: 0.02786906 BTC или в единицах Биткоина: 2786906 satoshi
Сохраним транзакцию TXID хэш от платежа пополнение баланса для дальнейшего построение Дерево Меркла (Merkle Tree)
Дерево Меркла заполняется снизу вверх, где к каждому блоку данных применяется хеширование, а полученные значения записываются в листья дерева. Блоки, которые находятся уровнем выше, заполняются значением суммы хешем двух дочерних блоков. Этот процесс повторяется до того момента, пока не будет получено верхнее значение или Корень Меркла (Merkle Root). В блокчейне Bitcon используется хеш-функция SHA256. Другие блокчейны могут использовать другие принципы шифрования для создания Дерева Меркла.
Дерево Меркла заполняется снизу вверх, где к каждому блоку данных применяется хеширование, а полученные значения записываются в листья дерева. Блоки, которые находятся уровнем выше, заполняются значением суммы хешем двух дочерних блоков. Этот процесс повторяется до того момента, пока не будет получено верхнее значение или Корень Меркла (Merkle Root). В блокчейне Bitcon используется хеш-функция SHA256. Другие блокчейны могут использовать другие принципы шифрования для создания Дерева Меркла.

Хэш платежа от пополнение баланса

https://btc1.trezor.io/tx/0b253c2dd4331f78de3d9a14d5cacfe9b20c258ebedabc782f36ce2e50d193c5
https://btc1.trezor.io/tx/0b253c2dd4331f78de3d9a14d5cacfe9b20c258ebedabc782f36ce2e50d193c5
Скопируем TXID: 0b253c2dd4331f78de3d9a14d5cacfe9b20c258ebedabc782f36ce2e50d193c5 т.к. это хэш пополнение баланса холодного кошелька: 1AK4LYE6PYwBmSYHQX3v2UsXXHTvCAsJeK далее открываем исходный код Python скрипта createrawtransaction.py и в строке №7 меняем значение на свои данные.

dust_tx = bytes.fromhex("0b253c2dd4331f78de3d9a14d5cacfe9b20c258ebedabc782f36ce2e50d193c5")

Чтобы обезопасить свой новосозданный холодный кошелек: 1AK4LYE6PYwBmSYHQX3v2UsXXHTvCAsJeK
ОБЯЗАТЕЛЬНО отключаем интернет на своем ПК. Это необходимо для безопасности в раскрытие приватного ключа сторонними работающими приложениями на вашем ПК. Этот процесс займет несколько минут. Отключаем интернет при создании пылевой транзакции RawTX.
-12
-13
Как только вы убедились, что интернет отключен в строке №5 вставим Private Key WIF

pk = PrivateKey.parse("L1k********************************************MdrTj")

В строке №12 добавляем общую сумму баланса холодного кошелька. В нашем случае эта сумма составляет 2786906 satoshi

tx_in._value = 2786906

Прибыль от пылевой атаки.

Выбираем Биткоин Кошелек от которого в конечном итоге получаем прибыль в случае подтверждение майнерами изоморфизма. Так как мы рассматриваем пример №1 в нашем случае мы выбираем адрес Биткоин Кошелька: 14RKFqH45xYPMpW4KQ28RB6XtrZ8XpEM5i

https://www.blockchain.com/explorer/addresses/btc/14RKFqH45xYPMpW4KQ28RB6XtrZ8XpEM5i
https://www.blockchain.com/explorer/addresses/btc/14RKFqH45xYPMpW4KQ28RB6XtrZ8XpEM5i
В строке №9 нам необходимо указать Биткоин Адрес для пылевой атаки

send_dust = "14RKFqH45xYPMpW4KQ28RB6XtrZ8XpEM5i"

Сумма пыли будет составлять 555 satoshi, в строке №15 указываем эту сумму.

TxOut(555, Tx.get_address_data(send_dust)['script_pubkey'].serialize()),

Далее учитываем Fee (комиссия для майнеров), эта сумму будет составлять 226 satoshi

555 + 226 = 781 satoshi

Также нам необходимо учитывать возврат наших средств обратно на наш холодный кошелек: 1AK4LYE6PYwBmSYHQX3v2UsXXHTvCAsJeK т.к. мы выделили 781 satoshi для пылевой атаки, вычитаем эту сумму из общей суммы пополнение баланса холодного кошелька 2786906 satoshi

2786906 - 781 = 2786125 satoshi

В строке №16 указываем сумму возврат наших средств обратно на наш холодный кошелек: 1AK4LYE6PYwBmSYHQX3v2UsXXHTvCAsJeK

TxOut(2786125, Tx.get_address_data(pk.address())['script_pubkey'].serialize())

Запускаем наш скрипт createrawtransaction.py нажав клавишу «F5» или опцию: Run / Run Module F5
-15

Запуск скрипта: createrawtransaction.py

from io import BytesIO
from secp256k1 import *
from sighash import *

pk = PrivateKey.parse("L1k********************************************MdrTj")
pk.address()
dust_tx = bytes.fromhex("0b253c2dd4331f78de3d9a14d5cacfe9b20c258ebedabc782f36ce2e50d193c5")
dust_index = 0
send_dust = "14RKFqH45xYPMpW4KQ28RB6XtrZ8XpEM5i"
tx_in = TxIn(dust_tx, dust_index, b'', 0xffffffff)
tx_in._script_pubkey = Tx.get_address_data(pk.address())['script_pubkey']
tx_in._value = 2786906
tx_ins = [ tx_in ]
tx_outs = [
TxOut(555, Tx.get_address_data(send_dust)['script_pubkey'].serialize()),
TxOut(2786125, Tx.get_address_data(pk.address())['script_pubkey'].serialize())
]
tx = Tx(1, tx_ins, tx_outs, 0, testnet=True)
signature(tx, 0, pk)
tx.serialize().hex()

print("\n--------------------------------------\n")
print("My work Bitcoin Address: " + pk.address())
print("Address for Getting Rich: " + send_dust)
print("\n--------------------------------------\n")
print(tx_in._script_pubkey)
print(tx_in.script_sig)
print("\n--------------------------------------\n")
print("RawTX for performing isomorphism:")
print(tx.serialize().hex())
print("\n--------------------------------------\n")

Результат:

--------------------------------------

My work Bitcoin Address: 1AK4LYE6PYwBmSYHQX3v2UsXXHTvCAsJeK
Address for Getting Rich: 14RKFqH45xYPMpW4KQ28RB6XtrZ8XpEM5i

--------------------------------------

OP_DUP OP_HASH160 b'2581997c24562e316ffa3163e63d2db26442cc9a' OP_EQUALVERIFY OP_CHECKSIG
b'304402203b2c7941c858d201ac384029e88c9988f6baa433d061eacb765caa356d6e1a7e02203885dd1be0e8a5b0890dde12674c508608f0c60872a4acbc5fb3b9fd1978d916' b'02fbc210b54bdb4c48143a15cfd50a3e101d15a7dbb814c3804efc4b4782f45a5a'

--------------------------------------

RawTX for performing isomorphism:
0200000001c593d1502ece362f78bcdabe8e250cb2e9cfcad5149a3dde781f33d42d3c250b010000006a47304402203b2c7941c858d201ac384029e88c9988f6baa433d061eacb765caa356d6e1a7e02203885dd1be0e8a5b0890dde12674c508608f0c60872a4acbc5fb3b9fd1978d916012102fbc210b54bdb4c48143a15cfd50a3e101d15a7dbb814c3804efc4b4782f45a5afdffffff022b020000000000001976a9142581997c24562e316ffa3163e63d2db26442cc9a88ac4d832a00000000001976a914662367a3d78a4b0fcbb3020b3d724981d10934f688acd9530800

--------------------------------------

Link to gif content #04.1

Мы получили RawTX пылевой транзакции теперь перейдем в раздел Verify Transactions для того чтобы убедиться создана ли транзакция должным образом. Скопируем RawTX и вставим в поле ввода Verify transactions and other scripts

RawTX for performing isomorphism:

0200000001c593d1502ece362f78bcdabe8e250cb2e9cfcad5149a3dde781f33d42d3c250b010000006a47304402203b2c7941c858d201ac384029e88c9988f6baa433d061eacb765caa356d6e1a7e02203885dd1be0e8a5b0890dde12674c508608f0c60872a4acbc5fb3b9fd1978d916012102fbc210b54bdb4c48143a15cfd50a3e101d15a7dbb814c3804efc4b4782f45a5afdffffff022b020000000000001976a9142581997c24562e316ffa3163e63d2db26442cc9a88ac4d832a00000000001976a914662367a3d78a4b0fcbb3020b3d724981d10934f688acd9530800

-16

ScriptSig Isomorphism

Цель нашей пылевой атаки получить максимальную прибыль от Биткоин Кошелька на которую мы отправляем 555 satoshi. Для этого мы переходим в раздел ScriptSig Isomorphism и преобразуем пылевую транзакцию в изоморфизм, согласно теории https://safecurves.cr.yp.to/ladder.html (две транзакции должны быть подтверждены майнерами). Первая транзакция это пылевая транзакция, где отправляется малая сумма в 555 satoshi, вторая транзакция это изоморфизм первой транзакции, где происходит обратный перевод средств из баланса жертвы пылевой атаки.

Link to gif content #05.1

Полученный изоморфизм мы опубликуем в репозитории CryptoDeepTools

https://github.com/demining/CryptoDeepTools/blob/main/28DustAttack/14RKFqH45xYPMpW4KQ28RB6XtrZ8XpEM5i/isomorphism.txt

Согласно, теории описанная в разделе Create Dust Transaction нам необходимо изменить все существующие значение 74786964 в новой транзакции изоморфизма на все текущие txid которые были совершены в Биткоин Кошелек: 14RKFqH45xYPMpW4KQ28RB6XtrZ8XpEM5i на которую мы производим пылевую атаку с малой суммой 555 satoshi [ send_dust ]

Запустим скрипт указав print(tx.serialize().hex()[+10:+74]) и преобразуем весь список txid в потоковый формат hash

Link to gif content #06

После того как мы получили все потоковые хеш форматы нам необходимо сохранить весь список заменив txid, для этого открываем файл: isomorphism.txt в Notepad++ нажимаем клавиши:
CTRL + F пишем:
74786964 заменить на: \ntxid\n
Переходим в CryptoDeepTools и выполним функцию замены в Notepad++ т.к. мы получили список txid теперь из списка GitHub скопируем и вставим весь список потокового хеш формата в файл: isomorphism.txt

Link to gif content #08

Замена публичного ключа в файле: isomorphism.txt

Изоморфизм это новая транзакция и в место значение 7075626b6579 нам необходимо указать публичный ключ Биткоин Кошелька из которого мы хотим совершить транзакцию целью получение максимальной прибыли. Для этого переходим в файл PublicKey.txt запустим python скрипт: pubtoaddr.py для того чтобы убедиться соответствует ли публичный ключ к адресу для пылевой атаки.

https://github.com/demining/CryptoDeepTools/blob/main/28DustAttack/14RKFqH45xYPMpW4KQ28RB6XtrZ8XpEM5i/PublicKey.txt

После нам необходимо изменить все существующие значение 7075626b6579 на значение в файле: PublicKey.txt (Все действие делаются также в Notepad++)

Link to gif content #10

Биткоин адрес для получения всей прибыли:

Для перевода всех накопленных монет BTC нам необходимо сгенерировать совершенно новый Биткоин адрес в формате (SegWit):

36ZfWyL5NGvC2u54QENyUgDzTgNyHe1xpE

Для того, чтобы получить hash160 для Биткоин адреса нам необходимо раскодировать RedeemScript используем python скрипт createrawtransaction.py

print(Tx.get_address_data(send_dust)['script_pubkey'])

После получение hash160 из нового Биткоин Адреса (SegWit) нам необходимо открыть файл: isomorphism.txt в Notepad++ и заменить значение 68617368313630 на полученное значение hash160
Мы добавили все необходимые значение для создание новой транзакции для получение прибыли из изоморфизма, теперь нам необходимо выделить весь текст на файле: isomorphism.txt нажав клавиши: CTRL + A после объединяем все в одну строку для этого необходимо нажать на клавиши CTRL + J в итоге мы получаем длинную строку с пробелами. Убираем пробелы нажав клавиши: CTRL + F заменяем пробелы. В итоге мы получаем новый RawTX для совершение транзакции.

Link to gif content #12

Любая транзакция должна быть подтверждена майнерами для того чтобы RawTX отправить в поле раздела: Broadcast Transaction для передачи заявки на подтверждение майнерами, необходимо тщательно убедиться, что платеж создан корректно для этого переходим в раздел: Verify Transactions and other scripts
https://coinbin.ru/#verify
https://coinbin.ru/#verify

Сумма прибыли в монетах от пылевой атаки составляет:

5000.00141092 BTC // $ 209364,284.08 United States Dollar

https://www.coinbase.com/converter/btc/usd
https://www.coinbase.com/converter/btc/usd

---------------------------------------------------------------------------------------------

Пример №2

-19

https://www.blockchain.com/explorer/addresses/btc/15n6boxiQj45oHcmDjtNMjh35sFWZX4PBt

Продолжим пылевую атаку на другом примере. В качестве холодного кошелька будем использовать тот же адрес: 1AK4LYE6PYwBmSYHQX3v2UsXXHTvCAsJeK
Для
примера №2 пополним баланс на сумму: 0.033532 BTC или в единицах Биткоина: 33532 satoshi
-20
Сохраним транзакцию TXID хэш от платежа пополнение баланса для дальнейшего построение Дерево Меркла (Merkle Tree)

Хэш платежа от пополнение баланса

https://btc1.trezor.io/tx/655c533bf059721cec9d3d70b3171a07997991a02fedfa1c9b593abc645e1cc5
https://btc1.trezor.io/tx/655c533bf059721cec9d3d70b3171a07997991a02fedfa1c9b593abc645e1cc5
Скопируем TXID: 655c533bf059721cec9d3d70b3171a07997991a02fedfa1c9b593abc645e1cc5 т.к. это хэш пополнение баланса холодного кошелька: 1AK4LYE6PYwBmSYHQX3v2UsXXHTvCAsJeK далее открываем исходный код Python скрипта createrawtransaction.py и в строке №7 меняем значение на свои данные.

dust_tx = bytes.fromhex("655c533bf059721cec9d3d70b3171a07997991a02fedfa1c9b593abc645e1cc5")

Меняем строку №5 вставим Private Key WIF

pk = PrivateKey.parse("L1k********************************************MdrTj")

В строке №12 добавляем общую сумму баланса холодного кошелька. В нашем случае эта сумма составляет 33532 satoshi

tx_in._value = 33532

Прибыль от пылевой атаки.

Выбираем Биткоин Кошелек от которого в конечном итоге получаем прибыль в случае подтверждение майнерами изоморфизма. Так как мы рассматриваем пример №2 в нашем случае мы выбираем адрес Биткоин Кошелька: 15n6boxiQj45oHcmDjtNMjh35sFWZX4PBt

https://www.blockchain.com/explorer/addresses/btc/15n6boxiQj45oHcmDjtNMjh35sFWZX4PBt
https://www.blockchain.com/explorer/addresses/btc/15n6boxiQj45oHcmDjtNMjh35sFWZX4PBt
В строке №9 нам необходимо указать Биткоин Адрес для пылевой атаки

send_dust = "15n6boxiQj45oHcmDjtNMjh35sFWZX4PBt"

Сумма пыли будет составлять 555 satoshi, в строке №15 указываем эту сумму.

TxOut(555, Tx.get_address_data(send_dust)['script_pubkey'].serialize()),

Далее учитываем Fee (комиссия для майнеров), эта сумму будет составлять 226 satoshi

555 + 226 = 781 satoshi

Также нам необходимо учитывать возврат наших средств обратно на наш холодный кошелек: 1AK4LYE6PYwBmSYHQX3v2UsXXHTvCAsJeK т.к. мы выделили 781 satoshi для пылевой атаки, вычитаем эту сумму из общей суммы пополнение баланса холодного кошелька 33532 satoshi

33532 - 781 = 32751 satoshi

В строке №16 указываем сумму возврат наших средств обратно на наш холодный кошелек: 1AK4LYE6PYwBmSYHQX3v2UsXXHTvCAsJeK

TxOut(32751, Tx.get_address_data(pk.address())['script_pubkey'].serialize())

Запускаем наш скрипт createrawtransaction.py нажав клавишу «F5» или опцию: Run / Run Module F5
-23

Запуск скрипта: createrawtransaction.py

from io import BytesIO
from secp256k1 import *
from sighash import *

pk = PrivateKey.parse("L1k********************************************MdrTj")
pk.address()
dust_tx = bytes.fromhex("655c533bf059721cec9d3d70b3171a07997991a02fedfa1c9b593abc645e1cc5")
dust_index = 0
send_dust = "15n6boxiQj45oHcmDjtNMjh35sFWZX4PBt"
tx_in = TxIn(dust_tx, dust_index, b'', 0xffffffff)
tx_in._script_pubkey = Tx.get_address_data(pk.address())['script_pubkey']
tx_in._value = 33532
tx_ins = [ tx_in ]
tx_outs = [
TxOut(555, Tx.get_address_data(send_dust)['script_pubkey'].serialize()),
TxOut(32751, Tx.get_address_data(pk.address())['script_pubkey'].serialize())
]
tx = Tx(1, tx_ins, tx_outs, 0, testnet=True)
signature(tx, 0, pk)
tx.serialize().hex()

print("\n--------------------------------------\n")
print("My work Bitcoin Address: " + pk.address())
print("Address for Getting Rich: " + send_dust)
print("\n--------------------------------------\n")
print(tx_in._script_pubkey)
print(tx_in.script_sig)
print("\n--------------------------------------\n")
print("RawTX for performing isomorphism:")
print(tx.serialize().hex())
print("\n--------------------------------------\n")

Результат:

--------------------------------------

My work Bitcoin Address: 1AK4LYE6PYwBmSYHQX3v2UsXXHTvCAsJeK
Address for Getting Rich: 15n6boxiQj45oHcmDjtNMjh35sFWZX4PBt

--------------------------------------

OP_DUP OP_HASH160 b'662367a3d78a4b0fcbb3020b3d724981d10934f6' OP_EQUALVERIFY OP_CHECKSIG b'3045022100dcd830d15f3a8cad03526bac2540570431a8691450a2959cc1badcc2e563124e0220013aa9e38bf45e4afc3859ee34ac8522106f1d202246c247ed945da89bdba622' b'02fbc210b54bdb4c48143a15cfd50a3e101d15a7dbb814c3804efc4b4782f45a5a'

--------------------------------------

RawTX for performing isomorphism:
0200000001c51c5e64bc3a599b1cfaed2fa0917999071a17b3703d9dec1c7259f03b535c65010000006b483045022100dcd830d15f3a8cad03526bac2540570431a8691450a2959cc1badcc2e563124e0220013aa9e38bf45e4afc3859ee34ac8522106f1d202246c247ed945da89bdba622012102fbc210b54bdb4c48143a15cfd50a3e101d15a7dbb814c3804efc4b4782f45a5afdffffff02ef7f0000000000001976a914662367a3d78a4b0fcbb3020b3d724981d10934f688ac2b020000000000001976a9143467e56d5193558eacdae84af5c1c72ee158dd6788acd9530800

--------------------------------------

Link to gif content #04.2

Мы получили RawTX пылевой транзакции теперь перейдем в раздел Verify Transactions для того чтобы убедиться создана ли транзакция должным образом. Скопируем RawTX и вставим в поле ввода Verify transactions and other scripts

RawTX for performing isomorphism:

0200000001c51c5e64bc3a599b1cfaed2fa0917999071a17b3703d9dec1c7259f03b535c65010000006b483045022100dcd830d15f3a8cad03526bac2540570431a8691450a2959cc1badcc2e563124e0220013aa9e38bf45e4afc3859ee34ac8522106f1d202246c247ed945da89bdba622012102fbc210b54bdb4c48143a15cfd50a3e101d15a7dbb814c3804efc4b4782f45a5afdffffff02ef7f0000000000001976a914662367a3d78a4b0fcbb3020b3d724981d10934f688ac2b020000000000001976a9143467e56d5193558eacdae84af5c1c72ee158dd6788acd9530800

-24

ScriptSig Isomorphism

Цель нашей пылевой атаки получить максимальную прибыль от Биткоин Кошелька на которую мы отправляем 555 satoshi. Для этого мы переходим в раздел ScriptSig Isomorphism и преобразуем пылевую транзакцию в изоморфизм, согласно теории https://safecurves.cr.yp.to/ladder.html (две транзакции должны быть подтверждены майнерами). Первая транзакция это пылевая транзакция, где отправляется малая сумма в 555 satoshi, вторая транзакция это изоморфизм первой транзакции, где происходит обратный перевод средств из баланса жертвы пылевой атаки.

Link to gif content #05.2

Полученный изоморфизм мы опубликуем в репозитории CryptoDeepTools

https://github.com/demining/CryptoDeepTools/blob/main/28DustAttack/15n6boxiQj45oHcmDjtNMjh35sFWZX4PBt/isomorphism.txt

Согласно, теории описанная в разделе Create Dust Transaction нам необходимо изменить все существующие значение 74786964 в новой транзакции изоморфизма на все текущие txid которые были совершены в Биткоин Кошелек: 15n6boxiQj45oHcmDjtNMjh35sFWZX4PBt на которую мы производим пылевую атаку с малой суммой 555 satoshi [ send_dust ]

Запустим скрипт указав print(tx.serialize().hex()[+10:+74]) и преобразуем весь список txid в потоковый формат hash

Link to gif content #07

После того как мы получили все потоковые хеш форматы нам необходимо сохранить весь список заменив txid, для этого открываем файл: isomorphism.txt в Notepad++ нажимаем клавиши:
CTRL + F пишем:
74786964 заменить на: \ntxid\n
Переходим в CryptoDeepTools и выполним функцию замены в Notepad++ т.к. мы получили список txid теперь из списка GitHub скопируем и вставим весь список потокового хеш формата в файл: isomorphism.txt

Link to gif content #09

Замена публичного ключа в файле: isomorphism.txt

Изоморфизм это новая транзакция и в место значение 7075626b6579 нам необходимо указать публичный ключ Биткоин Кошелька из которого мы хотим совершить транзакцию целью получение максимальной прибыли. Для этого переходим в файл PublicKey.txt запустим python скрипт: pubtoaddr.py для того чтобы убедиться соответствует ли публичный ключ к адресу для пылевой атаки.

https://github.com/demining/CryptoDeepTools/blob/main/28DustAttack/15n6boxiQj45oHcmDjtNMjh35sFWZX4PBt/PublicKey.txt

После нам необходимо изменить все существующие значение 7075626b6579 на значение в файле: PublicKey.txt (Все действие делаются также в Notepad++)

Link to gif content #11

Биткоин адрес для получения всей прибыли:

Для перевода всех накопленных монет BTC нам необходимо сгенерировать совершенно новый Биткоин адрес в формате (SegWit):

3GsC42MbUrtGU4un6QHbXkyjKVawyvm6ac

Для того, чтобы получить hash160 для Биткоин адреса нам необходимо раскодировать RedeemScript используем python скрипт createrawtransaction.py

print(Tx.get_address_data(send_dust)['script_pubkey'])

После получение hash160 из нового Биткоин Адреса (SegWit) нам необходимо открыть файл: isomorphism.txt в Notepad++ и заменить значение 68617368313630 на полученное значение hash160
Мы добавили все необходимые значение для создание новой транзакции для получение прибыли из изоморфизма, теперь нам необходимо выделить весь текст на файле: isomorphism.txt нажав клавиши: CTRL + A после объединяем все в одну строку для этого необходимо нажать на клавиши CTRL + J в итоге мы получаем длинную строку с пробелами. Убираем пробелы нажав клавиши: CTRL + F заменяем пробелы. В итоге мы получаем новый RawTX для совершение транзакции.

Link to gif content #13

Любая транзакция должна быть подтверждена майнерами для того чтобы RawTX отправить в поле раздела: Broadcast Transaction для передачи заявки на подтверждение майнерами, необходимо тщательно убедиться, что платеж создан корректно для этого переходим в раздел: Verify Transactions and other scripts

https://coinbin.ru/#verify
https://coinbin.ru/#verify

Сумма прибыли в монетах от пылевой атаки составляет:

5001.51473912 BTC // $ 215831966,02 United States Dollar

https://www.coinbase.com/converter/btc/usd
https://www.coinbase.com/converter/btc/usd

References:

Данный материал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN. Создатели программного обеспечения не несут ответственность за использование материалов.

Исходный код

Telegram: https://t.me/cryptodeeptech

YouTube: https://www.youtube.com/@cryptodeeptech

Видеоматериал: https://dzen.ru/video/watch/65be9256df804947fbd96fd7

Источник: https://cryptodeep.ru/dustattack

-27

Криптоанализ