Existem alguns geradores de "senha XKCD" por aí, mas a tarefa parece tão simples, então eu queria uma solução compacta e simples. Meus requisitos eram:
- Alias de uma linha (ou função de poucas linhas) para inserir
.profile
- Comandos Unix padrão (não requerem pacotes)
- Saída da coluna (como
pwgen
) - Palavras do título (para facilitar a leitura)
(Fico feliz em renunciar às opções de linha de comando em troca de simplicidade.)
for i in {1..32}; do grep -E "^[a-z]{4,8}$" /usr/share/dict/words | gshuf -n4 | gsed 's/.*/\u&/' | tr -d '\n' | awk '{print $1}'; done | column
Problemas atuais:
shuf
requerbrew install coreutils
no macOS (que eu também uso)sed
requerbrew install gnu-sed
(idem)tr -d '\n' | awk '{print $1}'
parece bobo.
Como posso criar uma linha de comando curta, mas legível, que funcione tanto no Linux quanto no macOS?
Por outro lado, descobri que, ao usar o SCOWL, que varia de listas curtas de palavras com nomes comuns a listas longas de palavras com palavras obscuras, você pode compensar a memorabilidade versus a memorização. entropia.
Responder1
Não tenho acesso ao meu Mac de onde estou, mas como ele está executando o OS X 10.4.11, não tenho certeza se seria comparável ao seu ambiente. O seguinte funciona para gerar uma única senha no FreeBSD. Se isso não atender às suas necessidades, sinta-se à vontade para me informar o que falta nos comentários:
(sort -R /usr/share/dict/words \
| head -n 4 \
| awk '{ sub(".", substr(toupper($0),1,1)); printf "%s", $0 }' \
; echo)
No FreeBSD e no meu sistema Arch Linux, sort -R
ordena aleatoriamente a entrada. É apenas pseudo-aleatório, mas é tão bom quanto você conseguirá com a maioria dos outros programas. Em seguida, escolha quatro palavras desse conjunto com head
. Em vez de GNU sed
, awk
pode ser usado para colocar o primeiro caractere de cada linha em maiúscula. Finalmente, echo
é usado para colocar a nova linha final. Tudo isso está em um subshell para facilitar a inclusão em um loop, tubo ou outra construção.