VeraCrypt (console) exibir senha de volume em asteriscos

Olá pessoal!

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:

veracrypt -t -k "" --pim=0 --protect-hidden=no /dev/sdb1 /mnt/sdb1/

A senha é solicitada no modo padrão, oculta.

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.

Se alguém puder ajudar, agradeço muito!

1 Curtida

Tenho no meu Github 2 maneiras de usar senha em Shell Script

O 1° modo, é desabilitando o echo e depois de digitar a senha (que não vai aparecer) e apertar ENTER o echo é ativado novamente.

O 2° modo, é usando asteristico (*).

Pode pegar este meu código e modificar pro seu uso.

Ps.: Se ficar com dúvidas me pergunte. Quando eu chegar em casa posso explicar direito.

1 Curtida

Beleza @elppans! Vou verificar aqui e qualquer dúvida pergunto sim. Obrigado!

1 Curtida

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

Agradeço!

1 Curtida

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”.

1 Curtida

Show!

Muito massa mesmo!

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.

1 Curtida

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:

http://www.inf.pucrs.br/manssour/AWK/

1 Curtida

Beleza…

Muito obrigado pela paciência!

Me ajudou bastante.

Já tinha os dois primeiros links salvos em uma lista de estudos em meus favoritos. Adicionei também os demais. Com certeza serão de grande ajuda.

1 Curtida