Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2011, 10:03   #1
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию Алгоритм MD5 для Sip клиента

Здравствуйте форумчане!!! Подскажите знающие какой алгоритм MD5 авторизации ответа Sip клиента серверу, дайте направление, в интернете кое что нашел пытался реализовать но сервер меня непустил.
Заранее спасибо!

кусочек кода сложения в алгоритм
Код:
function TSipClient.Authorization_MD5: String;
var
A1,A2:string;
begin
A1:=format('%s:%s:%s',[FSipProtocol.Username,FSipProtocol.Realm,FSipProtocol.Password]);
A2:=format('%s:%s',[FSipProtocol.Method,FSipProtocol.Uri]);
result:=md5(format('%s:%s:%s',[md5(a1),FSipProtocol.nonce,md5(a2)]));
end;
Проснифел своего клиента пакет нормальный сравнил с X-Lite, код MD5 разный хотя сформирован пакет также.

Последний раз редактировалось Aliens_wolfs; 08.11.2011 в 10:25.
Aliens_wolfs вне форума Ответить с цитированием
Старый 08.11.2011, 10:27   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

md5 алгоритм в общем то один.
но он бинарный поидее, чтоб md5 был тем же, должно все совпадать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.11.2011, 10:46   #3
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Я протокол читал там строки в пакете складываются вместе затем преобразуются в MD5. Ошибка я так понял в последовательности этих сложений.

сниф X-Lite

Цитата:
REGISTER sip:sipnet.ru SIP/2.0
Via: SIP/2.0/TCP 192.168.0.110:7494;branch=z9hG4bK-d8754z-5929a2421d793108-1---d8754z-;rport
Max-Forwards: 70
Contact: <sip:aliens_wolfs@81.23.111.10:6023 9;rinstance=17e972dd53a32997;transp ort=TCP>
To: "aliens_wolfs"<sip:aliens_wolfs@sip net.ru>
From: "aliens_wolfs"<sip:aliens_wolfs@sip net.ru>;tag=bf22741e
Call-ID: MDZiZDhjZWYwY2Y2MWJlYzgxMzkwMThkOGE 0NjMwNTM.
CSeq: 2 REGISTER
Expires: 3600
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO
User-Agent: X-Lite release 1100l stamp 47546
Authorization: Digest username="aliens_wolfs",realm="etc. tario.ru",nonce="B5803B1764106C9D96 05",uri="sip:sipnet.ru",response="8 ee6ffdbf316520f555089b546c5e225",cn once="60f5159c073659c21fbd81b1707ec 1ac",nc=00000001,qop=auth,algorithm =MD5,opaque="opaqueData"
Content-Length: 0
response=" 8ee6ffdbf316520f555089b546c5e225 " это и есть сложенные строки в MD5,
я так понял там идет сложение по строке в пакете Authorization:
MD5(магич код SIP= z9hG4bK : имя пользователя : пароль : etc.tario.ru : B5803B1764106C9D9605 : sip:sipnet.ru)
Но даже в ручную генератором MD5 пробую по разному сложить, код несовпадает.
Расшифровать пробую тоже невыходит.

Последний раз редактировалось Aliens_wolfs; 08.11.2011 в 11:15.
Aliens_wolfs вне форума Ответить с цитированием
Старый 19.11.2011, 21:27   #4
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

почитайте про хеш-функции для начала, азы криптографии. MD5 будет уникальным (почти уникальным) для строки, отличающейся от такой же хоть на 1 символ. Тут не работает сложение кусков MD5-строк. Для любой последовательности символов генерируется уникальная строка хеш-кода. Предполагаю, вы используете модуль MD5.pas. Этот модуль грешен математическими багами и дает много коллизий. Используйте набор классов DCPCrypt:
dcpcrypt.zip

пример работы даю тут же:

Код:
uses
  DCPmd5;

...

function GetMD5(const AString:AnsiString):AnsiString;
var
  i:Byte;
  LMD5:TDCP_md5;
  LDigest:array[0..15] of Byte;
begin
  LMD5:=TDCP_md5.Create(nil);
  LMD5.Init;
  LMD5.UpdateStr(AString);
  LMD5.Final(LDigest);
  LMD5.Free;
  Result:='';
  for i:=0 to 15 do
    Result:=Result+IntToHex(LDigest[i],2);
end;
помог - скажи спасибо (весы в профиле)
"ковыряю изнутри" (с)

Последний раз редактировалось 3D Hunter; 19.11.2011 в 21:30.
3D Hunter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализовать HMAC-MD5 алгоритм в Win32 application Glen Win Api 3 21.08.2011 20:10
Строку в MD5-hash если Строка является MD5-хешем... Человек_Борща Общие вопросы Delphi 0 13.04.2010 15:27
PHP MD5 и Delphi/C/C++ MD5 в чем отличие? Человек_Борща Общие вопросы Delphi 1 05.04.2010 20:18
Какой алгоритм Sip авторизации Aliens_wolfs Работа с сетью в Delphi 0 25.01.2010 14:00
авторизация Sip клиента Aliens_wolfs PHP 1 13.01.2010 01:09