21 апреля 2013, 9:33:36 PM   # 1
 
 
Сообщения: 266
Цитировать по имени
цитировать ответ
по умолчанию Re: Адрес поколения

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


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

Я понимаю процесс, я просто не могу заставить его работать правильно.

Пример генерации на вики имеет открытый ключ "0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A 299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6", Которые он затем говорит хешируется через SHA256, чтобы вернуться "600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408"
Однако, я постоянно получаю "32511e82d56dcea68eb774094e25bab0f8bdd9bc1eca1ceeda38c7a43aceddce",

Что я делаю не так?
Kontakt сейчас офлайн Пожаловаться на Kontakt   Ответить с цитированием Мультицитирование сообщения от Kontakt Быстрый ответ на сообщение Kontakt


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


21 апреля 2013, 9:39:26 PM   # 2
 
 
Сообщения: 1134
Цитировать по имени
цитировать ответ
по умолчанию Re: Адрес поколения

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





Открытый ключ, и еще более все шестнадцатеричные данные не должен использоваться как строки, они представляют собой двоичные данные
Например, строки "0123afz" является "3031323361667a" в шестнадцатеричном формате (см ASCII), иначе "\ X30 \ x31 \ x32 \ x33 \ x61 \ x66 \ x7a"

Делать неправильно
Делать это правильно

пс: посмотрите "Оригинальные байтов" тоже, и обратите внимание, как "045086 ..." как строка соответствует "303435303836 ..." в двоичной системе
jackjack сейчас офлайн Пожаловаться на jackjack   Ответить с цитированием Мультицитирование сообщения от jackjack Быстрый ответ на сообщение jackjack

21 апреля 2013, 10:17:56 PM   # 3
 
 
Сообщения: 266
Цитировать по имени
цитировать ответ
по умолчанию Re: Адрес поколения

Хорошо, что помогает, и я понимаю, что я делаю неправильно. Теперь мне просто нужно, чтобы выяснить, как на самом деле хранить шестигранные в C ++.
Kontakt сейчас офлайн Пожаловаться на Kontakt   Ответить с цитированием Мультицитирование сообщения от Kontakt Быстрый ответ на сообщение Kontakt

21 апреля 2013, 10:24:54 PM   # 4
 
 
Сообщения: 1134
Цитировать по имени
цитировать ответ
по умолчанию Re: Адрес поколения

Теперь мне просто нужно, чтобы выяснить, как на самом деле хранить шестигранные в C ++.
Я бы сказал, что вектор<голец>
Вы также можете использовать строки я считаю ... Но обратите внимание на «\ x00», это может закончиться неожиданно строка. Я не специалист шпагатом + двоичном + C ++, хотя, так что ждать, пока кто-нибудь не подтверждает и всегда стараюсь узнать, прежде чем доверять код
jackjack сейчас офлайн Пожаловаться на jackjack   Ответить с цитированием Мультицитирование сообщения от jackjack Быстрый ответ на сообщение jackjack

22 апреля 2013, 4:26:11 PM   # 5
 
 
Сообщения: 266
Цитировать по имени
цитировать ответ
по умолчанию Re: Адрес поколения

Я получил этот код, чтобы работать должным образом.

Код:
uint8_t * SHA2 (uint8_t * в, uint8_t * вне)
{
    SHA256 (в, 65, выход);
    вернуться вне;
}
uint8_t * hex_decode (Const символ * в, size_t Len, uint8_t * уходит)
{
    неподписанных INT I, т, кп, пер;

    для (Т = 0, г = 0; я < Len; I + = 2, ++, т)
    пер;
   

    вернуться вне;
}
Int основных ()
{
    символ pub_key [] = "0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6";
    uint8_t res_sha [32];
    uint8_t res_tmp [65];
    hex_decode (pub_key, 131, res_tmp);
    для (Int J = 0; J < 65; j ++)
        соиЬ << setw (2) << setfill ( '0') << наговор << (Интермедиат) res_tmp [J];
    соиЬ << епсИ << епсИ;
    SHA2 (res_tmp, res_sha);
    для (INT I = 0; я < 32; я ++)
        соиЬ << setw (2) << setfill ( '0') << наговор << (Интермедиат) res_sha [I];

    возвращать 0;
}
Kontakt сейчас офлайн Пожаловаться на Kontakt   Ответить с цитированием Мультицитирование сообщения от Kontakt Быстрый ответ на сообщение Kontakt

22 апреля 2013, 4:31:09 PM   # 6
 
 
Сообщения: 1610
Цитировать по имени
цитировать ответ
по умолчанию Re: Адрес поколения

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

22 апреля 2013, 8:19:49 PM   # 7
 
 
Сообщения: 266
Цитировать по имени
цитировать ответ
по умолчанию Re: Адрес поколения

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

22 апреля 2013, 8:59:24 PM   # 8
 
 
Сообщения: 252
Цитировать по имени
цитировать ответ
по умолчанию Re: Адрес поколения

Теперь я просто полностью застряли в преобразовании окончательного хэша в адрес base58.

Если у вас есть хэш ripemd160 и контрольная сумма 4 байта:

Код:
010966776006953D5567439E5E39F86A0D273BEED61967F6

то вы должны рассмотреть это число в прямой порядок байтов, вроде обычного базового 10 числа вы ежедневно, но в базе-16. Я показываю число в десятичном формате:

Код:
25420294593250030202636073700053352635053786165627414518

После этого вы получите символ последней base58 делает:

Код:
25420294593250030202636073700053352635053786165627414518 мод 58 = 20

А 20 соответствуют символ "M" в base58 алфавит используется в Bitcoin. затем

Код:
(25420294593250030202636073700053352635053786165627414518 - 20) / 58 =
438280941262931555217863339656092286811272175269438181

И этот процесс начинается снова для следующего символа. В конце у вас есть:

Код:
6UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM


Вы должны добавить "1" в начале:

Код:
16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM

И все готово!
Shevek сейчас офлайн Пожаловаться на Shevek   Ответить с цитированием Мультицитирование сообщения от Shevek Быстрый ответ на сообщение Shevek

22 апреля 2013, 9:02:48 PM   # 9
 
 
Сообщения: 2058
Цитировать по имени
цитировать ответ
по умолчанию Re: Адрес поколения

Теперь мне просто нужно, чтобы выяснить, как на самом деле хранить шестигранные в C ++.
Я бы сказал, что вектор<голец>
Вы также можете использовать строки я считаю ... Но обратите внимание на «\ x00», это может закончиться неожиданно строка. Я не специалист шпагатом + двоичном + C ++, хотя, так что ждать, пока кто-нибудь не подтверждает и всегда стараюсь узнать, прежде чем доверять код

или просто выделить 64 байт без знака полукокса. (Или любого размера, оно должно быть)
зиний сейчас офлайн Пожаловаться на зиний   Ответить с цитированием Мультицитирование сообщения от зиний Быстрый ответ на сообщение зиний

22 апреля 2013, 9:11:35 PM   # 10
 
 
Сообщения: 448
Цитировать по имени
цитировать ответ
по умолчанию Re: Адрес поколения

Shevek правильно, но это легче сказать, чем сделать. Одно небольшое уточнение, каждый из которых ведет нулевые байты должны быть заменены "1", Так что если хэш случился начать с \ x00 адрес будет начинаться с 11.

Вы, вероятно, хотите предварительно существующие BigInteger / bignumber библиотека делать что математику для вас. Это может даже включать в себя подпрограмму, которая уже делает базовые преобразования и просто нуждается в базе и алфавите. Base58 алфавит Bitcoin является "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz".
scintill сейчас офлайн Пожаловаться на scintill   Ответить с цитированием Мультицитирование сообщения от scintill Быстрый ответ на сообщение scintill

22 апреля 2013, 9:55:06 PM   # 11
 
 
Сообщения: 252
Цитировать по имени
цитировать ответ
по умолчанию Re: Адрес поколения

Одно небольшое уточнение, каждый из которых ведет нулевые байты должны быть заменены "1", Так что если хэш случился начать с \ x00 адрес будет начинаться с 11.

Uhmmm ... Вы уверены, что !?

Я думаю, что приводит «\ x00 отражают в более короткие адреса; в противном случае, вы не можете увидеть адреса, начинающиеся с "1R ...", "1S ...", "1T ..." и так далее; Второй символ дальше, чем "Q" возможно только в хэшей с ведущими «x00 годов
Shevek сейчас офлайн Пожаловаться на Shevek   Ответить с цитированием Мультицитирование сообщения от Shevek Быстрый ответ на сообщение Shevek

22 апреля 2013, 10:12:19 PM   # 12
 
 
Сообщения: 448
Цитировать по имени
цитировать ответ
по умолчанию Re: Адрес поколения

Uhmmm ... Вы уверены, что !?

Я думаю, что приводит «\ x00 отражают в более короткие адреса; в противном случае, вы не можете увидеть адреса, начинающиеся с "1R ...", "1S ...", "1T ..." и так далее; Второй символ дальше, чем "Q" возможно только в хэшей с ведущими «x00 годов

Это приводит к нулю байтов, Запомни. Они не могли повлиять на результаты главного персонажа, если бы это был прямой конверсии, верно? Несколько как писать 007345349 в десятичной системе, это не имеет значения, сколько нулей есть впереди. Но да, я уверен, что:

Ведущий символ «1», который имеет значение, равное нулю в base58, зарезервирован для представления целой ведущего нуля байт, как тогда, когда он находится в ведущем положении, не имеет значения, как символ базы-58. Там может быть один или несколько ведущих «, когда это необходимо для представления одного или нескольких ведущих нулевых байт 1 в.

Также в источник (Строка строится в обратном направлении), и посмотреть, 111kzsNZ1w27kSGXwyov1ZvUGVLJMvLmJ с тремя ведущими 1 и посмотрим, как его hash160 начинается с двух нулевых байтов.
scintill сейчас офлайн Пожаловаться на scintill   Ответить с цитированием Мультицитирование сообщения от scintill Быстрый ответ на сообщение scintill

23 апреля 2013, 4:00:20 AM   # 13
kjj
 
 
Сообщения: 1302
Цитировать по имени
цитировать ответ
по умолчанию Re: Адрес поколения

1 в base58 означает ноль. Это особый случай в начале строки означает 8 бит нуля. Это позволяет кодирование base58 для сохранения произвольных битовых строк, а не только целые числа.
kjj сейчас офлайн Пожаловаться на kjj   Ответить с цитированием Мультицитирование сообщения от kjj Быстрый ответ на сообщение kjj

23 апреля 2013, 5:55:18 AM   # 14
 
 
Сообщения: 266
Цитировать по имени
цитировать ответ
по умолчанию Re: Адрес поколения

Теперь я просто полностью застряли в преобразовании окончательного хэша в адрес base58.

Если у вас есть хэш ripemd160 и контрольная сумма 4 байта:

Код:
010966776006953D5567439E5E39F86A0D273BEED61967F6

то вы должны рассмотреть это число в прямой порядок байтов, вроде обычного базового 10 числа вы ежедневно, но в базе-16. Я показываю число в десятичном формате:

Код:
25420294593250030202636073700053352635053786165627414518

После этого вы получите символ последней base58 делает:

Код:
25420294593250030202636073700053352635053786165627414518 мод 58 = 20

А 20 соответствуют символ "M" в base58 алфавит используется в Bitcoin. затем

Код:
(25420294593250030202636073700053352635053786165627414518 - 20) / 58 =
438280941262931555217863339656092286811272175269438181

И этот процесс начинается снова для следующего символа. В конце у вас есть:

Код:
6UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM


Вы должны добавить "1" в начале:

Код:
16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM

И все готово!

Как конвертировать из шестнадцатеричной в десятичную, как у вас есть?
Kontakt сейчас офлайн Пожаловаться на Kontakt   Ответить с цитированием Мультицитирование сообщения от Kontakt Быстрый ответ на сообщение Kontakt

23 апреля 2013, 6:05:48 AM   # 15
 
 
Сообщения: 1610
Цитировать по имени
цитировать ответ
по умолчанию Re: Адрес поколения

Для адреса поколения, я рекомендую прочитать это https://en.bitcoin.it/wiki/Technical_background_of_Bitcoin_addresses.

Вот функция в C для шестнадцатеричной в двоичную, взятой из cgminer.

Код:
BOOL HEX2BIN (неподписанные символ * р, Const символ * hexstr, size_t длина)
{
BOOL RET = ложь;

в то время как (* hexstr && длина) {
символ hex_byte [4];
беззнаковое целочисленное значение v;

если (! hexstr [1]) {
вернуться в отставке;
}

MemSet (hex_byte, 0, 4);
hex_byte [0] = hexstr [0];
hex_byte [1] = hexstr [1];

если (sscanf (hex_byte, "%Икс", &v)! = 1) {
вернуться в отставке;
}

* Р = (символ без знака) v;

р ++;
hexstr + = 2;
len--;
}

если (вероятно (Len == 0 && * Hexstr == 0))
RET = TRUE;
вернуться в отставке;
}
Помните, помните 5 ноября сейчас офлайн Пожаловаться на Помните, помните 5 ноября   Ответить с цитированием Мультицитирование сообщения от Помните помню 5 ноября Быстрый ответ на сообщение Помните, помните 5 ноября

23 апреля 2013, 8:21:20 AM   # 16
 
 
Сообщения: 266
Цитировать по имени
цитировать ответ
по умолчанию Re: Адрес поколения

Для адреса поколения, я рекомендую прочитать это https://en.bitcoin.it/wiki/Technical_background_of_Bitcoin_addresses.

Вот функция в C для шестнадцатеричной в двоичную, взятой из cgminer.

Код:
BOOL HEX2BIN (неподписанные символ * р, Const символ * hexstr, size_t длина)
{
BOOL RET = ложь;

в то время как (* hexstr && длина) {
символ hex_byte [4];
беззнаковое целочисленное значение v;

если (! hexstr [1]) {
вернуться в отставке;
}

MemSet (hex_byte, 0, 4);
hex_byte [0] = hexstr [0];
hex_byte [1] = hexstr [1];

если (sscanf (hex_byte, "%Икс", &v)! = 1) {
вернуться в отставке;
}

* Р = (символ без знака) v;

р ++;
hexstr + = 2;
len--;
}

если (вероятно (Len == 0 && * Hexstr == 0))
RET = TRUE;
вернуться в отставке;
}

У меня есть эта страница в значительной степени запоминается в этой точке. XD

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

23 апреля 2013, 9:47:32 AM   # 17
 
 
Сообщения: 252
Цитировать по имени
цитировать ответ
по умолчанию Re: Адрес поколения

Uhmmm ... Вы уверены, что !?

Я думаю, что приводит «\ x00 отражают в более короткие адреса; в противном случае, вы не можете увидеть адреса, начинающиеся с "1R ...", "1S ...", "1T ..." и так далее; Второй символ дальше, чем "Q" возможно только в хэшей с ведущими «x00 годов

Это приводит к нулю байтов, Запомни. Они не могли повлиять на результаты главного персонажа, если бы это был прямой конверсии, верно? Несколько как писать 007345349 в десятичной системе, это не имеет значения, сколько нулей есть впереди. Но да, я уверен, что:


Да ты прав. Я путать ведущий HEX «x0» с ведущим байтом «x00».
Shevek сейчас офлайн Пожаловаться на Shevek   Ответить с цитированием Мультицитирование сообщения от Shevek Быстрый ответ на сообщение Shevek



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW