Ambiente: Ubuntu 12.04 64 bits
Recentemente me chamaram para trocar a senha do root de um servidor Linux. Chegando lá percebi que o Login não era um Linux e sim um sistema chamado mikrokit, é um sistema para hardwares como wireless and routers, um distro firewall. Apesar de nunca ter tido contato com esse sistema, é uma boa indicação para quem quer algo prático e funcional sem precisar instalar um Linux do zero, http://www.mikrotik.com
Esse site ( http://aacable.wordpress.com/2012/01/14/howto-recover-mikrotik-admin-account-forgotten-password/ ) tem duas dicas para recupera a senha do sistema mikrokit. O primeiro passo é pegar o arquivo user.dat e colocar no site que o site te mostra o usuario/senha. Bootar o servidor com ubuntu LiveCD, montar a partição do sistema mikrokit e procurar pelo arquivo user.dat, find . -name user.dat . Verifique se o arquivo não tem tamanho zero. Eu encontrei dois, um deles com tamanho zero. Copie para um pendrive. Eu inicialmente usei a solução online para mostrar os usuarios/senhas com esse site, http://mikrotikpasswordrecovery.com/ , pasta selecionar o arquivo user.dat que você copiou e depois "Show password". Esse site mostrou dois usuarios/senha, mas isso não foi o suficiente para logar no sistema, autenticação falhava todas as vezes. Logo pensei que o antigo administrador desligou todos os usuários, por isso seria impossível entrar no sistema com esses dois usuários.
- - - Saida:
nome_adm <senha>
admin <senha>
Eu parti para o a segunda solução, achei estranho não ter um usuário válido para autenticar direto no TTY do servidor, por isso usei o "MikroTik Password Recovery" , mtpass , http://manio.skyboo.net/mikrotik/.
Usei a última versão, http://manio.skyboo.net/mikrotik/mtpass-0.9.tar.bz2
$ mkdir -p /tmp/mt
$ cd /tmp/mt
$ wget -c http://manio.skyboo.net/mikrotik/mtpass-0.9.tar.bz2
$ bzip2 -d mtpass-0.9.tar.bz2; tar xfv mtpass-0.9.tar.bz2
$ cd /tmp/mt/mtpass-0.9
mas na hora de compilar, ERRO:
$ make
ERRO:
g++ -lssl -lcrypto mtpass.cpp -o mtpass
/tmp/ccekGgrB.o: In function `cUserRecord::DecryptAndShowRecord()':
mtpass.cpp:(.text._ZN11cUserRecord20DecryptAndShowRecordEv[_ZN11cUserRecord20DecryptAndShowRecordEv]+0xd9): undefined reference to `MD5'
collect2: error: ld returned 1 exit status
make: *** [mtpass] Error 1
SOLUÇÃO:
$ g++ mtpass.cpp -lgnutls-openssl -o mtpass
Depois de compilado com sucesso! Vamos para a mágica!
$ ./mtpass user.dat
Bingo! Como imaginava o antigo ADM não seria tão loco de desligar todos os users!
Rec# | Username | Password | Disable flag | User comment
--------------------------------------------------------------------------------------------
1 | admin_nome | <senha> | USER DISABLED |
2 | admin | <senha> | USER DISABLED | system default user
3 | suporte | <BLANK PASSWORD> | |
4 | suporte | <senha> | |
Apereceu 4 usuários, 2 há mais que na solução web! :) Ai foi só testar com o respectivo usuário/senha.
Faça bom aproveito!