Нет, нет возможности получить структуру файловой системы.
Программа восстановления получает файлы с низкого уровня жесткого диска, где данные не имеют такой структуры, как обычная структура, которую мы видим в проводнике файлов.
Чтобы сгенерировать пароль с максимально возможной энтропией с помощью стандартных инструментов Linux, встроенных в каждый используемый мной дистрибутив:
< /dev/urandom tr -cd "[:print:]" | head -c 32; echo
Это выводит все печатные символы ASCII - от 32 (пробел) до 126. (тильда, ~
). Длиной пароля можно управлять с помощью флага -c
head
. Существуют также другие возможные наборы символов в tr
(чтобы не включать пробел, только символы 33-126, используйте [:graph:]
).
Я бы хотел эту команду:
date +%s | sha256sum | base64 | head -c 12
APG
включен по умолчанию в некоторые дистрибутивы Linux.
Чтобы сгенерировать пароли размером от 5 до 10 в подмножествах Special, Numeric, Capital и Lower, команда следующая:
apg -MSNCL -m 5 -x 10
И возвращает
@OpVeyhym9
3:Glul
3DroomIc?
hed&Os0
NefIj%Ob3
35Quok}
Как сказано в комментарии @landroni.
Я поддерживаю secpwgen
в Alpine Linux и храню источники на моем Github.
Он может создавать случайные строки или фразы для игральных костей:
musl64 [~]$ secpwgen
USAGE: secpwgen <-p[e] | -A[adhsy] | -r | -s[e]> N
PASSPHRASE of N words from Diceware dictionary
-p generate passphrase
-pe generate enhanced (with symbols) passphrase
SKEY PASSWORD of N words from S/Key dictionary
-s generate passphrase
-se generate enhanced (with symbols) passphrase
ASCII RANDOM of N elements (at least one option MUST be present)
-A Each letter adds the following random elements in output:
a alphanumeric characters
d decimal digits
h hexadecimal digits
s special characters
y 3-4 letter syllables
RAW RANDOM
-r output BASE64 encoded string of N random BITS
-k output koremutake encoding of N random BITS
Чтобы сгенерировать 13-символьную случайную строку, которую вы бы использовали:
musl64 [~]$ secpwgen -Aas 13
----------------
WK5#*V<]M3<CU ;ENTROPY=67.21 bits
----------------
INFO: destroying random number generator.
INFO: zeroing memory.
musl64 [~]$ secpwgen -Aa 13
----------------
GP0FIEBM9Y3BT ;ENTROPY=67.21 bits
----------------
INFO: destroying random number generator.
INFO: zeroing memory.
Для пользователей, чтобы запомнить пароль, используйте фразы из diceware:
musl64 [~]$ secpwgen -p 5
----------------
wq seen list n8 kerr ;ENTROPY=65.00 bits
----------------
INFO: destroying random number generator.
INFO: zeroing memory.
Мне лично нравится:
musl64 [~]$ secpwgen -r 512
----------------
h62lL7G4gwh3/j9c7YteQvVXoqJrQKKPWVR3Lt7az36DcfWZWtUgBT19iwmJBwP4UahNzPe7qYD7OcklUFpCzQ== ;ENTROPY=512.00 bits
----------------
INFO: destroying random number generator.
INFO: zeroing memory.
Я использую:
base64 < /dev/urandom | tr -d 'O0Il1+/' | head -c 44; printf '\n'
Это дает мне 57 возможных символов. Строка может быть скопирована -, вставлена (, удалена +
и ``)или распечатана и перепечатана, так как трудно различимые символы(I1lO0
)были удалены.
Мне это нравится, потому что:
Кредитhttps://unix.stackexchange.com/a/230676/9583и особенно комментарии для моего первоначального вдохновения.
Я хотел бы внести свою обычную команду для создания пароля
$ cat /dev/urandom | base64 | head -n 1 |tr -dc '[:alnum:]' |cut -c -13
b0R55751vWW9V
Чтобы настроить длину пароля, измените число в команде вырезания на требуемую длину, например, 24 символа
$ cat /dev/urandom | base64 | head -n 1 |tr -dc '[:alnum:]' |cut -c -24
WFBhVHuKbrnRhd5kdWXPzmZG
Не хотите путать 0 или O, 1 или l? Отфильтруйте это другимtr
$ cat /dev/urandom | base64 | head -n 1 |tr -dc '[:alnum:]' | tr -d '0O1l'|cut -c -24
JuCphwvhrhppD9wVqfpP2beG
Лично я никогда не предпочитаю специальные символы в паролях, поэтому я выбираю только [:alnum:]
для своего генератора паролей
Философия Unix «множество небольших инструментов, которые хорошо справляются с одной задачей» очень хорошо вам подходит в этом случае.
/dev/urandom
представляет собой поток случайных «байтов» (, которые включают непечатаемые -символы)base64
кодирует байтовые данные в [A-Za-z0-9/+]
(, который полностью доступен для печати)dd
копирует ввод в вывод, применяя модификаторы, заданные в качестве аргументов (, которые могут включать размер блока и количество блоков)OS X
base64 < /dev/urandom | dd bs=1k count=1
Линукс
base64 -w0 < /dev/urandom | dd bs=1k count=1
Примечания:
tr -d '[A-Z/+]'
, чтобы избавиться от заглавных букв и +
и/
bs
(размер блока )любой необходимой длины. base64
по умолчанию переносится на 76 столбцов и должен быть сброшен с помощью -w0
, если вы этого не хотите. Я обнаружил, что передача /dev/urandom в tr в macOS не работает. Вот еще один способ:
set="abcdefghijklmonpqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
n=6
rand=""
for i in `seq 1 $n`; do
char=${set:$RANDOM % ${#set}:1}
rand+=$char
done
echo $rand
Мой путь к очень надежному паролю (, где 16 — длина pw):
cat /dev/urandom | tr -cd [:graph:]|head -c 16
Пример результата:
jT@s_Nx]gH<wL~W}
Или, альтернативно, для создания нескольких паролей:
кошка /dev/urandom | tr -cd [ :graph :]|fold -w 16|head -6
Пример результата:
7ck%G7'|f&}_8(]s
<?*]E.CG[NB'gK#A
:tF-WPTOa3!i7S(h
2xy(>=%3=Kb1B$`6
*98Lf{d?Jzb}6q1\
E7uCEAN2Hz]]y|5*
Немного менее безопасный (меньший набор символов):
cat /dev/urandom |base64 -w 0|fold -w 16|head -6
Пример результата:
rJqYxYZLOTV+A45w
PUKQ+BoBf6yfZw5m
+LRfpsN9CsLRiN8V
yMS6zDpL6NHmG17s
yTUWPG7Rum97schi
cognvjVwaKaAyPRK
Используйте команду xxd
, чтобы указать длину (через -l ), которая работает как в Linux, так и в ОС.https://www.howtoforge.com/linux-xxd-command/
xxd -l16 -ps /dev/urandom
Пока ни один из ответов не соответствует -OS.
Основные недостатки представлены определением локали (случай MacOS )и tr
неспособность распознавать интервалы символов (случай Solaris ).
Попробуйте шлибы . Это свежая и по-настоящему кросс -ОС. Код для получения случайной строки — shlibs str005
(./shlibs str005
).
Получить случайную строку из 50 символов, включая знаки препинания, исключая числа:
shlibs str005 50 -p -xd
pwgen
, как и все остальные, для паролей.
Только строчные буквы, безопасный, не менее 1 цифры, 8 символов, 1 результат
$ pwgen -snA 8 1
d14o5wgh
То же, но как минимум 1 заглавная буква
$ pwgen -csn 8 1
bMxDxcr4
Командный интерфейс Diceware для имен пользователей и паролей, если хотите, для чего-то более удобного для запоминания; Я использую пакет pip diceware
, который подходит для моих нужд.
3 слова и 2 символа
$ diceware -n3 -s2
DemandingWhimsical*a1iar
Я уверен, что есть еще по крайней мере 100, из которых 74% написаны на nodejs, потому что, э-э... ну, это то, что они делают. Что бы вы ни выбрали, я бы отдал приоритет встроенному -в верхнем/нижнем регистре, потому что в какой-то момент у вас будут эти ограничения, и выполнение любого из них раздражающе долго в оболочке posix.
ура
Для macOS Big Sur необходимо поставить LC_ALL=C
перед tr
.
Если вы хотите легко выполнить его как команду из вашей оболочки, поместите следующее в файл.zshrc:
random() {
cat /dev/urandom | LC_ALL=C tr -dc 'a-zA-Z0-9' | fold -w ${1:-32} | head -n 1
}
randomnum() {
cat /dev/urandom | LC_ALL=C tr -dc '0-9' | fold -w ${1:-4} | head -n 1
}
Сохраните и закройте файл.
Откройте новый терминал.
Использование:
$ random
75LW1xKI1PI9qF7ITWVzABEowhSrItcT
$ random 15
lnk0FJhjiMyuSeV
$ randomnum 7
7933094
Для длины от 1 до 32 можно использовать uuidgen
из libuuid
или util-linux
, просто заменив <LENGTH>
ниже:
uuidgen -r | tr -d '-' | head -c <LENGTH>
# or
random=$(uuidgen -r | tr -d '-') && echo "${random:0:<LENGTH>}"
Примечание:6–7 из 128 бит предварительно -определены и зафиксированы.