HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

помогите Пересести с Си на Делфи простую функцию
  #1  
Старый 19.11.2008, 20:00
Linuxo
Новичок
Регистрация: 19.11.2008
Сообщений: 1
С нами: 9197330

Репутация: 0
По умолчанию помогите Пересести с Си на Делфи простую функцию

добрый день!
я учусь программировать на делфи, но совсем не знаю синтаксиса Си...

нужен перевод этого кода на паскальный (или хотябы расписать по пунктам что тут делается)


#define AIM_MD5_STRING "AOL Instant Messenger (SM)"

/* calculate md5-hash to send to server */
md5_init(&state);
md5_append(&state, (const md5_byte_t *)authkey, strlen(authkey));
md5_append(&state, (const md5_byte_t *)passwd, strlen(passwd));
md5_append(&state, (const md5_byte_t *)AIM_MD5_STRING, strlen(AIM_MD5_STRING));
md5_finish(&state, (md5_byte_t *)auth_hash);

/* Now we ready send to server auth_hash array (16 bytes long) */

этот код подготавливает md5 хеш пароля для безопасного логина в icq


AOL Instant Messenger (SM) - необходимая константа
authkey - случайная строка, которая дается сервером

обе эти вещи учавствуют в хешировании пароля.

Спасибо.
 
Ответить с цитированием

  #2  
Старый 20.11.2008, 10:20
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию

Это всеголишь заголовочный файл типа *.h в котором описаны константы и функции. Сами функции поищи в файле с такимще названием но расширением или .c или .cpp
 
Ответить с цитированием

  #3  
Старый 20.11.2008, 12:34
sw_max
Новичок
Регистрация: 08.07.2007
Сообщений: 4
С нами: 9917097

Репутация: 0
По умолчанию

да нет... тут идет вызов только стандартных функций МД5 крипта, все остальное - нужная последовательность действий...

вот делфовый код из исходников крысы...
но не понятно все-же...
например что такое
MD5Digest : TMD5Digest;
MD5Context : TMD5Context;
и откуда оно берется





procedure TicqSession.parseAuthKey(snac:string);
var
I : Integer;
MD5Digest : TMD5Digest;
MD5Context : TMD5Context;
key : String;
sendKey : String;
begin
i := 1;
key := getWNTS(snac, i);
FillChar(MD5Digest, sizeOf(TMD5Digest), 0);
// for I := 0 to 15 do
// Byte(MD5Digest[I]) := 0;
MD5Init(MD5Context);
MD5UpdateBuffer(MD5Context, PChar(key), length(key));
MD5UpdateBuffer(MD5Context, PChar(pwd), length(pwd));
MD5UpdateBuffer(MD5Context, PChar(AIM_MD5_STRING), length(AIM_MD5_STRING));
MD5Final(MD5Digest, MD5Context);
sendKey := '';
for I := 0 to 15 do
sendKey := sendKey + MD5Digest[I];
// sendFLAP( LOGIN_CHANNEL, #0#0#0#1
if saveMD5Pwd then
key := TLV($4C, '')
else
key := '';

sendSNAC( $17, $02,
TLV(1, myinfo.uinAsStr)
+TLV($25, sendKey)
// By Rapid D
+TLV(3, 'ICQ Inc. - Product of ICQ (TM).2003b.5.56.1.3916.85')
+TLV($16, word($010A))
+TLV($17, word($0002))
+TLV($18, word($0038))
+TLV($19, word($0001))
+TLV($1A, word($0f4c))
+TLV($14, integer($55))
+TLV($E,'us')
+TLV($F,'en')
+key
);
notifyListeners(IE_loggin);
end;


может кто-то знает алгоритм подготовки icq хеша?
автор программы icq.message.logger утверждает что это md5 (соль + пароль + константа), но мне кажется он сложнее... судя по этим функциям на Си и Делфи
 
Ответить с цитированием

  #4  
Старый 20.11.2008, 13:20
crystalbit
Участник форума
Регистрация: 06.06.2008
Сообщений: 171
С нами: 9436571

Репутация: 110
По умолчанию

Кликни держа ctrl на tmd5digest и узнаешь, походу это просто сложный тип

Там мд5, но мд5 не пароля, а пароля с солью в изощренной форме
 
Ответить с цитированием

  #5  
Старый 20.11.2008, 14:54
sw_max
Новичок
Регистрация: 08.07.2007
Сообщений: 4
С нами: 9917097

Репутация: 0
По умолчанию

Цитата:
Сообщение от crystalbit  
Кликни держа ctrl на tmd5digest и узнаешь, походу это просто сложный тип

Там мд5, но мд5 не пароля, а пароля с солью в изощренной форме
контрал-клики ничего не дают

про изощренную форму в курсе, ее и пытаемся понять! что в этом примере, что в начале на Си - одно и то же делается, вопрос - что!?
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Профи, помогите преобразовать данную функцию zahirmen С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 7 24.09.2008 23:58
Уменьшаем размер программ на Делфи begin_end С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 3 22.05.2007 23:43



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.