Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
26 ноября 2014, 10:50:49 PM   # 1
 
 
Сообщения: 793
Цитировать по имени
цитировать ответ
по умолчанию Re: помощь преобразовательному подписал ПРД без знака для OP_CHECKSIG

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Я пытаюсь использовать эта картинка преобразовать ТХ для того, чтобы вручную проверить подпись.

ОЕ Я работаю на это 60b20eca2285b7ed8b64a1f98277c16fcc205b9e21413d6a72545880d2a3f341, который является полным подписали Тй:

Код:
010000000217cbf067a9ad71b2f69ea66a1c94d04cee26f856b5b4bdccaeccb59761419668010000008a4730440220735364aea32db724e7f0179f48e4ad5a63a3b04f733e82ca5215097a91aa7123022015846041c9564ff96fb269cb5e9b2f24dac003299e5d16d34fb9c699d55825c7014104617f9e26b7f6f776e30cb4aa24ebef9e183caf6da25684862a32446589be20a53c2b37a7283430033bdfd2f31a96edaea88bf9ebf07498476cb34d16b47887edffffffff877a5dd62eab9f1fd28739a9ae7c68fcb0f075b2c2ede13cb3acff15d362e271010000008c493046022100d0af9e17b678ad7823ad331a04d5b50f2dc173715949718ef974314f9ddbf0fa02210098de23b9c6daad57e7c8a8748718c56ec8d20cd2686aa652c4fb85091a39c690014104617f9e26b7f6f776e30cb4aa24ebef9e183caf6da25684862a32446589be20a53c2b37a7283430033bdfd2f31a96edaea88bf9ebf07498476cb34d16b47887edffffffff01709cc901000000001976a914ea0fcd06c9c62e590a8975627d0165b514568a5a88ac00000000

После некоторых исследований, я был в состоянии сломать весь ТХ:

Код:
01000000 - byte_reverse (Версия: 1, в шестнадцатеричном, длина 4 байта)
02 - Общее количество входов (начинается с 1, а не 0, поэтому для этого TX есть 2 общие входы не три)
17cbf067a9ad71b2f69ea66a1c94d04cee26f856b5b4bdccaeccb59761419668 - byte_reverse (input_txid)
01000000 - byte_reverse из Vout NUM для prev_tx (начиная с 0, так что это второй выход из этой ТХ)
8о - общая длина байта (в шестнадцатеричном, 0x8a = 138) из следующей сигнатуры + Публичный, (плюс префикса байт, чтобы указать длину)
47 - общая длина байта (0x47 = 71) следующая подпись
30 - DER-закодированные подписи
44 - общая длина байта следующей информации подписи
02 - первое значение представляет собой целое число, представленное в шестнадцатеричном формате (формат DER вызовов, которые, по-видимому 0x02)
Длина байт первого значения (0x20 = 32 в десятичной системе) - 20
735364aea32db724e7f0179f48e4ad5a63a3b04f733e82ca5215097a91aa7123 - г значение (Паб Х коорд случайного одноразового номера)
02 - следующий номер также ИНТ
20 - следующие данные имеют длиной 32 байт
15846041c9564ff96fb269cb5e9b2f24dac003299e5d16d34fb9c699d55825c7 - S значение (подпись для данных, нонса, privkey кортеж)
01 - Bitcoin подпись типа SIGHASH_ALL
       (Говорит шахтеры, как проверить подпись. Некоторые типы сиг знак только определенные входы и выходы, как в coinjoin ТХ-х. Стандарт SIGHASH_ALL подписывает весь ТХ, так что никаких изменений не может быть сделано)
41 - длина байта из следующих открытого ключа (0x41 = 65)
04617f9e26b7f6f776e30cb4aa24ebef9e183caf6da25684862a32446589be20a53c2b37a7283430033bdfd2f31a96edaea88bf9ebf07498476cb34d16b47887ed - Публичные, который является ключевым для ввода адреса и который соответствует privkey, используемой для изготовления сигового
порядковый номер, присвоенный только сейчас в этом ОМ, чтобы этот последний вход для использования с nlocktime в этом ОМ - FFFFFFFF
877a5dd62eab9f1fd28739a9ae7c68fcb0f075b2c2ede13cb3acff15d362e271 - второй вход byte_reverse (tx_id)
01000000 - второй вход byte_reversed Vout номер. (Опять же, начиная с 0, так что это второй выход)
8в - длина полной подписи и Публичных
49 - длина следующей информации подписи
30 - DER-закодированные подписи
46 - длина следующей информации подписи
02 - первое число дер ИНТ
21 - длина первых данных о числе плюс 00 префикса
00 - я неясно о том, что это и почему это здесь или, если это необходимо
d0af9e17b678ad7823ad331a04d5b50f2dc173715949718ef974314f9ddbf0fa - значение г
02 - следующий номер ИНТ
21 - длина следующего номера и 00 префиксов
не 00 - опять же, понятия не
98de23b9c6daad57e7c8a8748718c56ec8d20cd2686aa652c4fb85091a39c690 - ы значение
01 - SIGHASH_ALL
41 - длина следующего Публичных
04617f9e26b7f6f776e30cb4aa24ebef9e183caf6da25684862a32446589be20a53c2b37a7283430033bdfd2f31a96edaea88bf9ebf07498476cb34d16b47887ed - Публичная для prevtx Vout, который должен быть таким же, который используется для подписи
FFFFFFFF - порядковый номер присваивается для ввода
01 - общее количество выходов, в шестнадцатеричном, начиная с 1 не 0.
709cc90100000000 - byte_reverse из (чисел satoshis в выходе, представленных в шестнадцатеричном), zfilled в длину 8 байт
19 - количество байт для вывода сценария
76 - OP_DUP, дублируются данные предыдущего стека (который будет hash160, когда этот сценарий используется для тратить деньги)
a9 - OP_HASH160, то ripemd160 (sha250 (Публичный)) для ключа вывода
14 - длина данных hash160
ea0fcd06c9c62e590a8975627d0165b514568a5a - hash160 открытого ключа Послания
88 - OP_EQUALVERIFY, делает OP_EQUAL, который помещает значение TRUE в стеке, если сиг действительна
       затем делает OP_VERIFY, который останавливает transaciton и помечает его недействительным, если верхний элемент стека не ИСТИНА
ас - OP_CHECKSIG, убеждается данные, которые имеют действительную сиговых на самом деле данные этого ТХ в.
00000000 - nlocktime

А с помощью ПОС я связан выше, а также эта страница а также эта страница, Я попытался создать какую картинку ссылку звонки "verifyThisStr", Заменив scriptsig с предыдущим ТХ scriptpubkey:

Код:
010000000217cbf067a9ad71b2f69ea66a1c94d04cee26f856b5b4bdccaeccb59761419668010000001976a9140a2217742759c9951371083564d94b8b0317528488acffffffff877a5dd62eab9f1fd28739a9ae7c68fcb0f075b2c2ede13cb3acff15d362e271010000001976a9140a2217742759c9951371083564d94b8b0317528488acffffffff01709cc901000000001976a914ea0fcd06c9c62e590a8975627d0165b514568a5a88ac0000000001000000

Тем не менее, двойной хэш для этого является 6379ec988e87a690521a2bafe96fd035fc28ad451f3d1b65bf80d25bdb322057, который не проходит проверку подписи.

Я надеялся, что кто-то может указать на ошибку в моем беззнаковых ОМ "verifyThisStr", Так что я могу вручную проверить ТХ.

Спасибо за помощь всем !!!
luv2drnkbr сейчас офлайн Пожаловаться на luv2drnkbr   Ответить с цитированием Мультицитирование сообщения от luv2drnkbr Быстрый ответ на сообщение luv2drnkbr


Как заработать Биткоины?
Без вложений. Не майнинг.


27 ноября 2014, 2:27:39 AM   # 2
 
 
Сообщения: 464
Цитировать по имени
цитировать ответ
по умолчанию Re: помощь преобразовательному подписал ПРД без знака для OP_CHECKSIG

Получил 1806 Биткоинов
Реальная история.





Я просто смотрел на свой шестнадцатеричный дамп, так что я могу ошибаться, но мне кажется, что вы использовали как паб сценариев.
Если у вас есть более чем один вход, вы должны использовать предыдущий pubscript как redeemscript перед подписанием (как вы это делали), но только для входа, который вы подписываете. Остальной redeemscripts должен быть установлен пустыми, то есть 00
hhanh00 сейчас офлайн Пожаловаться на hhanh00   Ответить с цитированием Мультицитирование сообщения от hhanh00 Быстрый ответ на сообщение hhanh00

27 ноября 2014, 6:56:26 AM   # 3
 
 
Сообщения: 793
Цитировать по имени
цитировать ответ
по умолчанию Re: помощь преобразовательному подписал ПРД без знака для OP_CHECKSIG

Отлично, что работал отлично. Огромное спасибо за помощь!

Edit: я опубликовал обновленную версию полного распада ОГО на Pastebin если кто-то хочет
luv2drnkbr сейчас офлайн Пожаловаться на luv2drnkbr   Ответить с цитированием Мультицитирование сообщения от luv2drnkbr Быстрый ответ на сообщение luv2drnkbr

27 ноября 2014, 8:43:11 AM   # 4
 
 
Сообщения: 793
Цитировать по имени
цитировать ответ
по умолчанию Re: помощь преобразовательному подписал ПРД без знака для OP_CHECKSIG

Могу ли я звонить на свой опыт еще один раз? Я пытаюсь проверить multisig входа в настоящее время. номер Tx 0700ef4799c28537e7ae494575a2fa41bb2354ce621245dee796cfd7cdb3ddef.  Вот полный подписал ТХ:

Код:
0100000001d3988ed76ff725847e4fdfb2d51b58881a94d7b5319ac1a9951bf9532e98a85d00000000fdfe000048304502210080f029908a2d92186d6f174acc8a27e763c17bb4ad4a4d0f9e0e9040687a0aa6022024ad5d27a1a166a657c5df283e00cccfd17cfd8e0d841eb9698f56fcd5ae08e201483045022100a91a362a0471d40fa31b1dc0d2decde9a6f8bc6d952025523430c60de39855c8022023340bbd96c30391bd70cff12926c7f540d5dbb52adcc0c604b2df43bb686b7b014c6952210252865fa8553e7314deaa058b45349969a53df2a4825a9e8ba314236fe6bfd6c4210395ad4c60c648dea133e3731f2a0583baf1da5f6c60b56cdbad3b3bf8d28fe7de21021f3affcf31dee6b2ed6cb375d382516fd1fcb78f96dbeb6ceacc9aa47c6f386153aeffffffff01b8bb0608000000001976a9148442e8244ee26488bdef062b77a727053372a65488ac00000000

и вот моя попытка воссоздать verifyThisStr, что каждый multisig ключ должен подписать:

Код:
0100000001d3988ed76ff725847e4fdfb2d51b58881a94d7b5319ac1a9951bf9532e98a85d0000000017a914a2d92e95e73732e01aea6a4d7c4e406813ea32be87ffffffff01b8bb0608000000001976a9148442e8244ee26488bdef062b77a727053372a65488ac0000000001000000

Вы не могли бы указать на мою ошибку там?

Кроме того, в первоначальном ОМ, то var_int для размера сценария является 0xfdfe0000, что означает, что размер 0xfe, но по моим подсчетам, размер выглядит 0xFD. Можете ли вы, возможно, указать мне, почему var_int один байт больше, чем я думаю, что это должно быть?

Еще раз спасибо за вашу помощь, это действительно очень ценится. Там не так много, хорошая документация об этой части Bitcoin, и то немногое, что есть очень трудно для меня, чтобы понять, так что это все очень медленно происходит.
luv2drnkbr сейчас офлайн Пожаловаться на luv2drnkbr   Ответить с цитированием Мультицитирование сообщения от luv2drnkbr Быстрый ответ на сообщение luv2drnkbr

27 ноября 2014, 1:29:01 PM   # 5
 
 
Сообщения: 464
Цитировать по имени
цитировать ответ
по умолчанию Re: помощь преобразовательному подписал ПРД без знака для OP_CHECKSIG

Это плата для сценария хэша. Они работают иначе, чем другие сделки.

Вот игра пример игры: https://gist.github.com/gavinandresen/3966071 и ссылка на BIP https://github.com/bitcoin/bips/blob/master/bip-0016.mediawiki

В принципе, протокол имеет особый случай скриптов ххого OP_EQUAL формы OP_HASH160. Обратите внимание, что нет CHECKSIG здесь, потому что это ты, кто предоставляет pubscript и имеет хэш для данной хэш. Это трудно объяснить, в коротком посте, но ссылки должны дать вам достаточно информации. Если нет, не стесняйтесь спрашивать.

котировка
Кроме того, в первоначальном ОМ, то var_int для размера сценария является 0xfdfe0000, что означает, что размер 0xfe, но по моим подсчетам, размер выглядит 0xFD. Можете ли вы, возможно, указать мне, почему var_int один байт больше, чем я думаю, что это должно быть?
Размер действительно 0xfe. 0xFD следуют 2 байта для длины FE00. Вы, наверное, думали, что второй 00 был частью длины, но это на самом деле первый байт сценария.
hhanh00 сейчас офлайн Пожаловаться на hhanh00   Ответить с цитированием Мультицитирование сообщения от hhanh00 Быстрый ответ на сообщение hhanh00

27 ноября 2014, 3:38:28 PM   # 6
 
 
Сообщения: 793
Цитировать по имени
цитировать ответ
по умолчанию Re: помощь преобразовательному подписал ПРД без знака для OP_CHECKSIG

Если последний 0x00 байт не является частью длины var_int, с какой целью она служит? Я не могу за жизнь мне определить свою функцию. И другие АЯ меньше, чем размер 0xfd, кажется, не имеет, что 00 после размера.

Я также не могу подтвердить Тй для примера ТХ Гэвин, где он проводит multisig средства. Есть ли что-то неправильно это это verifyThisStr, что я использую, чтобы попытаться подтвердить против каждого из подписей Гэвины?

Код:
0100000001aca7f3b45654c230e0886a57fb988c3044ef5e8f7f39726d305c61d5e818903c0000000017a914f815b036d9bbbce5e9f2a00abd1bf3dc91e9551087ffffffff0140420f00000000001976a914ae56b4db13554d321c402db3961187aed1bbed5b88ac0000000001000000

Я считаю, что я сделал вход OP_HASH160 хххх OP_EQUAL, как это должно быть.

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

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

Г, это просто супер расстраивает. Я чувствую, что все это не должно быть так трудно, но, видимо, я еще новичок достаточно, где я делаю простые ошибки из-за не вполне понимая каждую последнюю часть. Я чувствую, что я на самом деле понять процесс создания сценариев и как все это работает, но я продолжаю имея, казалось бы, простые проблемы, как создание "verifyThisStr-х"И до сих пор не может найти ответы после нескольких часов заливки через код различных реализаций, которые знают, как проверить ТЕ-х.

Вздох, я предполагаю, что это будет просто занять некоторое время!
luv2drnkbr сейчас офлайн Пожаловаться на luv2drnkbr   Ответить с цитированием Мультицитирование сообщения от luv2drnkbr Быстрый ответ на сообщение luv2drnkbr

27 ноября 2014, 6:12:07 PM   # 7
 
 
Сообщения: 464
Цитировать по имени
цитировать ответ
по умолчанию Re: помощь преобразовательному подписал ПРД без знака для OP_CHECKSIG

Если последний 0x00 байт не является частью длины var_int, с какой целью она служит? Я не могу за жизнь мне определить свою функцию. И другие АЯ меньше, чем размер 0xfd, кажется, не имеет, что 00 после размера.
0x00 является опкод для OP_0, он толкает пустой массив в стеке.

Ваше сырье ОГО
Код:
0100000001d3988ed76ff725847e4fdfb2d51b58881a94d7b5319ac1a9951bf9532e98a85d00000000fdfe000048304502210080f029908a2d92186d6f174acc8a27e763c17bb4ad4a4d0f9e0e9040687a0aa6022024ad5d27a1a166a657c5df283e00cccfd17cfd8e0d841eb9698f56fcd5ae08e201483045022100a91a362a0471d40fa31b1dc0d2decde9a6f8bc6d952025523430c60de39855c8022023340bbd96c30391bd70cff12926c7f540d5dbb52adcc0c604b2df43bb686b7b014c6952210252865fa8553e7314deaa058b45349969a53df2a4825a9e8ba314236fe6bfd6c4210395ad4c60c648dea133e3731f2a0583baf1da5f6c60b56cdbad3b3bf8d28fe7de21021f3affcf31dee6b2ed6cb375d382516fd1fcb78f96dbeb6ceacc9aa47c6f386153aeffffffff01b8bb0608000000001976a9148442e8244ee26488bdef062b77a727053372a65488ac00000000

На https://blockchain.info/tx/0700ef4799c28537e7ae494575a2fa41bb2354ce621245dee796cfd7cdb3ddef?show_adv=true, входной скрипт
Код:
OP_FALSE 304502210080f029908a2d92186d6f174acc8a27e763c17bb4ad4a4d0f9e0e9040687a0aa6022024ad5d27a1a166a657c5df283e00cccfd17cfd8e0d841eb9698f56fcd5ae08e201 3045022100a91a362a0471d40fa31b1dc0d2decde9a6f8bc6d952025523430c60de39855c8022023340bbd96c30391bd70cff12926c7f540d5dbb52adcc0c604b2df43bb686b7b01 52210252865fa8553e7314deaa058b45349969a53df2a4825a9e8ba314236fe6bfd6c4210395ad4c60c648dea133e3731f2a0583baf1da5f6c60b56cdbad3b3bf8d28fe7de21021f3affcf31dee6b2ed6cb375d382516fd1fcb78f96dbeb6ceacc9aa47c6f386153ae

Это ASM часть показывает, что 4 значения были отброшены.
  • <ничего>
  • 304502210080f029908a2d92186d6f174acc8a27e763c17bb4ad4a4d0f9e0e9040687a0aa602202 4ad5d27a1a166a657c5df283e00cccfd17cfd8e0d841eb9698f56fcd5ae08e201
  • 3045022100a91a362a0471d40fa31b1dc0d2decde9a6f8bc6d952025523430c60de39855c802202 3340bbd96c30391bd70cff12926c7f540d5dbb52adcc0c604b2df43bb686b7b01
  • 52210252865fa8553e7314deaa058b45349969a53df2a4825a9e8ba314236fe6bfd6c4210395ad4 c60c648dea133e3731f2a0583baf1da5f6c60b56cdbad3b3bf8d28fe7de21021f3affcf31dee6b2 ed6cb375d382516fd1fcb78f96dbeb6ceacc9aa47c6f386153ae

"" это фиктивное значение, потому что в наследство от-на-1 ошибка в OP_CHECKMULTISIG, что делает его использование более 1 стека элемента, чем это необходимо.
Два других, начиная с 30 являются 2 SIGs в формате DER.
Последний ваш сценарий выкупа. Если вы берете его и запустить его через SHA-256, то RIPEMD-160, вы получите a2d92e95e73732e01aea6a4d7c4e406813ea32be, который соответствует ожидаемому hash160.
http://www.fileformat.info/tool/hash.htm. Кроме того, если вы расшифровать его с Bitcoin основной консоли

Код:
decodescript 52210252865fa8553e7314deaa058b45349969a53df2a4825a9e8ba314236fe6bfd6c4210395ad4c60c648dea133e3731f2a0583baf1da5f6c60b56cdbad3b3bf8d28fe7de21021f3affcf31dee6b2ed6cb375d382516fd1fcb78f96dbeb6ceacc9aa47c6f386153ae

{
"как м" : "2 0252865fa8553e7314deaa058b45349969a53df2a4825a9e8ba314236fe6bfd6c4 0395ad4c60c648dea133e3731f2a0583baf1da5f6c60b56cdbad3b3bf8d28fe7de 021f3affcf31dee6b2ed6cb375d382516fd1fcb78f96dbeb6ceacc9aa47c6f3861 3 OP_CHECKMULTISIG",
"reqSigs" : 2,
"тип" : "multisig",
"адреса" : [
"1D4LM66YwaoqcfHF1366pqvxvxHxvq66EZ",
"12KVX5eJQZDgZcccWnJNcuHgxgSdd3s8yT",
"1K1VgVpscuYr2j1C8D3F7BrghSpitdg2t9"
],
"p2sh" : "3GY5ZgtAeJDkiMLDR2DwSXFexVWJPnfA6g"
}
Это 2 из 3 мульти сиг.

Это также паб сценарий, который следует использовать в качестве входных данных при подготовке подписи. Потому что в то время CHECKSIG / MULTISIG получает оценку, текущий сценарий является то, что один. В OP_HASH160 ххх OP_EQUAL не оценивали до и больше не актуальны.
hhanh00 сейчас офлайн Пожаловаться на hhanh00   Ответить с цитированием Мультицитирование сообщения от hhanh00 Быстрый ответ на сообщение hhanh00

28 ноября 2014, 1:11:03 PM   # 8
 
 
Сообщения: 793
Цитировать по имени
цитировать ответ
по умолчанию Re: помощь преобразовательному подписал ПРД без знака для OP_CHECKSIG

Отлично! Я только проверил это "verifyThisStr":

Код:
0100000001d3988ed76ff725847e4fdfb2d51b58881a94d7b5319ac1a9951bf9532e98a85d000000006952210252865fa8553e7314deaa058b45349969a53df2a4825a9e8ba314236fe6bfd6c4210395ad4c60c648dea133e3731f2a0583baf1da5f6c60b56cdbad3b3bf8d28fe7de21021f3affcf31dee6b2ed6cb375d382516fd1fcb78f96dbeb6ceacc9aa47c6f386153aeffffffff01b8bb0608000000001976a9148442e8244ee26488bdef062b77a727053372a65488ac0000000001000000

и обе подписи подтверждено против него. Красивый!

Большое спасибо за вашу помощь. Это действительно был поучительным.
luv2drnkbr сейчас офлайн Пожаловаться на luv2drnkbr   Ответить с цитированием Мультицитирование сообщения от luv2drnkbr Быстрый ответ на сообщение luv2drnkbr



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW