Encontrei este tutorial na internet e achei bem interessante. Já utilizo o VeraCrypt em modo gráfico há um certo tempo. Porém queria fazer a experiência de utilizá-lo somente em modo texto.
Tudo aí deu certo de boa. Mas como costumo sempre tentar encontrar novas possibilidades, fiquei me perguntando se seria possível exibir os asteriscos no momento de digitar a senha de montagem do volume. Embora, deixando o tamanho da senha visível já viesse a ser algo visto como uma certa vulnerabilidade, dependendo do caso de uso, seria melhor para o usuário poder conferir sua senha de modo ainda seguro (asteriscos) antes de tentar montar, evitando assim um certo número de tentativas erradas.
Bora lá…
Usando o seguinte comando, tirado do tutorial acima:
Caso adicione --display-password, a senha é completamente exibida.
Poderia ser diretamente pelo comando de montagem do volume ou através de um script que solicitasse a interação do usuário, armazenasse a senha digitada em uma variável “X” e em seguida, adicionando ao comando -p ${X} ele montasse o volume. Já que a variável seria destruída após a finalização do script, não teria problema para determinadas possibilidades (novamente, dependendo do caso de uso).
A questão é que usando o read -s para solicitar esta senha que seria armazenada na variável “X” o comportamento é o mesmo que solicitando diretamente pelo comando do VeraCrypt.
Como estou sempre procurando algo diferente para praticar encontrei este outro tutorial para fazer isso com a senha [sudo]. Daí tirei a ideia de aplicar a mesma logica ao VeraCrypt em modo texto.
Cara… Testei aqui e é bem isso que eu queria mesmo. No caso da opção com asterisco, seria abusar muito, pedir que você detalhasse o que cada um destes comando fazem?
prompt="password: "
while IFS= read -p "$prompt" -r -s -n 1 char
do
if [[ $char == $'\0' ]]
then
break
fi
prompt='*'
password+="$char"
done
Boa noite, vou meio que explicar o que faz cada linha. Daí é o seguinte:
unset password = remove a variável se existir
prompt=“password:” = Cria uma variável com o nome “prompt”. A mescla dele com uma outra variável que vai fazer a mágica
while = permite executar um conjunto de comandos repetidamente até que alguma condição ocorra
read -p “$prompt” … = Vai escrever o que for digitado na variável
if = Vai criar uma condição para o que for digitado ser exato
prompt=’*’ = O que for digitado será substituído pelo asterisco
password+="$char" = O que for digitado será escrito nesta variável
Tudo o que for depois de done são comandos de teste
Resumindo, quando é digitado cada letra, é passado para a variável prompt, que passa a informação para a variável password que adiciona cada carácter em “char”.
E as condições do Wile e do IF, você poderia detalhá-las também?
Não conheço bem o IFS e não compreendi a fun do que vem depois do “prompt”.
Já no IF esta comparação com $’\0’ não consegui compreender.
O a comparação alí é para poder ver se o que foi digitado é o ENTER, se tirar o parâmetro if dalí o ENTER não funciona (funciona como Caracter normal) e o script só vai sair se fizer CTRL+C.
wile é pro Script ficar em um loop enquanto estiver ativo, sem apertar o ENTER
Pra compreender melhor sobre Shell, veja estes links: