Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
9 февраля 2012, 11:56:01 PM   # 1
 
 
Сообщения: 154
Цитировать по имени
цитировать ответ
по умолчанию Re: Не могу правильно построить сообщение версии, чтобы поговорить с Bitcoin пэра

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


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

Пример сырой "версия" Сообщение Я посылаю:
Код:
F9BEB4D976657273696F6E000000000055000000B4C3000001000000000000009E5A344F00000000010000000000000000000000000000000000FFFF7F000010208D010000000000000000000000000000000000FFFF7F00001061A8CB0170F938EC13C700D6880200

Вышеуказанное сообщение распадается:
Код:
Начало: F9 BE B4 D9
Команда: 76 65 72 73 69 6F 6E 00 00 00 00 00
Длина: 55 00 00 00
Контрольная сумма:
Полезная нагрузка:
    Версия: B4 C3 00 00
    Услуги: 01 00 00 00 00 00 00 00
    Отметка: 9E 5A 34 4F 00 00 00 00
    RecipientAddress:
        Услуги: 01 00 00 00 00 00 00 00
        Ip: 00 00 00 00 00 00 00 00 00 00 FF FF 7F 00 00 10
        Порт: 20 8D
    SenderAddress:
        Услуги: 01 00 00 00 00 00 00 00
        Ip: 00 00 00 00 00 00 00 00 00 00 FF FF 7F 00 00 10
        Порт: 61 A8
    Нонс: CB 01 70 F9 38 EC 13 C7
    SubVersion: 00
    LastBlock: D6 88 02 00


Вот что я получаю в debug.log файле Bitcoin:
Код:
общепринятое соединение 127.0.0.1:63714
...
ProcessMessage MESSAGESTART НЕ НАЙДЕНО
...
не сокет никакого сообщения в первые 60 секунд, 1 0
отсоединения узла 127.0.0.1:63714

"ProcessMessage MESSAGESTART НЕ НАЙДЕНО" происходит от main.cpp вокруг линии 2342.
"не сокет никакого сообщения в первых 60 секундах" происходит от net.cpp, в непосредственной близости от конца.

Я пытался следовать спецификациям, как описано здесь: https://en.bitcoin.it/wiki/Protocol_specification (В частности, "структура сообщения", "Сетевой адрес" а также "Версия" разделы), но когда я отправить сообщение, я никогда не получить ответ, и Bitcoin жалуется на уже упомянутых ошибок (выше) в лог-файле.

Любые идеи относительно того, что я делаю неправильно в создании сообщения?
btc_artist сейчас офлайн Пожаловаться на btc_artist   Ответить с цитированием Мультицитирование сообщения от btc_artist Быстрый ответ на сообщение btc_artist


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


10 февраля 2012, 4:53:04 AM   # 2
 
 
Сообщения: 154
Цитировать по имени
цитировать ответ
по умолчанию Re: Не могу правильно построить сообщение версии, чтобы поговорить с Bitcoin пэра

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





Решено первую часть моей проблемы. Я больше не получаю "ProcessMessage MESSAGESTART НЕ НАЙДЕНО" Ошибка в файле debug.log, но когда я отправить "версия" сообщение Bitcoin, он не реагирует ни с чем, а в файле отладки, он закрывает соединение с "не сокет никакого сообщения в первых 60 секундах",

Есть идеи? Заранее спасибо.

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

10 февраля 2012, 5:02:56 AM   # 3
 
 
Сообщения: 2870
Цитировать по имени
цитировать ответ
по умолчанию Re: Не могу правильно построить сообщение версии, чтобы поговорить с Bitcoin пэра

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

10 февраля 2012, 5:14:28 AM   # 4
 
 
Сообщения: 154
Цитировать по имени
цитировать ответ
по умолчанию Re: Не могу правильно построить сообщение версии, чтобы поговорить с Bitcoin пэра

Хм, я?

У меня есть поле контрольной суммы в моем отладочный вывод, но, насколько я могу судить, я не отправлять его. В исходных данных, у меня есть 4 байта для длины "55 00 00 00", То он идет прямо к версии, которая "B4 C3 00 00",

Спасибо за ответ.

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

10 февраля 2012, 5:24:18 AM   # 5
 
 
Сообщения: 2870
Цитировать по имени
цитировать ответ
по умолчанию Re: Не могу правильно построить сообщение версии, чтобы поговорить с Bitcoin пэра

Ах, вы правы. Я просчитался байты.

Bitcoin действительно использует TCP.

Решено первую часть моей проблемы. Я больше не получаю "ProcessMessage MESSAGESTART НЕ НАЙДЕНО" Ошибка в файле debug.log

Что вы изменили, чтобы исправить это?
theymos сейчас офлайн Пожаловаться на theymos   Ответить с цитированием Мультицитирование сообщения от theymos Быстрый ответ на сообщение theymos

10 февраля 2012, 5:44:07 AM   # 6
 
 
Сообщения: 154
Цитировать по имени
цитировать ответ
по умолчанию Re: Не могу правильно построить сообщение версии, чтобы поговорить с Bitcoin пэра

Решено первую часть моей проблемы. Я больше не получаю "ProcessMessage MESSAGESTART НЕ НАЙДЕНО" Ошибка в файле debug.log

Что вы изменили, чтобы исправить это?
Я сделал элементарную ошибку, отправив сообщение как ASCII символы 0-9A-F, представляющих сообщения шестигранной кодировки, вместо фактического двоичного шестигранного сообщения. После изменения, что Bitcoin перестал жаловаться "MESSAGESTART НЕ НАЙДЕНО",

Я до сих пор не могу получить Bitcoin, чтобы ответить на мое сообщение, хотя, и он закрывает сокет через минуту с "не сокет никакого сообщения в первых 60 секундах" ошибка.

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

10 февраля 2012, 6:12:00 AM   # 7
 
 
Сообщения: 154
Цитировать по имени
цитировать ответ
по умолчанию Re: Не могу правильно построить сообщение версии, чтобы поговорить с Bitcoin пэра

Это странно ... если я дублировать весь мой двоичный "версия" сообщение, а также и отправить две копии этого вместе над гнездом, то я получаю различные результаты в файле debug.log.

Код:
общепринятое соединение 127.0.0.1:52191
...
версия сообщение: версия 50100, блоки = 17777
...
ProcessMessage MESSAGESTART НЕ НАЙДЕНО
...
не сокет никакого сообщения в первые 60 секунд, 1 0
отсоединения узла 127.0.0.1:52191

В то время как, если я не дублировать его, я только получаю:

Код:
общепринятое соединение 127.0.0.1:52191
...
не сокет никакого сообщения в первые 60 секунд, 1 0
отсоединения узла 127.0.0.1:52191

"версия сообщение: версия 50100, блоки = 17777" от послания, которое я послал.

Очень странно.

EDIT: Да, если я дублировать сообщение и отправить его дважды, то я сразу же начать получать версии, verack, INV, адр сообщения обратно.
btc_artist сейчас офлайн Пожаловаться на btc_artist   Ответить с цитированием Мультицитирование сообщения от btc_artist Быстрый ответ на сообщение btc_artist

10 февраля 2012, 3:58:09 PM   # 8
 
 
Сообщения: 154
Цитировать по имени
цитировать ответ
по умолчанию Re: Не могу правильно построить сообщение версии, чтобы поговорить с Bitcoin пэра

Обновление: Это не дублируется сообщение, что делает его работу. Полное сообщение Я посылаю длиной 105 байт. Если добавить по крайней мере 71 байт каких-либо данных в конце этого, то он работает. 70 байт или меньше, и это не работает. 71 байт или больше (на общую длину сообщения 176 байт или более записываемых в сокет) и она работает. Дополнительные данные могут быть что угодно (буквы, цифры, нулевые байты, и т.д.), и это работает.

Я до сих пор не могу объяснить, почему это ....

Обновление # 2: Наконец понял это. Существовал ошибка в моем коде, где некоторый код был вызывался дважды, в результате чего длина полезной нагрузки (в заголовке), чтобы рассчитывается неправильно. После фиксации, что не больше не нужны дополнительные байты.

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

27 сентября 2015, 9:28:09 AM   # 9
 
 
Сообщений: 26
Цитировать по имени
цитировать ответ
по умолчанию Re: Не могу правильно построить сообщение версии, чтобы поговорить с Bitcoin пэра

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



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW