|
2 сентября 2011, 12:33:04 AM | # 1 |
Сообщения: 588
цитировать ответ |
Re: Как прочитать блок-файл?
Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome" Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e подробнее... Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru Я просто хочу, чтобы прочитать информацию заголовка блока из файла блока. Есть ли простой C / C ++ сегмент кода, связанный с этой простой задачей? Так что я могу сделать некоторые изменения кода, чтобы использовать его для этой цели. Благодаря!
|
2 сентября 2011, 7:45:37 AM | # 2 |
Сообщения: 1428
цитировать ответ |
Re: Как прочитать блок-файл?
Получил 1806 Биткоинов
Реальная история. У меня нет кода непосредственно передо мной, и я очень мало времени. Но если это поможет, я делал это раньше, и это на самом деле довольно просто. Я просто не хватает времени, чтобы пойти выкопать свой исходный код прямо сейчас ... возможно, завтра, если у вас нет еще.
В blk0001.dat, первые четыре байта каждого блока является магическим числом (f9beb4d9). Далее следуют 4 байта, который является количество байтов в блоке, Н. Ниже 80 байт является заголовком. Тогда следующие N-80 является блок данных, которые могут быть проигнорированы. Промыть, повторите. |
4 сентября 2011, 1:04:34 AM | # 3 |
Сообщения: 1428
цитировать ответ |
Re: Как прочитать блок-файл?
Вот соответствующий код в моем проекте, хотя я вытащил много проверки vailidity и использую свои собственные структуры данных, так что это не напрямую использовать ... только в информационных целях. Но вы должны быть в состоянии адаптировать его к вашему проекту. Структура blk0001.dat на самом деле довольно проста:
Код: 4 | 4 | 80 | TxData | 4 | 4 | 80 | TxData | 4 | 4 | 80 | TxData | ... Первые 4 байта - волшебные байты (определение того, какие сети вы находитесь) Вторые 4 bytes- числа байт оставшегося блока Следующие 80 байт - сам блок заголовка NumBlockBytes-80 - Операционные данные в этом блоке [numTx | Прд1 | Tx2 | Tx3 | ...] Код: uint32_t importHeadersFromBlockFile (станд :: строка файла) { BinaryData thisHash (32); BinaryData magicNum (4); BinaryData thisHeaderSer (80) BlockHeader thisHeader; // Пока есть данные остаются в потоке (файл) ... в то время как (! bsb.isEof ()) { // Получить магические байты magicNum = bsb.reader () get_BinaryData (4). // Получить общее количество байтов в этом блоке (включая заголовок) numBlockBytes = bsb.reader () get_uint32_t (). // В случае, если я хочу, чтобы извлечь блок данных из файла позже uint64_t blkByteOffset = bsb.getFileByteLocation (); // Извлекает заголовок из данных блока thisHeaderSer = bsb.reader () get_BinaryData (80). // Интерпретировать данные заголовка и вычисления хэш thisHeader.unserialize (thisHeaderSer); thisHash = thisHeaderSer.getHash256Digest (); // Наконец, пропустить оставшуюся часть блока данных, потому что только потянув заголовки . Bsb.reader () заранее (numBlockBytes-80); } } |
4 сентября 2011, 6:43:31 AM | # 4 |
Сообщения: 588
цитировать ответ |
Re: Как прочитать блок-файл?
etotheipi, спасибо за объяснение детали.
|
7 сентября 2011, 4:57:10 AM | # 5 |
Сообщения: 1428
цитировать ответ |
Re: Как прочитать блок-файл?
Кстати, одна незначительная деталь я ушел из был тот факт, что btween заголовка и TxData это var_int дает вам количество сделок, включенных в этот блок.
Если вы заинтересованы в изучении других файлов, вы можете рассмотреть возможность использования моего инструмента mysteryHex, который поможет вам извлечь неизвестные форматы файлов: Проверьте связанный GIT репозиторий с помощью "мерзавец клон мерзавец: //github.com/etotheipi/PyBtcEngine.git" и запустить что-то вроде: Код: Python mysteryHex.py -b --byterange = 0,1000 -f ~ / .bitcoin / blk0001.dat Это позволит открыть файл blk0001.dat (-f) в двоичных (-b), и прочитать байты 0-1000. Затем он будет найти все узнаваемый в этой порции данных и отображение результатов визуально. Это весьма полезно для выявления случайных файлов / сериализованные фрагментов, или собирания помимо BTC форматов данных. |