PDA

Просмотр полной версии : Пример авторизации


controller
06.09.2015, 15:08
Народ нет случаем не у кого примера, исходника, авторизации на логин сервере л2 ХФ, на делфи

ScythLab
08.09.2015, 16:17
Поищи la2_client_emu.rar

controller
10.09.2015, 22:13
Нашел, это вроде как готовый исходник уже. Но я не могу в нем понять, проходит у меня авторизация или нет, при верных паре логин пароль и не верных результат один и тот же выдается в лог (

Так как я не очень понимаю, думаю может есть у кого готовый юнит для авторизации, мне нужно это для получения онлайна с сервера, и дальше уже оттуда вывести в другое окно, может поможете еще чем?

ScythLab
11.09.2015, 15:04
Если ты не можешь разобраться с этой простой программой, то тебе не модуль нужно просить, а "сделайте мне то-то и то-то и чтобы работало"

controller
12.09.2015, 09:53
ну спору нет, если ты разобрался, проще говорить, чем дать какую то подсказку, как исправить, я все темы тут перечитал, связанные с этой простой программой.... Просто я понять не могу, до какого уровня она работает, приходит один и тот же пакет в конце, 0х2А...

Добавлено через 16 часов 26 минут
при

bf_key:=HexToStr('6B60CB5B82CE90B1CC2B6C556C6C6C6C ');
//bf_key:=HexToStr('5F3B352E5D39342D33313D3D2D257854 215E5B24');
bf.Init(bf_key);
RS_connect;
RequestAuthLogin(Edit3.Text,Edit4.Text);


ругается на


Procedure Base256StringToFGInt(str256 : String; Var FGInt : TFGInt);
Var
temp1 : String;
i : longint;
trans : Array[0..255] Of String;
Begin
temp1 := '';
initialize8(trans);
For i := 1 To length(str256) Do temp1 := temp1 + trans[ord(str256[i])];
While (temp1[1] = '0') And (temp1 <> '0') Do delete(temp1, 1, 1);
Base2StringToFGInt(temp1, FGInt);
End;


Подскажите что не так?

Yegor
12.09.2015, 10:55
0х2А такого пакета нет в процессе авторизации.

А программу ты в какой версии делфи компилируешь?

Выложи скрин результата работы програмы.

controller
12.09.2015, 11:44
Делфи 7...
если без RequestAuthLogin(Edit3.Text,Edit4.Text); то вот результат на изображении

http://s017.radikal.ru/i442/1509/1e/be82ce887691.png
если же с RequestAuthLogin(Edit3.Text,Edit4.Text);

то ошибка выше

Yegor
12.09.2015, 16:42
А на другой сервер пробовал пождклчюаться?

controller
12.09.2015, 19:03
Так ошибюка одна и та же в коде, я указал строку, когда пытаюсь послать RequestAuthLogin

ScythLab
14.09.2015, 12:14
ну спору нет, если ты разобрался, проще говорить, чем дать какую то подсказку, как исправить, я все темы тут перечитал, связанные с этой простой программой.... Проще обижаться и винить весь мир, в том что тебе такому замечательному и жаждущему знаний человечику не помогают, чем самому писать работающие программы.

Даю подсказку: это прога была написана на Delphi с Ansi строками, я так думаю, ты сейчас используешь более свежую версию Делфей с Unicode строками. Как исправишь эту часть, тогда уже нужно будет думать о сервере и его защите.

Yegor
14.09.2015, 23:36
Даю подсказку: это прога была написана на Delphi с Ansi строками, я так думаю, ты сейчас используешь более свежую версию Делфей с Unicode строками. Как исправишь эту часть, тогда уже нужно будет думать о сервере и его защите.

Делфи 7...

Не в этом дело.

Пусть controller наконецто попробует залогиниться на другому сервер.

ScythLab
15.09.2015, 10:24
Да, мой косяк: не увидел упоминание седьмой делфи.
ТС, слушай дяденьку Yegor, он плохого не посоветует :)

controller
15.09.2015, 21:43
я слушаю, и говорил что пробывал. Но вы видимо не увидели, что у меня при попытке зайти на сервер, а именно при вызове RequestAuthLogin, вылетает ошибка, и указывает на строку
While (temp1[1] = '0') And (temp1 <> '0') Do delete(temp1, 1, 1);
в коде

Procedure Base256StringToFGInt
(str256 : String; Var FGInt : TFGInt);
Var
temp1 : String; i : longint;
trans : Array[0..255] Of String;
Begin
temp1 := '';
initialize8(trans);
For i := 1 To length(str256) Do temp1 := temp1 + trans[ord(str256[i])]
; While (temp1[1] = '0') And (temp1 <> '0') Do delete(temp1, 1, 1); Base2StringToFGInt(temp1, FGInt);
End;
И в итоге результат нулевой.

ScythLab
16.09.2015, 12:38
Ты просил пример? Тебе его дали, примеры нужны для того чтобы их изучать и пытаться в них разобраться. Ты же пример пытаешься использовать как рабочий механизм, который должен работать в твоих условиях и на твоем сервере.
Хочешь учиться? Читай статьи, ищи инфу по FGInt, по RSA, читай статьи по пакетам ла2 (благо их в 2006-2009 года написали в избытке, в том числе ссылки на пару статей приведены на нашем сайте).

От тебя всего-то требовалось понять, что функция Base256StringToFGInt вызывается из функции RSAEncrypt, по названию можно понять, что RSAEncrypt шифрует данные по алгоритму RSA, если бы ты посмотрел код, то понял, что шифрация идет с помощью библиотеки FGInt (в том числе с помощью функции Base256StringToFGInt), если шифрация не срабатывает, то скорей всего неверные данные на вход функции RSAEncrypt, с которыми и нужно разбираться.
И даже если для тебя шифрация слишком сложна и разбираться c ней впадлу (тема действительно не самая тривиальная для начинающего и чрезмерно амбициозного программиста), то можно было бы задаться одним простым вопросом: зачем отправлять RequestAuthLogin если тебе даже не пришел пакет GGAuth и дисконнект происходит после твоего пакета RequestGGAuth? Статьи TechnoWiz@rd и KyberPrizrak по очередности обмена данных клиент-сервера ла2, я надеюсь, ты читал?

controller
16.09.2015, 13:52
очередность обмена пакетами я читал в текcтовом файле LOGIN RCF из примера la2_emu_client

Yegor
16.09.2015, 14:46
а именно при вызове RequestAuthLogin, вылетает ошибка, и указывает на строку
While (temp1[1] = '0') And (temp1 <> '0') Do delete(temp1, 1, 1);
в коде


Епрст. Уже пытаюсь вторую страницу разглядеть. Так какая именно ошибка? Что пишет? Exception вылетает? CheckRangeError? Что именно?