Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.12.2012, 16:05
VarvarNet VarvarNet вне форума
Прохожий
 
Регистрация: 12.12.2012
Сообщения: 10
Репутация: 10
Вопрос Отправка и получение ассемблерных кодов

Доброго времени суток, уважаемые формчане.
Есть у меня задачка логинится к серверу.
Сервер не мой и логинирование на нём происходит следующим образом:
Мы коннектимся, сервер присылает нам пакет, мы его читаем, формируем свой, в который запихиваем данные (логин - пароль) и отправляем обратно, ждём ответ. Получает пакет с кодом: успех, провал.

Есть исходник того, как это реализуется на C#, а вот как подобное реализовать на delphi у меня, честно говоря, не хватило соображаловки, буду благодарен за совет.

Описание класса на C#
Код:
using System.Collections.Generic;
using System.Net.Sockets;
using System.Security.Cryptography;
using System.Text;

namespace PWCheckAccount
{
class PWAuth
{
string IP;
int Port;

public bool Result { get; private set; }// Результат авторизации(связка(логин+пароль) верна/не верна)
public bool Connected { get; private set; }// Результат подключения к серверу(подключиться удалось/не удалось)

public PWAuth(string ip) : this(ip, 29000) { }
public PWAuth(string ip, int port)
{
IP = ip;
Port = port;
}
public bool Check(string login, string pass)
{
Result = false;
Connected = false;

TcpClient tcp = new TcpClient();
try
{
tcp.Connect(IP, Port);
}
catch { return false; }

Socket skt = tcp.Client;
Connected = skt.Connected;
while (skt.Connected)
{
byte[] buf = new byte[0xFF];
skt.Receive(buf);

if (buf[0] == 0x01)
{
List<byte> Send = new List<byte>();

byte[] key = new byte[0x10];
for (int i = 0; i < 0x10; i++) key[i] = buf[i + 3];

byte[] loginbt = Encoding.GetEncoding(1251).GetBytes(login);
byte[] hash = GetHash(key, login, pass);

Send.Add((byte)loginbt.Length);
Send.AddRange(loginbt);
Send.Add((byte)hash.Length);
Send.AddRange(hash);
Send.Add(0x00);

Send.Insert(0,(byte)Send.Count);
Send.Insert(0, 0x03);

skt.Send(Send.ToArray());
continue;
}

Result = buf[0] == 0x02;
break;
}
skt.Close();
return Result;
}
private byte[] GetHash(byte[] key, string login, string pass)
{
byte[] logwithpass = Encoding.ASCII.GetBytes(login + pass);
MD5 md5 = MD5.Create();
return new HMACMD5(md5.ComputeHash(logwithpass)).ComputeHash( key);
}

}
}

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

Пользуюсь XE2 clientsocket.

Заранее благодарю!
Ответить с цитированием
  #2  
Старый 13.12.2012, 16:21
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от VarvarNet
проблему , собственно составила работа с такими 0x03 значениями, т.к. не имею ни малейшего понятия как с ними работать в делфе.
Это в сишных языках так записываются шестнадцатеричные числа.
В Delphi шестнадцатеричные числа записываются через знак доллара: $03
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
VarvarNet (13.12.2012)
  #3  
Старый 13.12.2012, 16:27
VarvarNet VarvarNet вне форума
Прохожий
 
Регистрация: 12.12.2012
Сообщения: 10
Репутация: 10
По умолчанию

Премного благодарен!
Ответить с цитированием
  #4  
Старый 13.12.2012, 16:30
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Смех

Цитата:
Сообщение от VarvarNet
проблему , собственно составила работа с такими 0x03 значениями
это они так названы в заголовке темы:
Цитата:
ассемблерных кодов
?
sorry for offtop
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 13.12.2012, 16:43
VarvarNet VarvarNet вне форума
Прохожий
 
Регистрация: 12.12.2012
Сообщения: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
это они так названы в заголовке темы:

?
sorry for offtop
Собственно, да.
Назвал так, потому как в статье, по которой разбирал всё это добро они были названы так. А так как я пока учусь, то не стал придумывать своих названий, думал, уж раз люди пишут, наверное знают о чём.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:06.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter