Como quebrar senhas de arquivos rar, 7z e zip

Quebrar senhas de arquivos compactados é sempre possível e, relativamente, fácil. O que varia é o tempo que você vai levar para concluir esta tarefa.
Vou mostrar como revelar a senha de um arquivo compactado em rar,
7z ou zip.
Zipper over blue tissue
O programa rarcrack foi desenvolvido sob a licença GPL, por David Zoltan e é mantido, atualmente, pelo programador dinamarquês Ole Wolf.
Ele é capaz de quebrar senhas não muito complicadas em questão de minutos ou segundos.
Se você tiver uma máquina lenta e uma senha mais complexa pela frente, contudo, esta tarefa pode acabar lhe tomando algumas horas.
O rarcrack usa um algoritmo de força bruta para descobrir a senha do arquivo.

O que é força bruta?

Em criptografia um ataque de força de bruta – ou de busca exaustiva – é um ataque critoanalítico rudimentar, recomendado quando outros métodos não forem possíveis.
O ataque consiste em testar sistematicamente todas as combinações de caracteres possíveis, até encontrar a que corresponde à senha.
Justamente por isto, pode ser um método muito demorado para quebrar a segurança de um arquivo.

Como baixar e instalar o rarcrack

O rarcrack pode ser baixado no site oficial do aplicativo ou instalado direto dos repositórios (se você estiver usando o Debian ou o Ubuntu).
Vamos abordar alguns métodos de instalação — e você pode usar o que achar que serve melhor pra você.

Como instalar o rarcrack no Ubuntu ou Debian

Abra um terminal (Ctrl + Alt +T) e digite os seguintes comandos:

sudo apt-get install rarcrack

Se você estiver usando o Ubuntu 12.04 LTS, deve instalar algumas PPAs primeiro. acrescente as linhas abaixo, ao arquivo /etc/apt/sources.list:

deb http://ppa.launchpad.net/ole.wolf/rarcrack/ubuntu precise main 
deb-src http://ppa.launchpad.net/ole.wolf/rarcrack/ubuntu precise main

Em seguida, execute os seguintes comandos de instalação:

sudo apt-get update
sudo apt-get install rarcrack

Como baixar e compilar o código fonte

Comece por baixar o código fonte no link abaixo:
Site de download do rarcrack.
Ao seguir os passos, abaixo, substitua VERSION pelo número da versão do arquivo baixado:

tar -xjf rarcrack-VERSION.tar.bz2
cd rarcrack-VERSION
$ make
$ make install

Você vai precisar ter privilégios administrativos (root) para executar o último passo, acima.

Como recuperar a senha de um arquivo compactado

O rarcrack é um aplicativo de linha de comando, de execução muito simples.
Normalmente, basta digitar:

rarcrack nome-do-arquivo.zip

Se o rarcrack não reconhecer o tipo seu tipo de arquivo, basta informar:

rarcrack --type zip exemplo.zip

A saída do aplicativo, enquanto ele trabalha, é mais ou menos assim:

RarCrack! 0.2 by David Zoltan Kedves (kedazo@gmail.com)
INFO: the specified archive type: zip
INFO: cracking exemplo.zip, status file: exemplo.zip.xml
Probing: 'la' [457 pwds/sec]
Probing: 'GN' [447 pwds/sec]
Probing: '02D' [451 pwds/sec]
Probing: '0oq' [450 pwds/sec]
Probing: '0Lv' [477 pwds/sec]
Probing: '191' [485 pwds/sec]
Probing: '1wn' [482 pwds/sec]
Probing: '1SA' [459 pwds/sec]
Probing: '2g7' [486 pwds/sec]
Probing: '2Ce' [457 pwds/sec]
Probing: '2YR' [467 pwds/sec]
Probing: '3kI' [451 pwds/sec]
Probing: '3Ho' [468 pwds/sec]
Probing: '45a' [491 pwds/sec]
Probing: '4rY' [471 pwds/sec]
Probing: '4P2' [476 pwds/sec]
Probing: '5cJ' [489 pwds/sec]
Probing: '5AW' [500 pwds/sec]
Probing: '5Yq' [485 pwds/sec]
Probing: '6lP' [483 pwds/sec]
Probing: '6IP' [475 pwds/sec]
Probing: '76I' [493 pwds/sec]
Probing: '7tX' [480 pwds/sec]
Probing: '7R4' [477 pwds/sec]
Probing: '8em' [481 pwds/sec]
Probing: '8Dc' [513 pwds/sec]
Probing: '90L' [487 pwds/sec]
Probing: '9mO' [455 pwds/sec]
Probing: '9Ja' [462 pwds/sec]
Probing: 'a5p' [459 pwds/sec]
GOOD: password cracked: 'abc'

Como você pode ver, no meu caso, o programa revelou que a senha era “abc“.

Como quebrar a senha mais rápido

É possível acelerar o processo, fazendo uso do recurso de multithreads presente em seu processador.
Máquinas mais modernas podem executar vários “pedaços” das tarefas simultaneamente — recurso chamado multithreading.
Para fazer uso deste recurso e ganhar tempo, use o parâmetro --threads.

rarcrack --threads 4 --type zip exemplo.zip
RarCrack! 0.2 by David Zoltan Kedves (kedazo@gmail.com)

INFO: the specified archive type: zip
INFO: cracking exemplo.zip, status file: exemplo.zip.xml
INFO: Resuming cracking from password: '1tC'
Probing: '2hD' [1029 pwds/sec]
Probing: '34Z' [1020 pwds/sec]
Probing: '3OM' [946 pwds/sec]
Probing: '4re' [794 pwds/sec]
Probing: '53l' [787 pwds/sec]
Probing: '5FF' [792 pwds/sec]
Probing: '6hP' [788 pwds/sec]
Probing: '6U5' [790 pwds/sec]
Probing: '7v4' [764 pwds/sec]
Probing: '83t' [711 pwds/sec]
Probing: '8Ef' [760 pwds/sec]
Probing: '9bi' [683 pwds/sec]
Probing: '9I3' [677 pwds/sec]
GOOD: password cracked: 'abc'

Se você quiser saber o número máximo de threads que seu sistema suporta, no Linux, use o comando lshw:

sudo lshw | grep thread
configuração: cores=2 enabledcores=2 threads=4

Uma thread é a menor sequência de uma instrução de um programa, que possa ser executada independentemente por um scheduler.
Saiba mais no Wikipedia.

O rarcrack suporta o máximo de 12 threads
Por fim, se quiser interromper o processo, use Ctrl + C. O aplicativo retoma o trabalho no ponto em que parou, caso você decida executá-lo novamente.

Referências:

https://launchpad.net/~ole.wolf
http://pt.wikipedia.org/wiki/For%C3%A7a_bruta
https://launchpad.net/~ole.wolf/+archive/ubuntu/rarcrack

Como encriptar um Shell Script com SHC

Neste texto, vou ensinar a baixar, instalar e usar SHC, um programa que encripta o código do seus shell scritps.
Antes de mais nada, eu gostaria de dizer que encriptar seus códigos não é uma prática recomendável. O ideal é documentar todo o script, de forma que qualquer pessoa o possa entender facilmente. Códigos fonte devem ser o mais acessíveis possível – já a informação com a qual eles lidam, é que deve ser restringida.
Se você precisa usar informações, usualmente confidenciais, como senhas, de forma automática, então deve procurar outra solução.
Hmmmm… você ainda está aqui?
Tenha em mente, contudo, que um script codificado através do SHC pode não ser legível para usuários comuns (creio que este seja o seu objetivo) — Contudo, uma pessoa que tenha conhecimento do seu funcionamento pode extrair o código criado pelo software.
Em tempo, SHC quer dizer SHell script Compiler.

Download e instalação

O software de que vamos tratar aqui, foi desenvolvido por Francisco Javier R. Garcia e você vai encontrar sua versão mais atualizada aqui.
Vamos começar com o download do código fonte do programa:

wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz

Uma vez baixado, desempacote e instale:

tar xvfz shc-3.8.9.tgz
cd shc-3.8.9
make

Verifique se tudo correu bem:

./shc -v
shc parse(-f): No source file specified
shc Usage: shc [-e date] [-m addr] [-i iopt] [-x cmnd] [-l lopt] [-rvDTCAh] -f script

Crie um shell script de exemplo

Para testar, você pode usar seu próprio shell script ou pegar este aqui:

#!/bin/bash
echo -n "Quantos numeros aleatorios voce deseja gerar? "
read max
for (( start = 1; start
do
echo -e $RANDOM
done

rode o script:

$ ./alea.sh
Quantos numeros aleatorios voce deseja gerar? 3
24682
1678
491

Encriptando o seu shell script com shc

Use o comando, a seguir, para fazer o trabalho:

./shc -f alea.sh

isto deverá gerar os seguintes arquivos:

ls -l alea*.*
-rwxrw-r--. 1 user group 149 Mar 27 01:09 alea.sh
-rwx-wx--x. 1 user group 11752 Mar 27 01:12 alea.sh.x
-rw-rw-r--. 1 user group 10174 Mar 27 01:12 alea.sh.x.c

Dos quais:

  • alea.sh é o seu script original
  • alea.sh.x é o seu script em formato binário e encriptado
  • alea.sh.x.c é o código fonte do script original em linguagem C

Após transformar o código do seu script, originalmente escrito em Bash para um script em C, o shc o compila, gerando o executável alea.sh.x.
Veja como testar:

$ file alea.sh
alea.sh: Bourne-Again shell script text executable
$ file alea.sh.x
alea.sh.x: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
$ file alea.sh.x.c
alea.sh.x.c: ASCII C program text

Execute o seu script encriptado

./alea.sh.x
Quantos numeros aleatorios voce deseja gerar? 3
7489
10494
29627

Determine uma data de expiração pro seu script

Com o uso do shc, é possível evitar que o seu script seja executado após uma certa data. Se for feita a tentativa de executar um script que já tenha expirado, uma mensagem de erro será exibida na tela.
Crie um novo script, usando a opção “shc -e“, que permite a entrada de uma data de expiração (que deve ser fornecida no formato dd/mm/yyyy:

./shc -e 31/12/2011 -f alea.sh

Veja o que acontece quando alguém tenta executar um script vencido:

./alea.sh.x
./alea.sh.x: has expired!
Please contact your provider

Você pode criar a sua própria mensagem de expiração, para o caso de redistribuir o seu script para pessoas que não falem inglês, por exemplo. Use a opção -m para isto.
Divirta-se!