Сайт Романа ПарпалакаБлог20210827

Фейковый pop3-сервер

27 августа 2021 года, 00:29

Я оказался в ситуации почти без доступа к некоторому почтовому ящику. Пароль не помнил, но этот пароль был сохранен в почтовом клиенте The Bat. Почтовик вроде как защищает пароль: его нет в открытом виде в конфиге и его нельзя скопировать из окна настройки:

Когда-то давно в аналогичной ситуации я установил анализатор трафика и взял пароль из сетевого пакета. С тех пор поддержку нешифрованного подключения через pop3 на сервере отключили, и такой фокус уже не проходит.

Я стал думать и сообразил, что фокус с перехватом трафика получился бы, если бы я подменил pop3-сервер на свой, который не требует никакого шифрования. К счастью, The Bat позволяет изменить сервер, не требуя повторного ввода пароля. Так что я ввел в это окошко локальный адрес, отключил шифрование и смог подключиться к локальному «серверу».

Чтобы не ставить настоящий сервер, нагуглил скрипт фейкового pop3-сервера. Вместе с этим пришлось узнать, что делает команда CAPA. У меня заработал такой вариант:

#!/usr/bin/env python
import socket

c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
c.bind(('192.168.0.203',110))
c.listen(1)

while 1:
    csock, caddr = c.accept()
    cfile = csock.makefile('rw', 0)
    print "Connection accepted."
    cfile.write("+OK POP3 PROXY server ready mail.server.com\r\n")

    line = cfile.readline().strip()
    print "LINE: " + line
    cfile.write("+OK\r\nUSER\r\n.\r\n")

    line = cfile.readline().strip()
    print "LINE: " + line
    cfile.write("+OK\r\n")

    line = cfile.readline().strip()
    print "LINE: " + line
    cfile.write("+OK\r\n")

    line = cfile.readline().strip()
    print "LINE: " + line
    cfile.write("+OK\r\n")

    line = cfile.readline().strip()
    print "LINE: " + line
    cfile.write("+OK\r\n")

Запускается и после нажатия на кнопочку синхронизации выдает желаемый пароль. Даже трафик не нужно перехватывать:

roman@zeta:~$ sudo python pop3.py
Connection accepted.
LINE: CAPA
LINE: USER example
LINE: PASS password
LINE: STAT
LINE: QUIT
    Оставить комментарий
Поделиться
Записи