bumsaver
@bumsaver

Miranda + installer + jabber + password =?

Есть джаббер сервер(в локальной сети). необходимо сделать для пользователей локальной сети настроенный джаббер-клиент.


Глаз пал на миранду, ибо можно поставить ее в нужную позу. Но столкнулся с нюансом.


Задача: необходимо что бы при инсталяции программы пользователь вводил свои логин\пароль от даббер аккаунта, далее запускалось настроенное чудо.


Как запихнуть шифрованный пароль в конфиг(.ini файл)? какое шифрование в миранде используется (точнее как шифрует миранда пароли)?
  • Вопрос задан
  • 2898 просмотров
Пригласить эксперта
Ответы на вопрос 3
olololog
@olololog
Во время установки открываете программно миранду, приводите окно ввода пароля в нужное состояние (чистите от ненужных контролов и переименовываете). Пользователь вводит пароль, миранда сохраняет его в конфиг. Затем вы убиваете миранду.

Можно запускать уже установленный экземпляр, можно создать в темпе папку и положить в неё версию миранды без рюшечек, а затем скопировать конфиг куда нужно. Этот вариант хорош тем, что если потом понадобится пересобрать установщик под новую версию, у вас не будет мороки.

Не забудьте застраховаться: при установке показать галочку «не вводить пароль прямо сейчас». Если по каким-то причинам не сработает, пользователь сможет установить миранду без введенных логина-пароля.

Да, да, да, я знаю, какой это отвратительный костыль :) Пользуйтесь им только тогда, когда вариантов не останется вообще.
Ответ написан
savostin
@savostin
Еще один программист
Не уверен, что до сих пор так сохранилось:
Miranda Password Encryption and it's Decryption Operation

Miranda uses simple encryption algorithm with simple maths to cryptize the password from the spying eyes. For all protocols except Jabber it uses common algorithm to encrypt the password.

In this simple encryption mechanism, Miranda adds the magic number 5 to each character in the password to encode it and then stores into the profile file.

Here is the simple decryption mechanism for all protocols (except Jabber) supported by Miranda
for(int i=0; i<PasswordLength; i++)
{
clearPassword[i] = encryptedPassword[i]-5;
}

For Jabber protocol (as per version v0.9.10) it uses XOR based encoding algorithm using the magic number 0xC3 to secure the password, Here is the decryption algorithm for the Jabber Protocol

for(int i=0; i<PasswordLength; i++)
{
clearPassword[i] = encryptedPassword[i] ^ 0xC3;
}

On completion of the above operation with those magic numbers, you will have the secret in your hands!
Ответ написан
savostin
@savostin
Еще один программист
Ничего не поменялось (file plugins/dbrw/utils.c):
#define DBRW_ROT 5
INT_PTR utils_encodeString(WPARAM wParam,LPARAM lParam) {
char *msg = (char*)lParam;
int i;

for (i=0; msg[i]; i++) {
msg[i] = msg[i] + DBRW_ROT;
}
return 0;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы