думал, что, может быть, кто-то может использовать сценарий ниже. Я просто написал ее, чтобы проверить пару моих открытых ключей для повторно используемых значений R-подписи, которые позволяют генераторные закрытого ключ пострадавших первичных ключей. Сценарий очень легкий и использует urllib2 для загрузки данных из blockchain.info. Так что нет локального узла BTC не требуется. Скрипт работает только для ключей с до 50 ТХ. Если ваш ключ получил более 50 ТЕ вы должны добавить несколько строк (добавить цикл и использовать дополнительные API-параметры предел а также смещение для разбора через все сделки [50+]). Кроме того, сценарий содержит много отладки-вывода, которые вы можете просто прокомментировать или удалить.
Это OpenSource и бета программное обеспечение - ИСПОЛЬЗОВАТЬ НА СВОЙ СТРАХ И РИСК - выпущен под GNU Public License.
Код:
#! / USR / бен / питон
################################################## ###############################
# #
# .______ _______. ______ ___ __ .__. #
# | _ \ / | / | / \ | \ | | #
# | | _) | ______ | (---- `|, ----» / ^ \ | \ | | #
# | / | ______ | \ \ | | / / _ \ \ | , `| #
# | | \ \ ----. .----) | | `----./ _____ \ | | \ | #
# | _ | `._____ | | _______ / \ ______ / __ / \ __ \ | __ | \ __ | v0.1.2 #
# #
#GNU PL - 2015 - ca333 #
# #
#use НА СВОЙ СТРАХ И РИСК! #
################################################## ###############################
импорт JSON
импорт urllib2
время импорта
импорт SYS
# для какой-то причина blockchain.info Апи-цепи 59711 блоков короткая ..
blockstart = 170399
blockstart + = 59711
blockcount = urllib2.urlopen ("https://blockchain.info/de/q/getblockcount").читать()
Распечатать "WELCOME TO v0.1.2 R-сканирования!"
Распечатать "АДРЕС-R-SCAN: "
адр = raw_input ("Тип адрес: ")
urladdr = "https://blockchain.info/de/rawaddr/" + Ул (адрес)
#control апи-URL
печать urladdr
addrdata = json.load (urllib2.urlopen (urladdr))
Распечатать "Данные для Публичных: " + Ул (адрес)
Распечатать "Количество передатчиков: " + Str (addrdata [ 'n_tx'])
# ОЙ-деталь:
у = 0
входов = []
в то время как у < addrdata [ 'n_tx']:
Распечатать "################################################## ###############################"
Распечатать "TX NR:" + Ул (у + 1)
Распечатать "хэш: " + Str (addrdata [ 'TXS'] [Y] [ 'хэш'])
Распечатать "Количество входов: " + Str (addrdata [ 'TXS'] [Y] [ 'vin_sz'])
#только если
#if addrdata [ 'TXS'] [у] [ 'vin_sz'] > 1:
ZY = 0
в то время как з.ы. < addrdata [ 'TXS'] [у] [ 'vin_sz']:
Распечатать "Ввод-ScriptNR " + Ул (ZY + 1) " :" + Str (addrdata [ 'TXS'] [Y] [ 'входы'] [ZY] [ 'Скрипт'])
inputs.append (addrdata [ 'TXS'] [у] [ 'входы'] [з.ы.] [ 'сценарий'])
ZY + 1 =
у + 1 =
Распечатать "Для сравнения: "
XI = 0
Zi = 1
Lenx = Len (входы)
Оповещение = 0
#compare значения Sig в каждом входном скрипте
в то время как хи < Lenx-1:
х = 0
а х < Lenx-цзы:
если входы [XI] [10:74] == входы [х + Zi] [10:74]:
Распечатать "В Input NR: " + Ул (XI) + "[Глобальный прирост] " + Ул (входы [XI])
печать ( '\ а')
Распечатать "Resued R-значение: "
печать входов [х + Zi] [10:74]
Оповещение + = 1
х + 1 =
Zi + 1 =
xi + 1 =
# Проверяет дубликаты
#alert, когда все в порядке
если предупреждение < 1:
Распечатать "Хорошо Публичный. Нет проблем."
sys.exit ()
################################################## ###############################
# #
# .______ _______. ______ ___ __ .__. #
# | _ \ / | / | / \ | \ | | #
# | | _) | ______ | (---- `|, ----» / ^ \ | \ | | #
# | / | ______ | \ \ | | / / _ \ \ | , `| #
# | | \ \ ----. .----) | | `----./ _____ \ | | \ | #
# | _ | `._____ | | _______ / \ ______ / __ / \ __ \ | __ | \ __ | v0.1.2 #
# #
#GNU PL - 2015 - ca333 #
# #
#use НА СВОЙ СТРАХ И РИСК! #
################################################## ###############################
импорт JSON
импорт urllib2
время импорта
импорт SYS
# для какой-то причина blockchain.info Апи-цепи 59711 блоков короткая ..
blockstart = 170399
blockstart + = 59711
blockcount = urllib2.urlopen ("https://blockchain.info/de/q/getblockcount").читать()
Распечатать "WELCOME TO v0.1.2 R-сканирования!"
Распечатать "АДРЕС-R-SCAN: "
адр = raw_input ("Тип адрес: ")
urladdr = "https://blockchain.info/de/rawaddr/" + Ул (адрес)
#control апи-URL
печать urladdr
addrdata = json.load (urllib2.urlopen (urladdr))
Распечатать "Данные для Публичных: " + Ул (адрес)
Распечатать "Количество передатчиков: " + Str (addrdata [ 'n_tx'])
# ОЙ-деталь:
у = 0
входов = []
в то время как у < addrdata [ 'n_tx']:
Распечатать "################################################## ###############################"
Распечатать "TX NR:" + Ул (у + 1)
Распечатать "хэш: " + Str (addrdata [ 'TXS'] [Y] [ 'хэш'])
Распечатать "Количество входов: " + Str (addrdata [ 'TXS'] [Y] [ 'vin_sz'])
#только если
#if addrdata [ 'TXS'] [у] [ 'vin_sz'] > 1:
ZY = 0
в то время как з.ы. < addrdata [ 'TXS'] [у] [ 'vin_sz']:
Распечатать "Ввод-ScriptNR " + Ул (ZY + 1) " :" + Str (addrdata [ 'TXS'] [Y] [ 'входы'] [ZY] [ 'Скрипт'])
inputs.append (addrdata [ 'TXS'] [у] [ 'входы'] [з.ы.] [ 'сценарий'])
ZY + 1 =
у + 1 =
Распечатать "Для сравнения: "
XI = 0
Zi = 1
Lenx = Len (входы)
Оповещение = 0
#compare значения Sig в каждом входном скрипте
в то время как хи < Lenx-1:
х = 0
а х < Lenx-цзы:
если входы [XI] [10:74] == входы [х + Zi] [10:74]:
Распечатать "В Input NR: " + Ул (XI) + "[Глобальный прирост] " + Ул (входы [XI])
печать ( '\ а')
Распечатать "Resued R-значение: "
печать входов [х + Zi] [10:74]
Оповещение + = 1
х + 1 =
Zi + 1 =
xi + 1 =
# Проверяет дубликаты
#alert, когда все в порядке
если предупреждение < 1:
Распечатать "Хорошо Публичный. Нет проблем."
sys.exit ()
если у вас есть вопросы спрашивайте.
Спасибо.