Jabber: восстановление пароля для пользователей Миранды

Перевод статьи Jabber password recovery for Miranda IM users, автор оригинала - Opt-In Software

Да, это случается со мной тоже. Наконец-то я забыл свой пароль в Jabber :-)

Я использовал мессенджер Miranda IM для Windows. И когда мне нужно было ввести пароль в другом клиенте JABBER на моем телефоне, оказалось, что я его забыл.

Google дал мне некоторые ссылки на программы, которые позволяют восстанавливать забытые пароли. Тем не менее, я не доверяю им. Нет никаких гарантий, что восстановленный пароль не станет известен третьим лицам.

К счастью, я программист, знакомый с сетевыми протоколами, и поэтому я решил попытаться извлечь пароль (восстановить его) из Miranda IM самостоятельно.

Во- первых, я нашел в настройках Miranda IM возможность отключить шифрование (они называются "Использовать SSL" и "Использовать TLS").
Кроме того, я могу включить сжатие (снимите флажок "Включить сжатие потока (если возможно)" во вкладке Дополнительно). Это позволило мне использовать перехватчик для изучения протокола обмена между Мирандой и сервером JABBER.

Во- вторых, я обнаружил , что я могу "Указать вручную хост для соединения". Это позволяет мне сделать мой собственный JABBER сервер ,
который будет взаимодействовать с моим JABBER клиентом, запустить его на компьютере и попросить Miranda IM использовать его вместо реального сервера JABBER.

Я назвал его JabberHost.

В- третьих, я обнаружил, что сервер информирует о возможных механизмах аутентификации, включая Plain:

<?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' from='jabber.org' id='1647f61c13930926' version='1.0'>
<stream:features><starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
<mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
<mechanism>CRAM-MD5</mechanism>
<mechanism>LOGIN</mechanism>
<mechanism>PLAIN</mechanism>
<mechanism>DIGEST-MD5</mechanism>
<mechanism>SCRAM-SHA-1</mechanism>
</mechanisms>
<compression xmlns='http://jabber.org/features/compress'><method>zlib</method></compression>
<ver xmlns='urn:xmpp:features:rosterver'>
<optional/></ver></stream:features>

JabberHost изменяет ответ о доступных механизмах аутентификации, и говорит JABBER-клиенту , что он поддерживает только обычную проверку подлинности:

<?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' from='jabber.org' id='1647f61c13930926' version='1.0'>
<stream:features><starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
<mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>
<mechanism>PLAIN</mechanism>
</mechanisms>
<compression xmlns='http://jabber.org/features/compress'><method>zlib</method></compression>
<ver xmlns='urn:xmpp:features:rosterver'>
<optional/></ver></stream:features>

Когда клиент отправляет данные аутентификации JabberHost, он декодирует имя пользователя и пароль.
Вы можете свободно скачать источники JabberHost, а также скомпилированный двоичный файл.

Источники JabberHost : jh-src.zip
Чтобы построить JabberHost из исходных текстов, вам нужны Delphi 7 и Indy 9 библиотеки.

JabberHost Binary : jh-bin.zip
Вам не нужна установка, нужно просто скачать, распаковать куда-нибудь и использовать это.

На скриншоте ниже я показал необходимые настройки в Miranda IM.

Jabber восстановление пароля для пользователей Миранды