Re-пост это сообщение. Перепроведении, потому что я полагал, что это был востребован более широкой аудитории, и есть много людей в D&TD форум, не возражает с помощью инструментов командной строки (хотя, это только из командной строки, искомая функция геральдики).
"правильность" утилиты должны быть самоочевидными. Выход из "фрэггинг" Сценарий N файлов в каталоге выполнения. Вход на "unfragging" Скрипт должен иметь M + файлы в каталоге выполнения. И unfragging скрипт имеет встроенный "контрольная работа" так что вы можете видеть, что это правильно работать на нескольких подмножеств фрагментов. И это ставит GIT-версию фиксации на выходе, так что вы знаете, в точку какая версия создала ее (хотя, это всегда будет в главной ветке, и я не ожидаю, что это изменится).
Особенности:
- Создание М-из-N фрагментированного резервного копирования, для любого значения N, и 2<= M<= 8 (использует Секретный Sharing Шамира)
- Работает с любыми Оружейными * .wallet файлов, зашифрованным или нет (будет запрашивать ключевую фразу в зашифрованном виде)
- Создает N текстовых файлов, которые могут быть легко открыты и распечатанные (извините, нет QR коды от терминала)
- Имея M-1 файлов не дает злоумышленнику никакого преимущества перебирая свой кошелек больше, чем с нуля штук. Для резервного копирования 7-в-20, имея 6 частей не более полезно, чем с 0.
- Детерминированные фрагменты означает, что вы можете повторно напечатать потерянные фрагменты, или создать более позднее (увеличение N)
- Мерзавец фиксации версия помещается в текстовый файл, в случае, если вы хотите знать, в точку какая версия создала его
- Исправление ошибок до одного символа в каждой строке. Определяет, какой файл&линия 2 + ошибки, которые не могут быть исправлены автоматически.
- Использовать "unfrag" скрипт сразу после "фрэггинг" чтобы проверить комбинируя различные подмножества файлов фрагмент (для собственного спокойствия)
- проверки, чтобы убедиться, что вы получите это право, или знать, что вы сделали неправильно Бесконечные ошибки.
Кроме того, есть скрипт полностью зависимость меньше "sss.py", который содержит все необходимый для восстановления этих фрагментов. Если у вас установлен Python, вы можете запустить этот скрипт в изоляции (установка по умолчанию питона, без установки Armory). Причина, что делает его, это легко распечатать для ультра-параноидного, что думает, что ГИТ-репо не будет доступен в будущем по каким-то причинам. Сценарий не делает unfragging для вас, но у него есть все, что нужно в пару сотен строк кода и может быть напечатан на одной или двух листов бумаги.
Случаи использования:
Для использования с обычными Оружейными кошельками.
- 2-оф-3: Вместо резервного копирования вашего бумажника в одном месте, где каждый, кто считает, что может восстановить свои средства, создать три части, из которых любые два достаточно для восстановления бумажника. Держите один в доме, один в сейфе в банке, и дать один к члену семьи.
- 5-оф-7Если компания имеет 7 членов, требуют значительного большинства из них, чтобы вернуть средства. Там еще будет один или два человека, управление автономного компьютера, но он допускает, что компьютер, работающий в автономном режиме для резервного копирования без риска какого-либо одного (или 4) членов, чтобы украсть деньги.
- 3-оф-5 или 3-из-6: Приятная описание Вот.
Это по-прежнему предполагает одного значи бумажник, и что, вероятно, компьютер, работающий в автономном режиме с зашифрованной версией этого, доступной вам. Проблема заключается в том, что она должна быть подкреплена, и вы не хотите, чтобы ваши резервные копии, чтобы стать самым слабым звеном в цепи уязвимости. "Связанные бумажники" с мульти-сиг / мульти-устройства все еще находится в разработке, и это не является заменой для этого. Это просто альтернатива резервного копирования вашего бумажника, если вы беспокоитесь о физической безопасности.
Сценарии находятся в папке Extras. Они были вытеснены к главной ветви.
К сожалению, это работает только, если вы можете запустить питон скрипты (возможно в Windows, но вы должны установить все пакеты питона перечисленные здесь для окон, и скопируйте файл .pyd из каталога установки).
Применение:
Код:
$ Питон frag_wallet.py ~ / .armory / armory_2QQkCkdt_.wallet 3 5
$ Питон unfrag_wallet.py wallet_2QQkCkdt_frag * .txt --test
$ Питон unfrag_wallet.py wallet_2QQkCkdt_frag * .txt
$ Питон unfrag_wallet.py wallet_2QQkCkdt_frag * .txt --test
$ Питон unfrag_wallet.py wallet_2QQkCkdt_frag * .txt
Использовать дополнительные / frag_wallet.py сценарий сломать резервную копию бумаги в N файлов, а затем вы можете сразу же использовать дополнительные / unfrag_wallet.py скрипт для выполнения процесса восстановления на 20 различных подмножеств файлов M фрагментов. Без --test вариант, он попросит вас соответствующие опции шифрования, а затем создать оружейный * .wallet файл, который может импортируемую изначально в Оружейный.
Выход сценария фрэггинг
Код:
$ Питон frag_wallet.py ~ / .armory / armory_2QQkCkdt_.wallet 3 5
************************************************** ******************************
* Выполнение бумажника фрагментирующего сценария. Разделите Оружейной бумажник
* В N штук, что требует какой-либо M восстановить бумажник.
************************************************** ******************************
Найдено хэш текущего мерзавца фиксации: cf8ebe7cecf4bbd0457e8f984354aabb6e869e66
Вот информация резервной бумаги для этого бумажника.
Корневой ключ: hrfr dejf snwf rtun rtin dhri snor aihd МЕТ
otjf osws TEAA gjei ihoa FFAA fojn swng tusg
Chaincode: kwig Jorj agtj ragt kwrn dnhf ojgw tkwg snti
HDST aurh osfj ajhd nwra ogdd dsiw Сафф fwra
Создаст 3-в-5 фрагментацию резервного копирования бумаги.
Продолжать? [Y / N]: у
О том, чтобы создать фрагменты. Любая другая информация / идентификаторы вы бы
хотел бы добавить к каждому из файлов фрагментов? Введите его на следующей строке:
(Введите данные или оставьте поле пустым): Этот фрагмент принадлежит пользователю форума etotheipi
Фрагмент 1: wallet_2QQkCkdt_frag1_need_3.txt
ID: 0301 02d1 93af fa6f
x1: aiow gnrr haaj hthf hsnf rskj tooi kjta ajuf
x2: jgto kgir EKGs Whod kdkr rwsr Hase jdui irdh
x3: Rugh АСЖ sghk sowr esdj kgnw hihe jnri возница
x4: EAGT ярмарка Гян ifwd возвратный ewnd aofu gnur jdut
y1: owrn sowu nfrw oeeo gggs ikkw FeII ueja hwns
y2: aogt OSIG зубрила jkis fkur gfhk Ковт gwdu олучатель
y3: ест akge jeot rdug oeki frgd Onia einn rddj
y4: dkfj НСРО tijj nfkn dkne Nieu ИТТФ gnrg gkhj
Фрагмент 2: wallet_2QQkCkdt_frag2_need_3.txt
ID: 0302 02d1 93af fa6f
x1: fadf gtko nwii gfwd nogk osak jodn тесс dgdt
x2: WRIS jthf kgdu jiwj Jeho suii ugnw rewd rtoi
...
Фрагмент 5: wallet_2QQkCkdt_frag5_need_3.txt
ID: 0305 02d1 93af fa6f
x1: hfte nufh ИМП sseh aweu jkgw ugno iaow kdue
x2: nkwo ndsw jief таар tfrg knwg tfkt Кейн akuw
x3: ofat fgui iwsk eofg toeo widn gwnh Гаук knhg
x4: ugut wfww rfon kdkg UDDI rutn nefh ftid Iørn
y1: oerh rdie rnth dnda IAWS ateg utaf drhh grnu
y2: hrte iaoh Хва jrfa dfeh doej USIT infh fjhj
y3: uije NSGA suod jiid sjau rhwh swsg rfgn gwud
y4: nwnd eheo ISSG tdrw Kdei fhoj iuit jirf Чжун
Примечание: Если вы запустите этот фрагмент сценария на том же бумажнике
с теми же фрагментами-требуемых значениями, M, то вы будете
получить те же фрагменты. Используйте эту опцию для замены фрагментов,
или с использованием более высокой N-значение для получения более штук (но
ДОЛЖНЫ использовать один и тот же M значение!)
$ Ls -l
...
-RW-RW-r-- 1 алан алан 1008 6 марта 11:32 wallet_2QQkCkdt_frag1_need_3.txt
-RW-RW-r-- 1 алан алан 1008 6 марта 11:32 wallet_2QQkCkdt_frag2_need_3.txt
-RW-RW-r-- 1 алан алан 1008 6 марта 11:32 wallet_2QQkCkdt_frag3_need_3.txt
-RW-RW-r-- 1 алан алан 1008 6 марта 11:32 wallet_2QQkCkdt_frag4_need_3.txt
-RW-RW-r-- 1 алан алан 1008 6 марта 11:32 wallet_2QQkCkdt_frag5_need_3.txt
...
************************************************** ******************************
* Выполнение бумажника фрагментирующего сценария. Разделите Оружейной бумажник
* В N штук, что требует какой-либо M восстановить бумажник.
************************************************** ******************************
Найдено хэш текущего мерзавца фиксации: cf8ebe7cecf4bbd0457e8f984354aabb6e869e66
Вот информация резервной бумаги для этого бумажника.
Корневой ключ: hrfr dejf snwf rtun rtin dhri snor aihd МЕТ
otjf osws TEAA gjei ihoa FFAA fojn swng tusg
Chaincode: kwig Jorj agtj ragt kwrn dnhf ojgw tkwg snti
HDST aurh osfj ajhd nwra ogdd dsiw Сафф fwra
Создаст 3-в-5 фрагментацию резервного копирования бумаги.
Продолжать? [Y / N]: у
О том, чтобы создать фрагменты. Любая другая информация / идентификаторы вы бы
хотел бы добавить к каждому из файлов фрагментов? Введите его на следующей строке:
(Введите данные или оставьте поле пустым): Этот фрагмент принадлежит пользователю форума etotheipi
Фрагмент 1: wallet_2QQkCkdt_frag1_need_3.txt
ID: 0301 02d1 93af fa6f
x1: aiow gnrr haaj hthf hsnf rskj tooi kjta ajuf
x2: jgto kgir EKGs Whod kdkr rwsr Hase jdui irdh
x3: Rugh АСЖ sghk sowr esdj kgnw hihe jnri возница
x4: EAGT ярмарка Гян ifwd возвратный ewnd aofu gnur jdut
y1: owrn sowu nfrw oeeo gggs ikkw FeII ueja hwns
y2: aogt OSIG зубрила jkis fkur gfhk Ковт gwdu олучатель
y3: ест akge jeot rdug oeki frgd Onia einn rddj
y4: dkfj НСРО tijj nfkn dkne Nieu ИТТФ gnrg gkhj
Фрагмент 2: wallet_2QQkCkdt_frag2_need_3.txt
ID: 0302 02d1 93af fa6f
x1: fadf gtko nwii gfwd nogk osak jodn тесс dgdt
x2: WRIS jthf kgdu jiwj Jeho suii ugnw rewd rtoi
...
Фрагмент 5: wallet_2QQkCkdt_frag5_need_3.txt
ID: 0305 02d1 93af fa6f
x1: hfte nufh ИМП sseh aweu jkgw ugno iaow kdue
x2: nkwo ndsw jief таар tfrg knwg tfkt Кейн akuw
x3: ofat fgui iwsk eofg toeo widn gwnh Гаук knhg
x4: ugut wfww rfon kdkg UDDI rutn nefh ftid Iørn
y1: oerh rdie rnth dnda IAWS ateg utaf drhh grnu
y2: hrte iaoh Хва jrfa dfeh doej USIT infh fjhj
y3: uije NSGA suod jiid sjau rhwh swsg rfgn gwud
y4: nwnd eheo ISSG tdrw Kdei fhoj iuit jirf Чжун
Примечание: Если вы запустите этот фрагмент сценария на том же бумажнике
с теми же фрагментами-требуемых значениями, M, то вы будете
получить те же фрагменты. Используйте эту опцию для замены фрагментов,
или с использованием более высокой N-значение для получения более штук (но
ДОЛЖНЫ использовать один и тот же M значение!)
$ Ls -l
...
-RW-RW-r-- 1 алан алан 1008 6 марта 11:32 wallet_2QQkCkdt_frag1_need_3.txt
-RW-RW-r-- 1 алан алан 1008 6 марта 11:32 wallet_2QQkCkdt_frag2_need_3.txt
-RW-RW-r-- 1 алан алан 1008 6 марта 11:32 wallet_2QQkCkdt_frag3_need_3.txt
-RW-RW-r-- 1 алан алан 1008 6 марта 11:32 wallet_2QQkCkdt_frag4_need_3.txt
-RW-RW-r-- 1 алан алан 1008 6 марта 11:32 wallet_2QQkCkdt_frag5_need_3.txt
...
Каждый файл выглядит следующим образом:
Код:
Кошелек ID: 2QQkCkdt
Дата создания: 2013-Mar-06 12:29 утра
Git Commit: cf8ebe7cecf4bbd0457e8f984354aabb6e869e66
Этот фрагмент принадлежит пользователю форума etotheipi
Этот фрагмент: # 1
Фрагменты Нужно: 3
Фрагменты Создано: 5 (больше фрагментов могут быть созданы позже)
Ниже приведен один фрагмент из вашего кошелька. казнить
сценарий реконструкции с любыми 3 из этих фрагментов файлов
в каталоге выполнения, чтобы восстановить оригинальный кошелек.
Каждый файл может быть восстановлен с помощью ручного ввода данных
в текстовый редактор. Только следующие 9 строк (с префиксами)
необходимы в каждом файле. Все остальные данные могут быть опущены.
ID: 0301 02d1 93af fa6f
x1: aiow gnrr haaj hthf hsnf rskj tooi kjta ajuf
x2: jgto kgir EKGs Whod kdkr rwsr Hase jdui irdh
x3: Rugh АСЖ sghk sowr esdj kgnw hihe jnri возница
x4: EAGT ярмарка Гян ifwd возвратный ewnd aofu gnur jdut
y1: owrn sowu nfrw oeeo gggs ikkw FeII ueja hwns
y2: aogt OSIG зубрила jkis fkur gfhk Ковт gwdu олучатель
y3: ест akge jeot rdug oeki frgd Onia einn rddj
y4: dkfj НСРО tijj nfkn dkne Nieu ИТТФ gnrg gkhj
Дата создания: 2013-Mar-06 12:29 утра
Git Commit: cf8ebe7cecf4bbd0457e8f984354aabb6e869e66
Этот фрагмент принадлежит пользователю форума etotheipi
Этот фрагмент: # 1
Фрагменты Нужно: 3
Фрагменты Создано: 5 (больше фрагментов могут быть созданы позже)
Ниже приведен один фрагмент из вашего кошелька. казнить
сценарий реконструкции с любыми 3 из этих фрагментов файлов
в каталоге выполнения, чтобы восстановить оригинальный кошелек.
Каждый файл может быть восстановлен с помощью ручного ввода данных
в текстовый редактор. Только следующие 9 строк (с префиксами)
необходимы в каждом файле. Все остальные данные могут быть опущены.
ID: 0301 02d1 93af fa6f
x1: aiow gnrr haaj hthf hsnf rskj tooi kjta ajuf
x2: jgto kgir EKGs Whod kdkr rwsr Hase jdui irdh
x3: Rugh АСЖ sghk sowr esdj kgnw hihe jnri возница
x4: EAGT ярмарка Гян ifwd возвратный ewnd aofu gnur jdut
y1: owrn sowu nfrw oeeo gggs ikkw FeII ueja hwns
y2: aogt OSIG зубрила jkis fkur gfhk Ковт gwdu олучатель
y3: ест akge jeot rdug oeki frgd Onia einn rddj
y4: dkfj НСРО tijj nfkn dkne Nieu ИТТФ gnrg gkhj
Выполните unfrag тест: (Она работает без --test флага, если у вас есть больше, чем файлы M)
Код:
$ Питон unfrag_wallet.py wallet_2QQkCkdt_frag * .txt --test
************************************************** ******************************
* Восстановление кошелька из 3-из-N фрагментированного резервного копирования!
************************************************** ******************************
Восстановленная резервное копирование бумаги: 2QQkCkdt
hrfr dejf snwf rtun rtin dhri snor aihd МЕТ
otjf osws TEAA gjei ihoa FFAA fojn swng tusg
kwig Jorj agtj ragt kwrn dnhf ojgw tkwg snti
HDST aurh osfj ajhd nwra ogdd dsiw Сафф fwra
Тестирование на реконструкцию 20 подмножеств:
Использование фрагментов (0,1,3) Реконструированный (первая строка): hrfr dejf snwf rtun rtin dhri snor aihd МВУТ
Использование фрагментов (2,3,4) Реконструированный (первая строка): hrfr dejf snwf rtun rtin dhri snor aihd МВУТ
Использование фрагментов (1,3,4) Реконструированный (первая строка): hrfr dejf snwf rtun rtin dhri snor aihd МВУТ
Использование фрагментов (1,2,3) Реконструированный (первая строка): hrfr dejf snwf rtun rtin dhri snor aihd МВУТ
Использование фрагментов (0,1,2) Реконструированный (первая строка): hrfr dejf snwf rtun rtin dhri snor aihd МВУТ
Использование фрагментов (0,3,4) Реконструированный (первая строка): hrfr dejf snwf rtun rtin dhri snor aihd МВУТ
Использование фрагментов (0,3,4) Реконструированный (первая строка): hrfr dejf snwf rtun rtin dhri snor aihd МВУТ
Использование фрагментов (0,2,4) Реконструированный (первая строка): hrfr dejf snwf rtun rtin dhri snor aihd МВУТ
...
************************************************** ******************************
* Восстановление кошелька из 3-из-N фрагментированного резервного копирования!
************************************************** ******************************
Восстановленная резервное копирование бумаги: 2QQkCkdt
hrfr dejf snwf rtun rtin dhri snor aihd МЕТ
otjf osws TEAA gjei ihoa FFAA fojn swng tusg
kwig Jorj agtj ragt kwrn dnhf ojgw tkwg snti
HDST aurh osfj ajhd nwra ogdd dsiw Сафф fwra
Тестирование на реконструкцию 20 подмножеств:
Использование фрагментов (0,1,3) Реконструированный (первая строка): hrfr dejf snwf rtun rtin dhri snor aihd МВУТ
Использование фрагментов (2,3,4) Реконструированный (первая строка): hrfr dejf snwf rtun rtin dhri snor aihd МВУТ
Использование фрагментов (1,3,4) Реконструированный (первая строка): hrfr dejf snwf rtun rtin dhri snor aihd МВУТ
Использование фрагментов (1,2,3) Реконструированный (первая строка): hrfr dejf snwf rtun rtin dhri snor aihd МВУТ
Использование фрагментов (0,1,2) Реконструированный (первая строка): hrfr dejf snwf rtun rtin dhri snor aihd МВУТ
Использование фрагментов (0,3,4) Реконструированный (первая строка): hrfr dejf snwf rtun rtin dhri snor aihd МВУТ
Использование фрагментов (0,3,4) Реконструированный (первая строка): hrfr dejf snwf rtun rtin dhri snor aihd МВУТ
Использование фрагментов (0,2,4) Реконструированный (первая строка): hrfr dejf snwf rtun rtin dhri snor aihd МВУТ
...
Восстановление кошелька:
Код:
$ Питон unfrag_wallet.py wallet_2QQkCkdt_frag * .txt
************************************************** ******************************
* Восстановление кошелька из 3-из-N фрагментированного резервного копирования!
************************************************** ******************************
Восстановленная резервное копирование бумаги: 2QQkCkdt
hrfr dejf snwf rtun rtin dhri snor aihd МЕТ
otjf osws TEAA gjei ihoa FFAA fojn swng tusg
kwig Jorj agtj ragt kwrn dnhf ojgw tkwg snti
HDST aurh osfj ajhd nwra ogdd dsiw Сафф fwra
Вы поставляли больше частей (5), чем это необходимо для реконструкции (3).
Вы пытаетесь запустить тест реконструкции вместо фактически
восстановление бумажник? Если да, то восстановление кошелька будет пропущено. [Y / N] п
Продолжая восстановление кошелька ...
Вы хотите, чтобы зашифровать извлеченный бумажник? [Y / N]: у
Выберите кодовую фразу шифрования:
Passphrase:
Еще раз:
Установить ключевые растягивания параметры:
Секунд, чтобы вычислить (по умолчанию 0.25): 2
Макс RAM используется в мегабайтах (по умолчанию 32): 16
Создание нового кошелька ...
Пожалуйста, подождите, пока пул адресов заселяется ....
Создано armory_2QQkCkdt_recovered.wallet
************************************************** ******************************
* Восстановление кошелька из 3-из-N фрагментированного резервного копирования!
************************************************** ******************************
Восстановленная резервное копирование бумаги: 2QQkCkdt
hrfr dejf snwf rtun rtin dhri snor aihd МЕТ
otjf osws TEAA gjei ihoa FFAA fojn swng tusg
kwig Jorj agtj ragt kwrn dnhf ojgw tkwg snti
HDST aurh osfj ajhd nwra ogdd dsiw Сафф fwra
Вы поставляли больше частей (5), чем это необходимо для реконструкции (3).
Вы пытаетесь запустить тест реконструкции вместо фактически
восстановление бумажник? Если да, то восстановление кошелька будет пропущено. [Y / N] п
Продолжая восстановление кошелька ...
Вы хотите, чтобы зашифровать извлеченный бумажник? [Y / N]: у
Выберите кодовую фразу шифрования:
Passphrase:
Еще раз:
Установить ключевые растягивания параметры:
Секунд, чтобы вычислить (по умолчанию 0.25): 2
Макс RAM используется в мегабайтах (по умолчанию 32): 16
Создание нового кошелька ...
Пожалуйста, подождите, пока пул адресов заселяется ....
Создано armory_2QQkCkdt_recovered.wallet
Исчерпывающая ошибка ловли и полезная информация
Код:
$ Питон unfrag_wallet.py wallet_2QQkCkdt_frag * .txt --testnet
ОШИБКА: Некоторые файлы являются дубликатами!
wallet_2QQkCkdt_frag1_need_3.txt является Фрагмент 1
wallet_2QQkCkdt_frag2_need_3.txt является Фрагмент 1
wallet_2QQkCkdt_frag4_need_3.txt является Фрагмент 4
Aborting
ОШИБКА: Некоторые файлы являются дубликатами!
wallet_2QQkCkdt_frag1_need_3.txt является Фрагмент 1
wallet_2QQkCkdt_frag2_need_3.txt является Фрагмент 1
wallet_2QQkCkdt_frag4_need_3.txt является Фрагмент 4
Aborting
Код:
$ Питон unfrag_wallet.py wallet_2QQkCkdt_frag * .txt --testnet
************************************************** ******************************
* Восстановление кошелька из 3-из-N фрагментированного резервного копирования!
************************************************** ******************************
(ВНИМАНИЕ) armoryengine.py:1235 - *** Ошибка контрольной суммы! Попытка исправить ...
(ВНИМАНИЕ) armoryengine.py:1259 - Контрольная сумма исправления не удалась
ОШИБКА: неисправимая ошибка
Файл: wallet_2QQkCkdt_frag1_need_3.txt
Линия: y2
************************************************** ******************************
* Восстановление кошелька из 3-из-N фрагментированного резервного копирования!
************************************************** ******************************
(ВНИМАНИЕ) armoryengine.py:1235 - *** Ошибка контрольной суммы! Попытка исправить ...
(ВНИМАНИЕ) armoryengine.py:1259 - Контрольная сумма исправления не удалась
ОШИБКА: неисправимая ошибка
Файл: wallet_2QQkCkdt_frag1_need_3.txt
Линия: y2