Странные символы в завершении МЕРЗАВЦА

Я не думаю, что что-то вроде этого существует прямо из поля, но это должно быть возможно. Я соединю некоторые ссылки для Вас.

Сначала существует/etc/crypttab - обычно Вы указываете файл ключей или пароль в третьем слоте, но некоторые дистрибутивы позволяют Вам указывать опцию в четвертом названном поле keyscript (debian и opensuse поддерживают это: http://linux.frank4dd.com/en/man5/crypttab.htm). Этот сценарий (который должен быть в "/lib/cryptsetup/scripts" iirc) может использовать третье поле (каковы обычно были бы просто файл ключей или пароль) как аргумент. Задание keyscript состоит в том, чтобы отправить фактический ключ расшифровки в stdout, который затем использует cryptsetup, поскольку удачи вводят нормальный вид.

Второй то, что необходимо будет, вероятно, записать keyscript. netkeyscript (в GitHub), пример keyscript, который слушает на многоадресном сокете UDP для пароля; вот другой более подробный пример пользовательского ключевого сценария, вместе с реализацией в sh: http://wejn.org/how-to-make-passwordless-cryptsetup.html. Как Вы кодируете keyscript (который я просто назову multifactor) Я уезжаю как осуществление Вам ;)

Треть является секретным разделением. можно использовать инструмент с открытым исходным кодом, названный "ssss" (Google для "ssss-разделения") для разделения пароля удач таким образом, Вы описываете. скажем, Вы разделяете его на 3 части (a, b, c) и требуете любых 2 из них. сохраните "a" на карте памяти, "b" в хранилище и "c", который Вы снабжаете компьютером (незашифрованный раздел), или что бы то ни было. Конечно, Вы не хотите, чтобы "c" был выставлен, поэтому шифруете его со схемой по Вашему выбору с помощью пароля, который можно помнить, и вызов тот пароль"c0", и зашифрованный"c"на Вашем диске"c'". Теперь Ваш crypttab посмотрит что-то как

root  /dev/disk/  /dev/:/path/to/a+$/dev/:/path/to/c'  keyscript=multifactor

то, что Вы на самом деле будете иметь для третьего поля, будет, конечно, зависеть от того, что Ваш keyscript готов принять

Идеально keyscript должен смочь решить, что ему нужен Ваш вход для дешифрования одного или нескольких ключей (например: c' -> c в этом случае), но можно использовать третье поле, чтобы указать что, как желаемый. В моем примере выше, я использовал продвижение $ указать на это.

Я не уверен, возможно ли сделать подсказку keyscript для входа, возможно на stderr, так как любой вывод на stdout взят в качестве пароля удач. Было бы хорошо, если бы была разумная нейтрализация.

Так или иначе, удача и счастливое взламывание :)

5
29.01.2015, 11:58
1 ответ

Эти странные экранирующие последовательности - команды изменения цвета.

Код завершения запускает следующую команду для перечисления доступных команд:

git help -a|egrep '^  [a-zA-Z0-9]'

Вывод git help -a выглядит следующим образом:

добавить grep remote add--interactive хэш-объект пульт дистанционного управления-xt am help remote-fd … фсек-объекты приёма-пакета дерево записей рефлог КГ get-tar-commit-id relink

Если grep настроен на цветную печать соответствующей части строки, то имена команд, которые находятся в первой колонке, будут выделены первой буквой:

$ git help -a|egrep --color=always '^  [a-zA-Z0-9]' | cat -v | head -n 1
^[[01;31m^[[K  a^[[m^[[Kdd                      grep                     remote

Когда bash видит этот вывод, он думает, что ^[[01;31m^[[K, a^[[m^[[Kdd, grep и remote являются возможными командами. Первая не появляется, последние две правильные, вторая искажена.

Нужно настроить grep, чтобы не использовать цвета, когда его вывод не на терминале. Если у вас есть псевдоним egrep на egrep --color=always (и то же самое для grep и fgrep), измените его на --color=auto. Если вы где-то установили переменную GREP_OPTIONS, измените там --color=всегда на --color=авто.

4
27.01.2020, 20:40

Теги

Похожие вопросы