Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
23 декабря 2010, 1:52:25 AM   # 1
 
 
Сообщений: 37
Цитировать по имени
цитировать ответ
по умолчанию Re: Что же такое Midstate? (Пытается декодировать данные JSON в Perl)

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


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

Например, у меня есть работа, как это (из пула PMS)
Код:
  "данные": "000000014e010ed08a87644d4a7d9b9852e8d0c5f5d3fc253917fc2b0000201600000000cec99c8365ef81d58321dbfea0473d01fd513ffa84132a0138d82ead5fd705264d12a5dd1b04864c00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000",
...
  "Midstate": "4e3b9b00f856803067ebe0aa4026eac253a77a70374d6e490b50c947d549f74e"


Мой код:
Код:
использовать Digest :: ША дш / sha256_hex /;
$ Data = '000000014e010ed08a87644d4a7d9b9852e8d0c5f5d3fc253917fc2b0000201600000000cec99c8365ef81d58321dbfea0473d01fd513ffa84132a0138d82ead'; # Первые 64 байта
$ Data_raw = упаковка ("ЧАС*", $ Данных); # Распаковать его в виде строки байтов
Распечатать "sha_raw = " , sha256_hex ($ data_raw). "\ п";

$ Data_swapped = упаковка "N *", распаковать "V *", $ Данных; # Обратный порядок байт подкачки
Распечатать "sha_swapped = " , sha256_hex ($ data_swapped). "\ п";

Вывод:
Код:
sha_raw = bb4c09641e2d71c977b78edfd86c9793251e8e03f7ea211dcf7c71b7e231c7ac
sha_swapped = 8cbe144c95e66e244959719dabc1cfd4812275548ba099d78361fad1bfa7123b

Кто-нибудь может помочь мне в этом?
j16sdiz сейчас офлайн Пожаловаться на j16sdiz   Ответить с цитированием Мультицитирование сообщения от j16sdiz Быстрый ответ на сообщение j16sdiz


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


23 декабря 2010, 3:00:45 AM   # 2
 
 
Сообщений: 92
Цитировать по имени
цитировать ответ
по умолчанию Re: Что же такое Midstate? (Пытается декодировать данные JSON в Perl)

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





SHA256 подготавливает входные данные пути добавления отступов и поле длины к концу этого, так что общий вход заканчивает тем, что кратно 64 байт.

"данные" Строка вам даются есть этот шаг подготовки сделана уже, что означает, что вы не можете просто кормить его в нормальную функцию хеширования, как sha256_hex и ожидать, что правильный результат (потому что sha256_hex будет делать этот шаг подготовки снова).

Читайте о том, как работает SHA256. Midstate это внутреннее состояние после обработки первого блока 64 байт.

(Кроме того, в строке кода, который меняет местами данные, вы имели в виду использовать $ data_raw вместо $ данные, не так ли?)
Стреловые сейчас офлайн Пожаловаться на гусек   Ответить с цитированием Мультицитирование сообщения от фока Быстрый ответ на сообщение стаксель

23 декабря 2010, 3:58:18 AM   # 3
 
 
Сообщений: 37
Цитировать по имени
цитировать ответ
по умолчанию Re: Что же такое Midstate? (Пытается декодировать данные JSON в Perl)

хмм ... 
Я делаю это потому, что нет модуля Perl позволяет мне получить доступ к SHA256 внутренностям (по крайней мере, без сохранения состояния на диск).

Имеет ли это означает, что нет никакого способа, с помощью ОС-функции при условии, что крипто сделать полную sha256 хэш работу?
я думаю  "с помощью" код делать дополнительные прокладки, а также, или делает это?
j16sdiz сейчас офлайн Пожаловаться на j16sdiz   Ответить с цитированием Мультицитирование сообщения от j16sdiz Быстрый ответ на сообщение j16sdiz

23 декабря 2010, 4:03:11 AM   # 4
 
 
Сообщений: 92
Цитировать по имени
цитировать ответ
по умолчанию Re: Что же такое Midstate? (Пытается декодировать данные JSON в Perl)

Вы можете использовать криптографические функции: Игнорируйте Midstate, занимают первые 80 байт (я думаю) данные (т.е. самих данных, но не отступ) и хэш.

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

23 декабря 2010, 5:25:42 AM   # 5
 
 
Сообщения: 4
Цитировать по имени
цитировать ответ
по умолчанию Re: Что же такое Midstate? (Пытается декодировать данные JSON в Perl)

На самом деле я уверен, что вы можете использовать встроенный в крипто без каких-либо изменений, так как он уже кратен 64 не будет пытаться раздуть его.

код Python делает его очень просто:
Код:
    Защиту checkwork (блок, difficulty_rep):
        s = hashlib.sha256 (block.decode ( 'шестигранной'))
        Val = INT (s.hexdigest (), 16)
        Diff = INT (difficulty_rep, 16)
        вернуться Вэл < разница
Тайки сейчас офлайн Пожаловаться на Тайке   Ответить с цитированием Мультицитирование сообщения от Тайки Быстрый ответ на сообщение Тайки

25 декабря 2010, 2:45:12 AM   # 6
 
 
Сообщения: 196
Цитировать по имени
цитировать ответ
по умолчанию Re: Что же такое Midstate? (Пытается декодировать данные JSON в Perl)

На самом деле я уверен, что вы можете использовать встроенный в крипто без каких-либо изменений, так как он уже кратен 64 не будет пытаться раздуть его.

Стандартный хэш-процедура будет добавить еще 64 байт, то. Это не только обивка, это значение длины и терминатор бит.
ЛЧМ сейчас офлайн Пожаловаться на ЛОМ   Ответить с цитированием Мультицитирование сообщения от ЛОГО Быстрый ответ на сообщение ЛЧМ

25 декабря 2010, 2:48:58 AM   # 7
 
 
Сообщения: 196
Цитировать по имени
цитировать ответ
по умолчанию Re: Что же такое Midstate? (Пытается декодировать данные JSON в Perl)

Я делаю это потому, что нет модуля Perl позволяет мне получить доступ к SHA256 внутренностям (по крайней мере, без сохранения состояния на диск).

Имеет ли это означает, что нет никакого способа, с помощью ОС-функции при условии, что крипто сделать полную sha256 хэш работу?
я думаю  "с помощью" код делать дополнительные прокладки, а также, или делает это?

игнорировать Midstate и использовать только первые 80 байт данных, если вы используете стандартную библиотеку SHA256. Я использовал libgcrypt так же (это медленно Тхо). Вы можете также игнорировать хэш / hash1 поле, передаваемое, просто использовать свой собственный. Затем вернуть данные с одноразовым номером вставленного если вы нашли кандидат хэш.

Использование стандартных библиотек SHA256 вы, вероятно, также необходимо отменить байты свопов на поле данных. И reswap данных, чтобы вернуть его.

ЛЧМ сейчас офлайн Пожаловаться на ЛОМ   Ответить с цитированием Мультицитирование сообщения от ЛОГО Быстрый ответ на сообщение ЛЧМ

30 декабря 2010, 6:55:05 AM   # 8
 
 
Сообщений: 37
Цитировать по имени
цитировать ответ
по умолчанию Re: Что же такое Midstate? (Пытается декодировать данные JSON в Perl)

На самом деле я уверен, что вы можете использовать встроенный в крипто без каких-либо изменений, так как он уже кратен 64 не будет пытаться раздуть его.

код Python делает его очень просто:
Код:
   Защиту checkwork (блок, difficulty_rep):
        s = hashlib.sha256 (block.decode ( 'шестигранной'))
        Val = INT (s.hexdigest (), 16)
        Diff = INT (difficulty_rep, 16)
        вернуться Вэл < разница

что это "блок" объект?

Я пытался вывести некоторый хэш от "cpuminer" и повторить его в Perl без успеха:

Perl-код:
Код:
#! / USR / бен / Perl
использовать Digest :: ША дш / sha256_hex /;

$ Сырой = пакет 'H *', '00000001258124a1e0837367309ed9433af69c741513067793bf1f490000c0c800000000f2a45d9b1294bf78d27fe1d77558fbedf2b1eb37bb5f1808d7b77e33d809b8fb4d1c26d21b04864c01000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000';

$ Голова = зиЬзЬги ($ сырых, 0, 0x80); # 80 первый байт
$ Head_le = упаковка "N *", распаковать "V *", $ Голова; # 80 первый байт, обратный порядок байт-местами

печать sha256_hex ($ голова), "\ п";
печать sha256_hex ($ head_le), "\ п";


мой выход:
Код:
feca1e6a511bf10a01177086ae141115f0d554fc8758c640b81f9d3121d6cbc9
06f33a488390fb281b7d2fc68140a7ad69f8397caa04475c7f65f0b5f3f4922f


Выход генерируется с CPU-шахтера:
Код:
DBG: данные:
 00000001258124a1e0837367309ed9433af69c741513067793bf1f490000c0c800000000f2a45d9b1294bf78d27fe1d77558fbedf2b1eb37bb5f1808d7b77e33d809b8fb4d1c26d21b04864c01000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000
DBG: hash1:
 697c6991ecddeb98d9af8f02a249b7e4006c8ae107a0991d4be8a88f4c9fcf1b
DBG: Хэш:    
 924638a8a492065a924f699ca1c13dd1fb4af43bb1c6d9ce8cab2e9bb6189ea7


патч я снова использовал cpuminer:

Код:
дифференциал --git а / sha256_generic.c б / sha256_generic.c
Индекс 444e913..b9ba930 100644
--- а / sha256_generic.c
+++ б / sha256_generic.c
@@ -250,11 +250,23 @@ BOOL scanhash_c (Const символ без знака * Midstate, неподписанные символ * данные,
                п ++;
                * Nonce = п;

+символ * вс;
+HS = bin2hex (данные - 64, 128);
+fprintf (STDERR, "DBG: данные: \ п% s \ п", HS);
+Свободный (HS);
+
                runhash (hash1, данные, Midstate);
                runhash (хэш, hash1, sha256_init_state);

                stat_ctr ++;

+HS = bin2hex (hash1, 32);
+fprintf (STDERR, "DBG: hash1: \ п% s \ п", HS);
+Свободный (HS);
+HS = bin2hex (хэш, 32);
+fprintf (STDERR, "DBG: Хэш: \ п% s \ п", HS);
+Свободный (HS);
+
j16sdiz сейчас офлайн Пожаловаться на j16sdiz   Ответить с цитированием Мультицитирование сообщения от j16sdiz Быстрый ответ на сообщение j16sdiz

6 апреля 2011, 5:07:14 PM   # 9
 
 
Сообщений: 10
Цитировать по имени
цитировать ответ
по умолчанию Re: Что же такое Midstate? (Пытается декодировать данные JSON в Perl)


Я нашел две проблемы с этим PERL кодом. Вам нужны первые 80 байт, а не 0x80. Во-вторых, вычислить обратно обратным порядком байтов, чтобы получить тот же результат, как шахтер:

Код:
#! / USR / бен / Perl
использовать Digest'-:: SHA КЯ / SHA256 /;

$ Сырой = пакет 'H *', '00000001258124a1e0837367309ed9433af69c741513067793bf1f490000c0c800000000f2a45d9b1294bf78d27fe1d77558fbedf2b1eb37bb5f1808d7b77e33d809b8fb4d1c26d21b04864c01000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000';
$ короткие = $ зиЬзЬг (сырье, 0, 80); # 80 первый байт

$ Short_le = упаковка "N *", распаковать "V *", $ Короткая; # Для Little Endian

Распечатать "short_le:", Распаковать ("ЧАС*", $ Short_le), "\ п";

$ Hash1 = sha256 ($ short_le);
$ Хеш = sha256 (sha256 ($ short_le));

$ Hash1_be = упаковка "N *", Распаковать ("V *", $ Hash1); # BE снова
$ Hash_be = упаковка "N *", Распаковать ("V *", $ Хэш);
Распечатать "hash1:  ", Распаковать ("ЧАС*", $ Hash1_be), "\ п";
Распечатать "хэш:   ", Распаковать ("ЧАС*", $ Hash_be), "\ п";
secmff сейчас офлайн Пожаловаться на secmff   Ответить с цитированием Мультицитирование сообщения от secmff Быстрый ответ на сообщение secmff



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW