![](https://habrastorage.org/getpro/habr/upload_files/fde/dfa/ccd/fdedfaccdd6ec393adba42391de6f153.png)
В этой статье мы раскроем обширную тему: “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/ DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/c33/3ab/5ae/c333ab5ae393f7e90036613ee5ec16b9.png)
![pic.twitter.com/w34kjnAHPJ DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/007/149/a36/007149a369ed18df0663de5d8d4d544d.png)
![d7db4f96a4059c8906b953677ce533493d7b9da0f854a21b99f5772910dd0a31 DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/854/860/e30/854860e3048f36f75c2091de4aa58d20.png)
![DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/e97/d53/7de/e97d537de6f4a43e0662ee0cb2deedf0.png)
Пока все гадают, кто же именно отправил
27 BTC
на популярный Биткоин Кошелек[Satoshi Nakamoto]
мы рассмотрим две различные примеры пылевой атаки, чтобы пролить свет на все тонкости этой манипуляции и какие риски могут ждать пользователей и держателей популярной криптовалюты Биткоин.
Рассмотрим ещё одну статью и возьмем для примера TXID из которого было совершено очень большое количество пылевой атаки.
![https://dust-attack.blogspot.com DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/a1b/15f/882/a1b15f882bc63b45f0d7e83d4a022d57.jpg)
![1d6580dcd979951bd600252b741c22a3ea8e605e43168f8452c68915c3ea2bf3 DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/027/ccc/2cb/027ccc2cb9fd04d29cfde257b873a20f.png)
Согласно, статье в этой транзакции было совершено наибольшее количество краж монет BTC с использованием системы пылевой атаки.
Обратим внимание на два Биткоин Адреса которые в период [июль-август 2022] совершили успешные пылевые атаки на общую сумму: 10000 BTC
![https://www.blockchain.com/explorer/addresses/btc/14RKFqH45xYPMpW4KQ28RB6XtrZ8XpEM5i DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/6c2/170/ac6/6c2170ac637567642490d5f47cd8543d.png)
![https://www.blockchain.com/explorer/addresses/btc/15n6boxiQj45oHcmDjtNMjh35sFWZX4PBt DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/c93/383/859/c933838599ef328c079ed259c1c45721.png)
Для проведение пылевой атаки большую роль играет подтверждение изоморфизма майнерами, т.к. с 2022 по 2024 года многие криптовалютные сервисы и аппаратные кошельки активно борются с пылевой атакой.
На данный момент широкую популярность получил способ самостоятельно создавать пылевые транзакции на собственном холодном кошельке. Возьмем пример № 1 и перейдем в раздел “Create Dust Transaction”
Установим Python 3.12.1 на Windows 10
Скачиваем исходный код устанавливаем get-pip.py , а также запускаем install.py для установки пакетов:
Сгенерируем собственный холодный кошелек
Баланс и транзакция платежа
Пополняем баланс холодного кошелька: 1AK4LYE6PYwBmSYHQX3v2UsXXHTvCAsJeK
![Баланс: 0.02786906 BTC или в единицах Биткоина: 2786906 satoshi DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/d67/105/417/d67105417980d7a7b8c0015f2579d0e2.png)
Сохраним транзакцию TXID хэш от платежа пополнение баланса для дальнейшего построение Дерево Меркла (Merkle Tree)
![Дерево Меркла заполняется снизу вверх, где к каждому блоку данных применяется хеширование, а полученные значения записываются в листья дерева. Блоки, которые находятся уровнем выше, заполняются значением суммы хешем двух дочерних блоков. Этот процесс повторяется до того момента, пока не будет получено верхнее значение или Корень Меркла (Merkle Root). В блокчейне Bitcon используется хеш-функция SHA256. Другие блокчейны могут использовать другие принципы шифрования для создания Дерева Меркла. DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/4c7/9b4/7d8/4c79b47d89a8cbfe8054d78af26788fe.png)
Хэш платежа от пополнение баланса
![https://btc1.trezor.io/tx/0b253c2dd4331f78de3d9a14d5cacfe9b20c258ebedabc782f36ce2e50d193c5 DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/d87/e7f/5da/d87e7f5daaee1bb282e0e6c92a6803a9.png)
Скопируем TXID: 0b253c2dd4331f78de3d9a14d5cacfe9b20c258ebedabc782f36ce2e50d193c5 т.к. это хэш пополнение баланса холодного кошелька: 1AK4LYE6PYwBmSYHQX3v2UsXXHTvCAsJeK далее открываем исходный код Python скрипта createrawtransaction.py и в строке №7 меняем значение на свои данные.
dust_tx = bytes.fromhex("0b253c2dd4331f78de3d9a14d5cacfe9b20c258ebedabc782f36ce2e50d193c5")
Чтобы обезопасить свой новосозданный холодный кошелек: 1AK4LYE6PYwBmSYHQX3v2UsXXHTvCAsJeK ОБЯЗАТЕЛЬНО отключаем интернет на своем ПК. Это необходимо для безопасности в раскрытие приватного ключа сторонними работающими приложениями на вашем ПК. Этот процесс займет несколько минут. Отключаем интернет при создании пылевой транзакции RawTX.
![DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/892/14d/323/89214d3233a312451964f8edefa081d9.png)
![DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/885/282/d00/885282d008488aad9c19f018154f4601.png)
Как только вы убедились, что интернет отключен в строке №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 DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/7c5/40f/c30/7c540fc30ec5fa00cf6523df02d035ca.png)
В строке №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
![DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/e40/425/b2c/e40425b2c2f031096f75e923275a86a8.png)
Запуск скрипта: 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
Мы получили RawTX пылевой транзакции теперь перейдем в раздел Verify Transactions для того чтобы убедиться создана ли транзакция должным образом. Скопируем RawTX и вставим в поле ввода Verify transactions and other scripts
RawTX for performing isomorphism:
0200000001c593d1502ece362f78bcdabe8e250cb2e9cfcad5149a3dde781f33d42d3c250b010000006a47304402203b2c7941c858d201ac384029e88c9988f6baa433d061eacb765caa356d6e1a7e02203885dd1be0e8a5b0890dde12674c508608f0c60872a4acbc5fb3b9fd1978d916012102fbc210b54bdb4c48143a15cfd50a3e101d15a7dbb814c3804efc4b4782f45a5afdffffff022b020000000000001976a9142581997c24562e316ffa3163e63d2db26442cc9a88ac4d832a00000000001976a914662367a3d78a4b0fcbb3020b3d724981d10934f688acd9530800
![DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/9f5/aaa/01f/9f5aaa01f61fb03e3427936b8055bd6c.png)
ScriptSig Isomorphism
Цель нашей пылевой атаки получить максимальную прибыль от Биткоин Кошелька на которую мы отправляем 555 satoshi. Для этого мы переходим в раздел ScriptSig Isomorphism и преобразуем пылевую транзакцию в изоморфизм, согласно теории https://safecurves.cr.yp.to/ladder.html (две транзакции должны быть подтверждены майнерами). Первая транзакция это пылевая транзакция, где отправляется малая сумма в 555 satoshi, вторая транзакция это изоморфизм первой транзакции, где происходит обратный перевод средств из баланса жертвы пылевой атаки.
Полученный изоморфизм мы опубликуем в репозитории 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
После того как мы получили все потоковые хеш форматы нам необходимо сохранить весь список заменив txid, для этого открываем файл: isomorphism.txt в Notepad++ нажимаем клавиши:
CTRL + F
пишем: 74786964 заменить на: \ntxid\n
Переходим в CryptoDeepTools и выполним функцию замены в Notepad++ т.к. мы получили список txid теперь из списка
GitHub
скопируем и вставим весь список потокового хеш формата в файл: isomorphism.txt
Замена публичного ключа в файле: isomorphism.txt
Изоморфизм это новая транзакция и в место значение 7075626b6579 нам необходимо указать публичный ключ Биткоин Кошелька из которого мы хотим совершить транзакцию целью получение максимальной прибыли. Для этого переходим в файл PublicKey.txt запустим python скрипт: pubtoaddr.py для того чтобы убедиться соответствует ли публичный ключ к адресу для пылевой атаки.
https://github.com/demining/CryptoDeepTools/blob/main/28DustAttack/14RKFqH45xYPMpW4KQ28RB6XtrZ8XpEM5i/PublicKey.txt
После нам необходимо изменить все существующие значение
7075626b6579
на значение в файле: PublicKey.txt (Все действие делаются также в Notepad++)
Биткоин адрес для получения всей прибыли:
Для перевода всех накопленных монет 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 для совершение транзакции.
Любая транзакция должна быть подтверждена майнерами для того чтобы RawTX отправить в поле раздела: Broadcast Transaction для передачи заявки на подтверждение майнерами, необходимо тщательно убедиться, что платеж создан корректно для этого переходим в раздел: Verify Transactions and other scripts
![https://coinbin.ru/#verify DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/ca1/7ba/210/ca17ba210c81274c2994a7d6b06a9deb.png)
Сумма прибыли в монетах от пылевой атаки составляет:
5000.00141092 BTC // $ 209364,284.08 United States Dollar
![https://www.coinbase.com/converter/btc/usd DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/237/bba/087/237bba087b480bf7bd9b5a7d26dcc29b.png)
Пример №2
![DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/b57/c79/c56/b57c79c56de1a8ded2e22669dfd1960c.png)
https://www.blockchain.com/explorer/addresses/btc/15n6boxiQj45oHcmDjtNMjh35sFWZX4PBt
Продолжим пылевую атаку на другом примере. В качестве холодного кошелька будем использовать тот же адрес: 1AK4LYE6PYwBmSYHQX3v2UsXXHTvCAsJeKДля примера №2 пополним баланс на сумму: 0.033532 BTC или в единицах Биткоина: 33532 satoshi
![DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/4af/902/237/4af9022370a41b9952c652aede0b3447.png)
Сохраним транзакцию TXID хэш от платежа пополнение баланса для дальнейшего построение Дерево Меркла (Merkle Tree)
Хэш платежа от пополнение баланса
![https://btc1.trezor.io/tx/655c533bf059721cec9d3d70b3171a07997991a02fedfa1c9b593abc645e1cc5 DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/9d7/498/e19/9d7498e191d89b98d59c56bc712a7c8a.png)
Скопируем 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 DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/989/55d/3e7/98955d3e719be1c9964ae84c922a4929.png)
В строке №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
![DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/d7e/a88/551/d7ea88551796ac1fffd0426d15703693.png)
Запуск скрипта: 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
Мы получили RawTX пылевой транзакции теперь перейдем в раздел Verify Transactions для того чтобы убедиться создана ли транзакция должным образом. Скопируем RawTX и вставим в поле ввода Verify transactions and other scripts
RawTX for performing isomorphism:
0200000001c51c5e64bc3a599b1cfaed2fa0917999071a17b3703d9dec1c7259f03b535c65010000006b483045022100dcd830d15f3a8cad03526bac2540570431a8691450a2959cc1badcc2e563124e0220013aa9e38bf45e4afc3859ee34ac8522106f1d202246c247ed945da89bdba622012102fbc210b54bdb4c48143a15cfd50a3e101d15a7dbb814c3804efc4b4782f45a5afdffffff02ef7f0000000000001976a914662367a3d78a4b0fcbb3020b3d724981d10934f688ac2b020000000000001976a9143467e56d5193558eacdae84af5c1c72ee158dd6788acd9530800
![DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/72f/131/61f/72f13161f2e4e50fa69397520e837c9d.png)
ScriptSig Isomorphism
Цель нашей пылевой атаки получить максимальную прибыль от Биткоин Кошелька на которую мы отправляем 555 satoshi. Для этого мы переходим в раздел ScriptSig Isomorphism и преобразуем пылевую транзакцию в изоморфизм, согласно теории https://safecurves.cr.yp.to/ladder.html (две транзакции должны быть подтверждены майнерами). Первая транзакция это пылевая транзакция, где отправляется малая сумма в 555 satoshi, вторая транзакция это изоморфизм первой транзакции, где происходит обратный перевод средств из баланса жертвы пылевой атаки.
Полученный изоморфизм мы опубликуем в репозитории 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
После того как мы получили все потоковые хеш форматы нам необходимо сохранить весь список заменив txid, для этого открываем файл: isomorphism.txt в Notepad++ нажимаем клавиши:
CTRL + F
пишем: 74786964 заменить на: \ntxid\n
Переходим в CryptoDeepTools и выполним функцию замены в Notepad++ т.к. мы получили список txid теперь из списка
GitHub
скопируем и вставим весь список потокового хеш формата в файл: isomorphism.txt
Замена публичного ключа в файле: isomorphism.txt
Изоморфизм это новая транзакция и в место значение 7075626b6579 нам необходимо указать публичный ключ Биткоин Кошелька из которого мы хотим совершить транзакцию целью получение максимальной прибыли. Для этого переходим в файл PublicKey.txt запустим python скрипт: pubtoaddr.py для того чтобы убедиться соответствует ли публичный ключ к адресу для пылевой атаки.
https://github.com/demining/CryptoDeepTools/blob/main/28DustAttack/15n6boxiQj45oHcmDjtNMjh35sFWZX4PBt/PublicKey.txt
После нам необходимо изменить все существующие значение
7075626b6579
на значение в файле: PublicKey.txt (Все действие делаются также в Notepad++)
Биткоин адрес для получения всей прибыли:
Для перевода всех накопленных монет 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 для совершение транзакции.
Любая транзакция должна быть подтверждена майнерами для того чтобы RawTX отправить в поле раздела: Broadcast Transaction для передачи заявки на подтверждение майнерами, необходимо тщательно убедиться, что платеж создан корректно для этого переходим в раздел: Verify Transactions and other scripts
![https://coinbin.ru/#verify DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/39e/446/237/39e446237e9a2d69f89ae95955c381bb.png)
Сумма прибыли в монетах от пылевой атаки составляет:
5001.51473912 BTC // $ 215831966,02 United States Dollar
![https://www.coinbase.com/converter/btc/usd DUST ATTACK транзакция в блокчейне с подтверждением изоморфизма на общую сумму 10000 BTC](https://habrastorage.org/getpro/habr/upload_files/34c/247/367/34c24736757d574a166199a8259e4a8c.png)
References:
[3] Data Insertion in Bitcoin’s Blockchain (Andrew Sward, Ivy Vecna, Forrest Stonedahl)
[4] Bitcoin Will Bite the Dust (Kevin Dowd and Martin Hutchinson)
[5] DATA ANALYTICS AND CONSENSUS MECHANISMS IN BLOCKCHAINS (Dániel FEHÉR)
Данный материал создан для портала 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
![](https://habrastorage.org/getpro/habr/upload_files/ba3/499/160/ba3499160e49a7d35721d92d0f848ce5.png)