Usando lista de palavras para partição criptografada por força bruta

6

Eu usei o Utilitário de Disco para criptografar um disco rígido externo há cerca de um mês. Agora parece que esqueci a senha. Eu o formei de acordo com um conjunto de regras, então eu criei uma lista de palavras (com um script Python) de ~ 400.000 candidatos. Tenho certeza de que minha senha perdida está em algum lugar entre essas, mas não tenho a sensação de testá-las manualmente.

Então, a pergunta é: existe alguma ferramenta que leve minha lista de palavras e experimente-a automaticamente ? Ou se não, como devo escrever um roteiro como esse?

Eu usei uma ferramenta semelhante no GPG anteriormente, chamada desagradável . p>

(Se alguém estiver interessado em meu script de permutação extremamente simples, ele pode ser encontrado em Pastebin .)

    
por Procy0n 05.06.2011 / 01:52

1 resposta

8

O valor de retorno de

echo "passphrase" | sudo cryptsetup luksOpen /dev/sda1 encrypted

é:

  • 0, se houver uma chave para essa frase secreta
  • 234, se não houver chave para essa frase secreta

Não deve ser muito difícil escrever um script bash, que faça um loop na sua lista de palavras, tente cada frase-senha e verifique o valor de retorno.

Exemplo:

#!/bin/bash

DEVICE="/dev/sda1"

if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root." 1>&2
   exit 1
fi

while read line; do

    echo "$line" | cryptsetup luksOpen "$DEVICE" encrypted 2>/dev/null

    # success
    if [[ $? -eq 0 ]]; then
        cryptsetup luksClose encrypted
        echo "Passphrase: $line"
        exit 0
    fi

done < ""

echo "Passphrase not contained in word list."
exit 1

Salve, mude o dispositivo, torne executável, execute como sudo ./find-password /path/to/wordlist e aguarde.

Nota: isso é lento . Eu não sei se é porque eu tentei isso em um cartão SD, mas levou cinco segundos para testar quatro senhas erradas (quase 6 dias para 400.000 senhas possíveis).

Atualização: parece limite da CPU. Se você dividir sua lista de palavras e fizer algo como

(sudo ./find-password words.0 &) ; (sudo ./find-password words.1 &)

Ele usará dois núcleos e quase metade do tempo por tentativa.

    
por htorque 05.06.2011 / 02:43