Когда-либо имел кусок шестнадцатеричных или двоичный от сети BTC / файлов, которые вы хотели помочь в идентификации? Ну, вот скрипт, который делает это для вас! Найдем все блочные заголовки главной сети, TX-ые года, хэш, публичные ключи, адрес, скрипты и общие двоичные строки (числа, магических verack, адр, и т.д.). Клон моего GIT репозитория в https://github.com/etotheipi/PyBtcEngine , или просто загрузить два файла: pybtcengine.py и mysteryHex.py. Вот простой пример:
Код:
./mysteryHex.py 04fc8ad7af7e5bbc66d1bac090855d9d4eedc59a38bba2847e3ee23a1d3d4270ed71f5596409ab7c9601482671216e381fd506be2cccbb2350f44cc3aaa2bd0fbb012345f9beb4d9
$
Найденный:
0x0000: AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA
0x0020: AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA
0x0040: AA ------ BBBBBBBB
A: BarePublicKey: 1HdjH5Rgnsrn5PPWAQDWwmU2cxk5huXqm2
B: MagicNum: Основные сетевые магические байты (f9beb4d9)
$
Найденный:
0x0000: AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA
0x0020: AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA AAAAAAAA
0x0040: AA ------ BBBBBBBB
A: BarePublicKey: 1HdjH5Rgnsrn5PPWAQDWwmU2cxk5huXqm2
B: MagicNum: Основные сетевые магические байты (f9beb4d9)
Если ничего другого, вы можете использовать этот инструмент преобразования открытых ключей строки в соответствующий адрес. Но это своего рода скучный ... давайте посмотрим на что-то более сложное. Скачать dataIDTest.hex из моего репозитория:
Код:
$ ./mysteryHex.py -s -f dataIDTest.hex
################################################## ##################################################
Найдено: BlockHeader
Размер: 80 байт
Б: от 4 до 84 (0x00000004 до 0x00000054)
0x0000: -------- 01000000 55bd840a 78798ad0 da853f68 974f3d18 3e2bd1db 6a842c1f
0x0020: eecf222a 00000000 ff104ccb 05421ab9 3e63f8c3 ce5c2c2e 9dbb37de 2764b3a3
0x0040: 175c8166 562cac7d 51b96a49 ffff001d 283e9e70 -------- -------- --------
0x0060: -------- -------- -------- -------- -------- -------- -------- --------
0x0080: -------- -------- -------- -------- -------- -------- -------- --------
0x00a0: -------- -------- -------- -------- -------- -------- -------- --------
0x00c0: -------- -------- -------- -------- -------- -------- -------- --------
0x00e0: -------- -------- -------- -------- -------- -------- -------- --------
0x0100: -------- -------- -------- -------- -------- -------- -------- --------
0x0120: -------- -------- -------- -------- -------- -------- -------- --------
0x0140: -------- -------- -------- -------- -------- -------- -------- --------
0x0160: -------- -------- -------- -------- -------- -------- -------- --------
0x0180: -------- -------- -------- -------- -------- -------- -------- --------
0x01a0: -------- -------- -------- -------- -------- -------- -------- --------
0x01c0: -------- -------- -------- -------- -------- -------- -------- --------
0x01e0: -------- -------- -------- -------- -------- -------- -------- --------
0x0200: -------- -------- -------- -------- -------- -------- -------- --------
0x0220: -------- -------- -------- -------- -------- -------- -------- --------
0x0240: -------- -------- -------- -------- -------- -------- ------
BlockHeader:
Хэш: 00000000d1145790a8694403d4063f323d499e655c83426834d4ce2f8dd4a2ee (BE)
Версия: 1
PrevBlock: 000000002a22cfee1f2c846adbd12b3e183d4f97683f85dad08a79780a84bd55 (BE)
MerkRoot: 7dac2c5666815c17a3b36427de37bb9d2e2c5ccec3f8633eb91a4205cb4c10ff (BE)
Отметка: 1231731025
Сложность: ffff001d
Нонс: 1889418792
################################################## ##################################################
Найдено: Транзакция
Размер: 134 байт
Б: от 150 до 284 (0x00000096 до 0x0000011c)
0x0000: -------- -------- -------- -------- -------- -------- -------- --------
0x0020: -------- -------- -------- -------- -------- -------- -------- --------
0x0040: -------- -------- -------- -------- -------- -------- -------- --------
0x0060: -------- -------- -------- -------- -------- -------- -------- --------
0x0080: -------- -------- -------- -------- -------- ---- 0100 00000100 00000000
0x00a0: 00000000 00000000 00000000 00000000 00000000 00000000 000000ff ffffff07
0x00c0: 04ffff00 1d0102ff ffffff01 00f2052a 01000000 434104d4 6c4968bd e02899d2
0x00e0: aa096336 7c7a6ce3 4eec332b 32e42e5f 3407e052 d64ac625 da6f0718 e7b30214
0x0100: 0434bd72 5706957c 092db538 05b821a8 5b23a7ac 61725bac 00000000 --------
0x0120: -------- -------- -------- -------- -------- -------- -------- --------
0x0140: -------- -------- -------- -------- -------- -------- -------- --------
0x0160: -------- -------- -------- -------- -------- -------- -------- --------
0x0180: -------- -------- -------- -------- -------- -------- -------- --------
0x01a0: -------- -------- -------- -------- -------- -------- -------- --------
0x01c0: -------- -------- -------- -------- -------- -------- -------- --------
0x01e0: -------- -------- -------- -------- -------- -------- -------- --------
0x0200: -------- -------- -------- -------- -------- -------- -------- --------
0x0220: -------- -------- -------- -------- -------- -------- -------- --------
0x0240: -------- -------- -------- -------- -------- -------- ------
Сделка:
TxHash: 82501c1178fa0b222c1f3d474ec726b832013f0a532b44bb620cce8624a5feb1
Версия: 1
nInputs: 1
nOutputs: 1
Locktime: 0
Входы:
TxIn:
минус:
PrevTxHash: 0000000000000000000000000000000000000000000000000000000000000000 (BE)
TxOutIndex: 4294967295
Сценарий: (SignatureForCoinbaseTx)
Seq: 4294967295
Выходы:
TxOut:
Значение: 5000000000 (50,0)
Сценарий: Публичный (1PSSGeFHDnKNxiEyFrD1wcEaHr9hrQDDWc) OP_CHECKSIG
################################################## ##################################################
Найдено: Транзакция
Размер: 275 байт
Б 284 до 559 (0x0000011c к 0x0000022f)
0x0000: -------- -------- -------- -------- -------- -------- -------- --------
0x0020: -------- -------- -------- -------- -------- -------- -------- --------
0x0040: -------- -------- -------- -------- -------- -------- -------- --------
0x0060: -------- -------- -------- -------- -------- -------- -------- --------
0x0080: -------- -------- -------- -------- -------- -------- -------- --------
0x00a0: -------- -------- -------- -------- -------- -------- -------- --------
0x00c0: -------- -------- -------- -------- -------- -------- -------- --------
0x00e0: -------- -------- -------- -------- -------- -------- -------- --------
0x0100: -------- -------- -------- -------- -------- -------- -------- 01000000
0x0120: 01c997a5 e56e1041 02fa209c 6a852dd9 0660a20b 2d9c3524 23edce25 857fcd37
0x0140: 04000000 00484730 4402204e 45e16932 b8af5149 61a1d3a1 a25fdf3f 4f7732e9
0x0160: d624c6c6 1548ab5f b8cd4102 20181522 ec8eca07 de4860a4 acdd1290 9d831cc5
0x0180: 6cbbac46 22082221 a8768d1d 0901ffff ffff0200 ca9a3b00 00000043 4104ae1a
0x01a0: 62fe09c5 f51b1390 5f07f06b 99a2f715 9b2225f3 74cd378d 71302fa2 8414e7aa
0x01c0: b37397f5 54a7df5f 142c21c1 b7303b8a 0626f1ba ded5c72a 704f7e6c d84cac00
0x01e0: 286bee00 00000043 410411db 93e1dcdb 8a016b49 840f8c53 bc1eb68a 382e97b1
0x0200: 482ecad7 b148a690 9a5cb2e0 eaddfb84 ccf97444 64f82e16 0bfa9b8b 64f9d4c0
0x0220: 3f999b86 43f656b4 12a3ac00 000000-- -------- -------- -------- --------
0x0240: -------- -------- -------- -------- -------- -------- ------
Сделка:
TxHash: 169e1e83e930853391bc6f35f605c6754cfead57cf8387639d3b4096c54f18f4
Версия: 1
nInputs: 1
nOutputs: 2
Locktime: 0
Входы:
TxIn:
минус:
PrevTxHash: 0437cd7f8525ceed2324359c2d0ba26006d92d856a9c20fa0241106ee5a597c9 (BE)
TxOutIndex: 0
Сценарий: (SignatureForCoinbaseTx)
Seq: 4294967295
Выходы:
TxOut:
Значение: 1000000000 (10,0)
Сценарий: Публичный (1Q2TWHE3GMdB6BZKafqwxXtWAWgFt5Jvm3) OP_CHECKSIG
TxOut:
Значение: 4000000000 (40,0)
Сценарий: Публичный (12cbQLTFMXRnSzktFkuoG3eHoMeFtpTu3S) OP_CHECKSIG
################################################## ##################################################
Другие сортировали вещи:
0x0000: AAAAAAAA -------- -------- -------- -------- -------- ------- - --------
0x0020: -------- -------- -------- -------- -------- -------- -------- --------
0x0040: -------- -------- -------- -------- -------- BBBBBBBB BBBBBBBB BBBBBBBB
0x0060: BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB
0x0080: BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BB ------ -------- --------
0x00a0: -------- -------- -------- -------- -------- -------- -------- --------
0x00c0: -------- -------- -------- -------- -------- -------- -------- --------
0x00e0: -------- -------- -------- -------- -------- -------- -------- --------
0x0100: -------- -------- -------- -------- -------- -------- -------- --------
0x0120: -------- -------- -------- -------- -------- -------- -------- --------
0x0140: -------- -------- -------- -------- -------- -------- -------- --------
0x0160: -------- -------- -------- -------- -------- -------- -------- --------
0x0180: -------- -------- -------- -------- -------- -------- -------- --------
0x01a0: -------- -------- -------- -------- -------- -------- -------- --------
0x01c0: -------- -------- -------- -------- -------- -------- -------- --------
0x01e0: -------- -------- -------- -------- -------- -------- -------- --------
0x0200: -------- -------- -------- -------- -------- -------- -------- --------
0x0220: -------- -------- -------- -------- -------- -------- ------ CC CCCCCCCC
0x0240: CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC CCCCCC
A: MagicNum: Основные сетевые магические байты (f9beb4d9)
Б: BarePublicKey: 15VihAPHSVKRyCbWLBbysJnXhmpta8MBJJ
С: HeaderHash (BE): 000000000000043dd94eb922fbf4e21eedf05f7af1ec5477470955c523bfdd6c
################################################## ##################################################
Найдено: BlockHeader
Размер: 80 байт
Б: от 4 до 84 (0x00000004 до 0x00000054)
0x0000: -------- 01000000 55bd840a 78798ad0 da853f68 974f3d18 3e2bd1db 6a842c1f
0x0020: eecf222a 00000000 ff104ccb 05421ab9 3e63f8c3 ce5c2c2e 9dbb37de 2764b3a3
0x0040: 175c8166 562cac7d 51b96a49 ffff001d 283e9e70 -------- -------- --------
0x0060: -------- -------- -------- -------- -------- -------- -------- --------
0x0080: -------- -------- -------- -------- -------- -------- -------- --------
0x00a0: -------- -------- -------- -------- -------- -------- -------- --------
0x00c0: -------- -------- -------- -------- -------- -------- -------- --------
0x00e0: -------- -------- -------- -------- -------- -------- -------- --------
0x0100: -------- -------- -------- -------- -------- -------- -------- --------
0x0120: -------- -------- -------- -------- -------- -------- -------- --------
0x0140: -------- -------- -------- -------- -------- -------- -------- --------
0x0160: -------- -------- -------- -------- -------- -------- -------- --------
0x0180: -------- -------- -------- -------- -------- -------- -------- --------
0x01a0: -------- -------- -------- -------- -------- -------- -------- --------
0x01c0: -------- -------- -------- -------- -------- -------- -------- --------
0x01e0: -------- -------- -------- -------- -------- -------- -------- --------
0x0200: -------- -------- -------- -------- -------- -------- -------- --------
0x0220: -------- -------- -------- -------- -------- -------- -------- --------
0x0240: -------- -------- -------- -------- -------- -------- ------
BlockHeader:
Хэш: 00000000d1145790a8694403d4063f323d499e655c83426834d4ce2f8dd4a2ee (BE)
Версия: 1
PrevBlock: 000000002a22cfee1f2c846adbd12b3e183d4f97683f85dad08a79780a84bd55 (BE)
MerkRoot: 7dac2c5666815c17a3b36427de37bb9d2e2c5ccec3f8633eb91a4205cb4c10ff (BE)
Отметка: 1231731025
Сложность: ffff001d
Нонс: 1889418792
################################################## ##################################################
Найдено: Транзакция
Размер: 134 байт
Б: от 150 до 284 (0x00000096 до 0x0000011c)
0x0000: -------- -------- -------- -------- -------- -------- -------- --------
0x0020: -------- -------- -------- -------- -------- -------- -------- --------
0x0040: -------- -------- -------- -------- -------- -------- -------- --------
0x0060: -------- -------- -------- -------- -------- -------- -------- --------
0x0080: -------- -------- -------- -------- -------- ---- 0100 00000100 00000000
0x00a0: 00000000 00000000 00000000 00000000 00000000 00000000 000000ff ffffff07
0x00c0: 04ffff00 1d0102ff ffffff01 00f2052a 01000000 434104d4 6c4968bd e02899d2
0x00e0: aa096336 7c7a6ce3 4eec332b 32e42e5f 3407e052 d64ac625 da6f0718 e7b30214
0x0100: 0434bd72 5706957c 092db538 05b821a8 5b23a7ac 61725bac 00000000 --------
0x0120: -------- -------- -------- -------- -------- -------- -------- --------
0x0140: -------- -------- -------- -------- -------- -------- -------- --------
0x0160: -------- -------- -------- -------- -------- -------- -------- --------
0x0180: -------- -------- -------- -------- -------- -------- -------- --------
0x01a0: -------- -------- -------- -------- -------- -------- -------- --------
0x01c0: -------- -------- -------- -------- -------- -------- -------- --------
0x01e0: -------- -------- -------- -------- -------- -------- -------- --------
0x0200: -------- -------- -------- -------- -------- -------- -------- --------
0x0220: -------- -------- -------- -------- -------- -------- -------- --------
0x0240: -------- -------- -------- -------- -------- -------- ------
Сделка:
TxHash: 82501c1178fa0b222c1f3d474ec726b832013f0a532b44bb620cce8624a5feb1
Версия: 1
nInputs: 1
nOutputs: 1
Locktime: 0
Входы:
TxIn:
минус:
PrevTxHash: 0000000000000000000000000000000000000000000000000000000000000000 (BE)
TxOutIndex: 4294967295
Сценарий: (SignatureForCoinbaseTx)
Seq: 4294967295
Выходы:
TxOut:
Значение: 5000000000 (50,0)
Сценарий: Публичный (1PSSGeFHDnKNxiEyFrD1wcEaHr9hrQDDWc) OP_CHECKSIG
################################################## ##################################################
Найдено: Транзакция
Размер: 275 байт
Б 284 до 559 (0x0000011c к 0x0000022f)
0x0000: -------- -------- -------- -------- -------- -------- -------- --------
0x0020: -------- -------- -------- -------- -------- -------- -------- --------
0x0040: -------- -------- -------- -------- -------- -------- -------- --------
0x0060: -------- -------- -------- -------- -------- -------- -------- --------
0x0080: -------- -------- -------- -------- -------- -------- -------- --------
0x00a0: -------- -------- -------- -------- -------- -------- -------- --------
0x00c0: -------- -------- -------- -------- -------- -------- -------- --------
0x00e0: -------- -------- -------- -------- -------- -------- -------- --------
0x0100: -------- -------- -------- -------- -------- -------- -------- 01000000
0x0120: 01c997a5 e56e1041 02fa209c 6a852dd9 0660a20b 2d9c3524 23edce25 857fcd37
0x0140: 04000000 00484730 4402204e 45e16932 b8af5149 61a1d3a1 a25fdf3f 4f7732e9
0x0160: d624c6c6 1548ab5f b8cd4102 20181522 ec8eca07 de4860a4 acdd1290 9d831cc5
0x0180: 6cbbac46 22082221 a8768d1d 0901ffff ffff0200 ca9a3b00 00000043 4104ae1a
0x01a0: 62fe09c5 f51b1390 5f07f06b 99a2f715 9b2225f3 74cd378d 71302fa2 8414e7aa
0x01c0: b37397f5 54a7df5f 142c21c1 b7303b8a 0626f1ba ded5c72a 704f7e6c d84cac00
0x01e0: 286bee00 00000043 410411db 93e1dcdb 8a016b49 840f8c53 bc1eb68a 382e97b1
0x0200: 482ecad7 b148a690 9a5cb2e0 eaddfb84 ccf97444 64f82e16 0bfa9b8b 64f9d4c0
0x0220: 3f999b86 43f656b4 12a3ac00 000000-- -------- -------- -------- --------
0x0240: -------- -------- -------- -------- -------- -------- ------
Сделка:
TxHash: 169e1e83e930853391bc6f35f605c6754cfead57cf8387639d3b4096c54f18f4
Версия: 1
nInputs: 1
nOutputs: 2
Locktime: 0
Входы:
TxIn:
минус:
PrevTxHash: 0437cd7f8525ceed2324359c2d0ba26006d92d856a9c20fa0241106ee5a597c9 (BE)
TxOutIndex: 0
Сценарий: (SignatureForCoinbaseTx)
Seq: 4294967295
Выходы:
TxOut:
Значение: 1000000000 (10,0)
Сценарий: Публичный (1Q2TWHE3GMdB6BZKafqwxXtWAWgFt5Jvm3) OP_CHECKSIG
TxOut:
Значение: 4000000000 (40,0)
Сценарий: Публичный (12cbQLTFMXRnSzktFkuoG3eHoMeFtpTu3S) OP_CHECKSIG
################################################## ##################################################
Другие сортировали вещи:
0x0000: AAAAAAAA -------- -------- -------- -------- -------- ------- - --------
0x0020: -------- -------- -------- -------- -------- -------- -------- --------
0x0040: -------- -------- -------- -------- -------- BBBBBBBB BBBBBBBB BBBBBBBB
0x0060: BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB
0x0080: BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BB ------ -------- --------
0x00a0: -------- -------- -------- -------- -------- -------- -------- --------
0x00c0: -------- -------- -------- -------- -------- -------- -------- --------
0x00e0: -------- -------- -------- -------- -------- -------- -------- --------
0x0100: -------- -------- -------- -------- -------- -------- -------- --------
0x0120: -------- -------- -------- -------- -------- -------- -------- --------
0x0140: -------- -------- -------- -------- -------- -------- -------- --------
0x0160: -------- -------- -------- -------- -------- -------- -------- --------
0x0180: -------- -------- -------- -------- -------- -------- -------- --------
0x01a0: -------- -------- -------- -------- -------- -------- -------- --------
0x01c0: -------- -------- -------- -------- -------- -------- -------- --------
0x01e0: -------- -------- -------- -------- -------- -------- -------- --------
0x0200: -------- -------- -------- -------- -------- -------- -------- --------
0x0220: -------- -------- -------- -------- -------- -------- ------ CC CCCCCCCC
0x0240: CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC CCCCCCCC CCCCCC
A: MagicNum: Основные сетевые магические байты (f9beb4d9)
Б: BarePublicKey: 15VihAPHSVKRyCbWLBbysJnXhmpta8MBJJ
С: HeaderHash (BE): 000000000000043dd94eb922fbf4e21eedf05f7af1ec5477470955c523bfdd6c
Обратите внимание на последнюю строку, что "HeaderHash" был помечен как определенных данных. Это происходит потому, что сценарий будет сканировать ваш blk0001.dat файл в каталоге Bitcoin, и построить сиюминутный словарь известного заголовка / Merkle / TX хэш для использования в поиске. Этот параметр (флаг -s) по умолчанию отключен, потому что это займет около 4 минут, чтобы обработать 1,5 миллиона транзакций в blk0001.dat первый раз сделано. Тем не менее, он будет помнить свой прогресс (хранит все в ./knownHashes.bin) и обновление только на основе новых блоков клиента получил, так как вы в последний раз запускали скрипт. Там нет никакой опасности в делать это время клиента открыт, и будет обновлять hashlist почти мгновенно на все будущие казни. Используйте флаг -s при каждом вызове, если вы хотите, чтобы эта функциональность.
Известные вопросы:
- Автоматическое определение каталога BTC было реализовано для Windows, Linux и Mac. Это работает для меня в Linux, но я не проверял его в ОС Windows или Mac. Пожалуйста, дайте мне знать, если он не работает.
- Testnet адрес может быть обработан в библиотеке, но он не реализован таким образом, легко получить доступ с помощью сценария. Вы должны изменить "USE_TESTNET" переменная в pybtcengine.py, а затем использовать «-r -k /path/to/testnet/blk0001.dat» пересканировать testnet blockchain для хэшей. Я буду работать на более-гибкое решение в ближайшем будущем.
- Для того, чтобы максимизировать полезность, я поставил библиотеку для печати все хэши в обратном порядке байт, так что шестнадцатеричные строки могут быть скопированы непосредственно в blockexplorer.com. Это не может быть предпочтительным поведением для всех. В будущем я добавлю флаг, который позволяет выбрать порядок байтов. (На самом деле, я бы предпочел, чтобы просто всегда печатать в прямой порядок байтов, и лоббировать блок-исследователь, чтобы искать со струнами LE)
В ходе выполнения:
- Поиск неопознанных байт для частных ключей, которые соответствуют открытым ключам найдены
- Включить флаг -t для работы с тест-сети
- Частичные поиски хэш
Я провел много времени полировки этого кода, поэтому он должен быть очень прочным. Пожалуйста, дайте мне знать (через ПМ), если вы обнаружите какие-либо ошибки, или разместить здесь, если у вас есть предложения по улучшению сценария. И, конечно же, пожалуйста, пожертвовать! Подставляя это вместе было не легко! 1Gffm7LKXcNFPrtxy6yF4JBoe5rVka4sn1
-Eto