Вверх ↑
Этот топик читают: Гость
Этот топик был перемещен из раздела "Помощь по среде"
Ответов: 95
Рейтинг: 1
#1: 2016-12-05 00:37:42 ЛС | профиль | цитата
Поднимал данную тему пару месяцев назад на форуме , но так и не нашёл решения.
В общем нужна помощь с подключением к чату "Галактика Знакомств" через 152 протокол с использованием хеша, Исходник на Delphi есть и необходимые компоненты для дальнейшей разработки программы но нет знаний в работе с Delphi хотелось бы осуществить это всё в Hiasm.

Исходник Delphi + необходимый компонент OverbyteIcsV8Gold - [url]myasm.ueuo.com/files/Galaxy152Delphi.zip[/url]
Хеш для Hiasm - [url]myasm.ueuo.com/files/Hash152.zip[/url] (Огромное спасибо Netspirit за написание его под Hiasm)
необходимо положить в папку Code.

Cхема :

Add(MainForm,2953706,315,224)
{
Width=375
Height=465
Position=1
link(onCreate,16482401:doOpen,[])
}
Add(Edit,16355833,245,217)
{
Left=5
Top=25
Width=145
Ctl3D=1
Text="15s24vpoo2"
Alignment=2
}
Add(Label,16268837,217,77)
{
Left=5
Top=10
Width=106
Height=17
Caption="Код востановления:"
}
Add(Label,4084884,135,73)
{
Left=5
Top=50
Width=26
Height=17
Caption="Лог:"
}
Add(Memo,7124130,546,238)
{
Left=5
Top=65
Width=225
Height=125
Ctl3D=1
AddType=1
ScrollBars=2
}
Add(TCP_Client,16482401,371,238)
{
Port=6667
IP="95.172.133.164"
link(onRead,5432023:doCharset,[])
}
Add(Charset,5432023,427,238)
{
Type=7
link(onCharset,7124130:doAdd,[])
}
Add(FormatStr,4120375,245,273)
{
Mask=":ru IDENT 152 -1 4030 1 2 :GALA\r\nRECOVER %1\r\nPHONE 360 640 1 2 :MPP_v.8.0.12\r\n"
link(onFString,7592917:doWork2,[])
link(Str1,16355833:Text,[])
}
Add(Button,3527773,161,273)
{
Left=160
Top=20
Width=70
Height=25
Ctl3D=0
Caption="Go"
link(onClick,4120375:doString,[])
}
Add(InlineCode,11970995,241,366)
{
WorkPoints=#10:doCalcHash|
EventPoints=#8:onResult|
DataPoints=#3:Str|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|4:uses|22: KOL, Share, Hash152;|0:|4:type|21: THiAsmClass = class|11: private|0:|10: public|21: Str: THI_Event;|29: onResult: THI_Event; |58: procedure doCalcHash(var _Data: TData; Index: Word);|6: end;|0:|0:|14:implementation|0:|0:|0:|65:procedure THiAsmClass.doCalcHash(var _Data: TData; Index: Word); |3:var|14: Hash: string;|5:begin|57: Hash := Hash152.CreateHash(ReadString(_Data, Str, ''));|42: _hi_CreateEvent(_Data, @onResult, Hash);|4:end;|0:|4:end.|
link(onResult,9952672:doWork3,[(340,372)])
link(Str,12725161:Text,[])
}
Add(Button,14778441,183,366)
{
Left=60
Top=220
Width=80
Height=25
Ctl3D=0
Caption="Hash"
link(onClick,11970995:doCalcHash,[])
}
Add(Label,7710592,175,75)
{
Left=5
Top=240
Width=49
Height=17
Caption="Запрост:"
}
Add(Memo,10086970,544,352)
{
Left=5
Top=255
Width=355
Height=140
Ctl3D=1
Strings=#31::ru IDENT 152 -1 4030 1 2 :GALA|18:RECOVER 15s24vpoo2|31:PHONE 360 640 1 2 :MPP_v.8.0.12|
}
Add(Button,5030718,496,414)
{
Left=5
Top=400
Width=80
Height=25
Ctl3D=0
Caption="Send"
link(onClick,12470601:doData,[])
}
Add(DoData,12470601,544,414)
{
link(onEventData,16000069:doWork,[])
link(Data,10086970:Text,[])
}
Add(LineBreakEx,16000069,588,414)
{
}
Add(LineBreakEx,7187201,294,288)
{
Type=1
link(OnEvent,7592917:doWork3,[(333,294)])
}
Add(HubEx,7592917,329,273)
{
link(onEvent,9952672:doWork2,[])
}
Add(Edit,12725161,241,324)
{
Left=5
Top=195
Width=135
Text="??"
}
Add(HubEx,9952672,336,273)
{
link(onEvent,16482401:doSend,[(359,279)(359,258)])
}


В данном примере я дохожу до получения ID;Pass;Nick пользователя далее нужен шаг для входа в сам чат уже с использованием хеша понял по куску исходника Delphi :

WSocket1.Sendline('USER '+TS[1]+' '+TS[2]+' '+Nick+' '+hash);


Хеш генирирует какой то код как я понял его нужно отправить обратно на сервер , проделал сотни вариантов методом тыка в итоге ничего не получилось одни синтаксические ошибки от сервера.

Может кто то сможет помочь в данной проблеме

5.jpg

Редактировалось 2 раз(а), последний 2016-12-05 00:42:03
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 2193
Рейтинг: 673
#2: 2016-12-06 02:24:21 ЛС | профиль | цитата
Saturn36rus, смотрите unit1.pas в процедуре WSocket1DataAvailable.
Вот вам небольшой набросок:
схема

Add(MainForm,4378101,245,63)
{
Width=935
Height=600
Position=1
link(onCreate,16482401:doOpen,[])
}
Add(Edit,16355833,756,672)
{
Left=5
Top=25
Width=145
Ctl3D=1
Text="15s24vpoo2"
Alignment=2
}
Add(Memo,7124130,539,84)
{
@Hint=#31:Это последние полученные данные|
Left=5
Top=65
Width=225
Height=125
Ctl3D=1
ScrollBars=2
AddHint(-84,-32,194,13,@Hint)
}
Add(TCP_Client,16482401,301,77)
{
Port=6667
IP="95.172.133.164"
link(onRead,6527222:doEvent1,[])
}
Add(Charset,5432023,378,84)
{
Type=7
link(onCharset,1804923:doReplace,[])
}
Add(FormatStr,4120375,756,728)
{
Mask=":ru IDENT 152 -1 4030 1 2 :GALA\r\nRECOVER %1\r\nPHONE 360 640 1 2 :MPP_v.8.0.12\r\n"
link(onFString,3352258:doWork,[])
link(Str1,16355833:Text,[])
}
Add(Replace,1804923,427,84)
{
SubStr=" "
DestStr="\r\n"
link(onReplace,2130206:doEvent1,[(481,90)(481,83)])
}
Add(Hub,6527222,350,77)
{
OutCount=3
link(onEvent1,7124130:doClear,[(469,83)(469,97)])
link(onEvent2,5432023:doCharset,[])
link(onEvent3,5559791:doRead,[(373,97)(373,790)])
}
Add(Memo,8633362,658,77)
{
@Hint=#30:Это лог всех полученных данных|
Left=250
Top=65
Width=285
Height=360
Ctl3D=1
AddType=1
ScrollBars=2
AddHint(-74,-55,181,13,@Hint)
}
Add(Hub,2130206,504,77)
{
link(onEvent1,8633362:doAdd,[])
link(onEvent2,7124130:doAdd,[])
}
Add(ArrayRW,5559791,399,784)
{
@Hint=#20:Читаем первую строку|
Index=Integer(0)
link(onRead,8821029:doCase,[])
link(Array,6333921:getVar,[])
AddHint(-95,44,131,13,@Hint)
AddHint(10,-22,21,13,Index)
}
Add(Case,3396458,602,567)
{
Value=String(HAAAPSI)
link(onNextCase,1321523:doCase,[(660,573)(660,453)(597,453)(597,363)])
link(onTrue,6457300:doEvent1,[])
AddHint(-107,3,71,13,Value)
}
Add(Case,1321523,616,357)
{
Value=String(REGISTER)
link(onTrue,6423993:doEvent1,[])
AddHint(-124,7,80,13,Value)
}
Add(Case,8821029,616,784)
{
Value=String(PING)
link(onNextCase,3396458:doCase,[(660,790)(660,755)(597,755)(597,573)])
link(onTrue,2700626:doData,[])
AddHint(-93,12,51,13,Value)
}
Add(DoData,2700626,686,791)
{
Data=String(PONG)
link(onEventData,11907089:doWork,[])
AddHint(-13,-22,56,13,Data)
}
Add(FormatStr,9206063,742,385)
{
DataCount=4
Mask="USER\r\n%1\r\n%2\r\n%3\r\n%4"
link(onFString,10753192:doAdd,[])
link(Str1,11136958:Item,[])
link(Str2,7645903:Item,[(755,320)(790,320)])
link(Str3,5983206:Value,[(762,345)(930,345)])
link(Str4,9087631:Var,[])
}
Add(ArrayRW,11136958,742,196)
{
Index=Integer(1)
link(Array,14378459:getVar,[])
AddHint(14,-18,21,13,Index)
}
Add(Hub,6423993,693,364)
{
OutCount=5
link(onEvent1,11136958:doRead,[(716,370)(716,202)])
link(onEvent2,7645903:doRead,[(726,377)(726,230)])
link(onEvent3,11549066:doRead,[(734,384)(734,286)])
link(onEvent4,9206063:doString,[])
link(onEvent5,3953283:doReplace,[(721,398)(721,454)])
}
Add(ArrayRW,7645903,784,224)
{
Index=Integer(2)
link(Array,3768665:getVar,[])
AddHint(8,-18,21,13,Index)
}
Add(Memo,10753192,847,385)
{
Left=5
Top=205
Width=225
Height=205
}
Add(Hub,6457300,658,574)
{
link(onEvent1,13881349:doRead,[])
link(onEvent2,4120375:doString,[(714,587)(714,734)])
}
Add(ArrayRW,13881349,742,574)
{
Index=Integer(1)
link(onRead,1605529:doWork,[])
link(Array,6190941:getVar,[])
AddHint(10,-19,21,13,Index)
}
Add(Memory,13036011,896,574)
{
}
Add(Check,1605529,791,574)
{
Check=1
Caption="Сделать ХЭШ!"
link(onEvent,13036011:doValue,[])
}
Add(Memory,5983206,924,280)
{
}
Add(ArrayRW,11549066,826,280)
{
Index=Integer(3)
link(onRead,7542950:doCharset,[])
link(Array,5436636:getVar,[])
AddHint(9,-20,21,13,Index)
}
Add(LineBreak,3686119,896,623)
{
Caption="ХЭШ"
Type=1
link(Data,13036011:Value,[])
Primary=[9087631,-133,-266]
}
Add(LineBreakEx,4802288,553,147)
{
Caption="data"
Type=3
link(_Data,7124130:Array,[])
}
Add(LineBreakEx,6333921,399,742)
{
Caption="data"
Type=2
}
Add(LineBreakEx,14378459,742,161)
{
Caption="data"
Type=2
}
Add(LineBreakEx,11907089,735,791)
{
Caption="send"
}
Add(LineBreakEx,3352258,805,728)
{
Caption="send"
}
Add(LineBreakEx,13179498,238,105)
{
Caption="send"
Type=1
link(OnEvent,16482401:doSend,[(291,111)(291,97)])
}
Add(LineBreakEx,10934201,917,448)
{
Caption="send"
}
Add(LineBreakEx,3768665,784,189)
{
Caption="data"
Type=2
}
Add(LineBreakEx,5436636,826,245)
{
Caption="data"
Type=2
}
Add(LineBreakEx,6190941,742,539)
{
Caption="data"
Type=2
}
Add(Charset,7542950,875,280)
{
Type=6
link(onCharset,5983206:doValue,[])
}
Add(Replace,3953283,847,448)
{
SubStr="\r\n"
DestStr=" "
link(Str,10753192:Text,[])
}
Смысл вкратце такой:
После получения данных из порта проверяете первую строку.
По ней и формируешь данные.
К примеру если первая строка "PING" то нужно отправить "PONG".
А когда первая строка "REGISTER" нужно отправить строку:
WSocket1.Sendline('USER '+TS[1]+' '+TS[2]+' '+Nick+' '+hash);

Эту строку можно представить как список из 5 строк:


USER
Содержимое второй строки
Содержимое третьей строки
Ник (он берется из четвертой строки и меняем кодировку (в коде это Nick:=(UTF8DECODE(TS[3]));)
А в пятой последней строке должен быть ХЭШ. Данные нужно взять из второй строки, когда получены данные с заголовком HAAAPSI(в коде это hash:=Hash152.CreateHash(TS[1]);)


Этот список строк переделываете в строку, где каждая строка разделена пробелом.

В коде на дельфине в список строк
TS := TStringList.Create;

Заносятся полученные данные (строка):
TS.DelimitedText := Wsocket1.ReceiveStr;

И это строка разбивается на строки списка где разделителем строк является пробел:
TS.Delimiter := ' ';


Вот такое:
else
if TS[0] = 'FO' then
Begin
Label2.Caption:='Друзей онлайн: '+TS[1];
End
можно понимать как:
Если первая строка (с индексом 0) равна "F0"
В Надпись вывести полученное количество друзей онлайн, данные взять из второй строки (индекс 1)
Полученные данные будут иметь как миним такой вид: "F0 12"

Смотрите набросок, думаю разберетесь (ХЭШ не подключал).

Редактировалось 3 раз(а), последний 2016-12-06 11:33:18
карма: 10

0
Ответов: 95
Рейтинг: 1
#3: 2016-12-06 12:49:46 ЛС | профиль | цитата
да это всё я понимаю, мне не понятно почему после регистрации (REGISTER) сервер молчит я отправляю ему так же id pass nick hash он должен авторизировать меня и запустить в чат но ничего не происходит, если сравнивать приём TCP сниффером то всё аналогично программе на Delphi


Add(MainForm,14058530,42,161)
{
Width=398
Height=379
Position=1
link(onCreate,4961683:doEvent1,[])
}
Add(Edit,16355833,196,154)
{
Left=5
Top=25
Width=145
Ctl3D=1
Text="15s24vpoo2"
Alignment=2
}
Add(Label,16268837,168,14)
{
Left=5
Top=10
Width=106
Height=17
Caption="Код востановления:"
}
Add(Label,4084884,86,10)
{
Left=5
Top=50
Width=26
Height=17
Caption="Лог:"
}
Add(Memo,7124130,567,175)
{
Left=5
Top=65
Width=225
Height=125
Ctl3D=1
AddType=1
ScrollBars=2
}
Add(TCP_Client,16482401,322,175)
{
Port=6667
IP="95.172.133.164"
link(onRead,5432023:doCharset,[])
}
Add(Charset,5432023,364,175)
{
Type=7
link(onCharset,12970698:doEvent1,[])
}
Add(FormatStr,4120375,196,210)
{
Mask=":ru IDENT 152 -1 4030 1 2 :GALA\r\nRECOVER %1\r\n"
link(onFString,7592917:doWork2,[])
link(Str1,4737639:Var2,[])
}
Add(Button,3527773,112,210)
{
Left=160
Top=10
Width=70
Height=50
Font=[MS Sans Serif,8,1,0,1]
Ctl3D=0
Caption="Go"
link(onClick,4120375:doString,[])
}
Add(Label,7710592,126,12)
{
Left=5
Top=240
Width=49
Height=17
Caption="Запрост:"
}
Add(Memo,10086970,936,401)
{
Left=5
Top=255
Width=370
Height=85
Ctl3D=1
Strings=#31::ru IDENT 152 -1 4030 1 2 :GALA|18:RECOVER 15s24vpoo2|31:PHONE 360 640 1 2 :MPP_v.8.0.12|
}
Add(Button,5030718,888,463)
{
Left=150
Top=220
Width=80
Height=25
Ctl3D=0
Caption="Send"
link(onClick,12470601:doData,[])
}
Add(DoData,12470601,936,463)
{
link(onEventData,16221038:doEvent1,[(974,469)(974,468)])
link(Data,10086970:Text,[])
}
Add(LineBreakEx,7187201,245,225)
{
Type=1
link(OnEvent,7592917:doWork3,[(284,231)])
}
Add(HubEx,7592917,280,210)
{
link(onEvent,16482401:doSend,[(310,216)(310,195)])
}
Add(GetDataEx,4737639,196,196)
{
link(Data,16355833:Text,[])
}
Add(Replace,8906506,616,245)
{
SubStr="HAAAPSI "
link(onReplace,10709028:doReplace,[])
}
Add(Hub,12970698,420,175)
{
OutCount=4
link(onEvent1,1321069:doWork2,[])
link(onEvent2,10150143:doCompare,[(532,188)(532,244)])
link(onEvent3,360502:doCompare,[(452,195)(452,293)])
}
Add(StrMask,10150143,567,238)
{
Mask="HAAAPSI*"
link(onTrue,8906506:doReplace,[])
}
Add(Label,9510788,875,245)
{
Left=245
Top=65
Width=12
Height=17
Caption="H"
link(Text,12296451:Value,[(881,233)(846,233)(846,289)(797,289)])
}
Add(StrMask,360502,469,287)
{
Mask="REGISTER*"
link(onTrue,3382646:doReplace,[])
}
Add(Replace,3382646,518,294)
{
SubStr="REGISTER"
link(onReplace,9888770:doEvent1,[])
}
Add(Label,5654986,686,294)
{
Left=245
Top=85
Width=12
Height=17
Caption="R"
}
Add(FormatStr,4356559,686,350)
{
Mask="USER %1 %2"
link(onFString,10908758:doReplace,[])
link(Str1,5654986:Caption,[])
link(Str2,9510788:Caption,[(699,330)(881,330)])
}
Add(LineBreakEx,13967977,1071,350)
{
}
Add(Hub,9888770,560,294)
{
link(onEvent1,8749952:doTrim,[])
link(onEvent2,4356559:doString,[(653,307)(653,356)])
}
Add(Replace,10908758,749,350)
{
SubStr="20"
link(onReplace,2231070:doReplace,[])
}
Add(Replace,10709028,721,245)
{
SubStr="20"
link(onReplace,12296451:doValue,[])
}
Add(Trim,8749952,602,294)
{
link(onTrim,5654986:doText,[])
}
Add(Replace,2231070,819,350)
{
SubStr="\r\n"
link(onReplace,16195625:doEvent1,[])
}
Add(Hub,16195625,868,350)
{
link(onEvent1,16176603:doEvent1,[])
link(onEvent2,10086970:doText,[(906,369)(906,428)])
}
Add(Label,3042770,245,255)
{
Left=245
Top=105
Width=13
Height=17
Font=[MS Sans Serif,8,1,255,1]
Caption="H"
}
Add(InlineCode,3021671,187,255)
{
WorkPoints=#10:doCalcHash|
EventPoints=#8:onResult|
DataPoints=#3:Str|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|4:uses|22: KOL, Share, Hash152;|0:|4:type|21: THiAsmClass = class|11: private|0:|10: public|21: Str: THI_Event;|29: onResult: THI_Event; |58: procedure doCalcHash(var _Data: TData; Index: Word);|6: end;|0:|0:|14:implementation|0:|0:|0:|65:procedure THiAsmClass.doCalcHash(var _Data: TData; Index: Word); |3:var|14: Hash: string;|5:begin|57: Hash := Hash152.CreateHash(ReadString(_Data, Str, ''));|42: _hi_CreateEvent(_Data, @onResult, Hash);|4:end;|0:|4:end.|
link(onResult,3042770:doText,[])
link(Str,4737639:Var1,[(193,201)])
}
Add(Memory,12296451,791,245)
{
link(onData,9510788:doText,[])
}
Add(Hub,4961683,91,175)
{
link(onEvent1,16482401:doOpen,[])
link(onEvent2,3021671:doCalcHash,[(146,188)(146,261)])
}
Add(Charset,6194935,1022,350)
{
Type=6
link(onCharset,12948468:doWork2,[])
}
Add(Hub,16176603,980,350)
{
link(onEvent1,6194935:doCharset,[])
link(onEvent2,12948468:doWork3,[(1061,363)])
}
Add(HubEx,12948468,1057,350)
{
link(onEvent,13967977:doWork,[])
}
Add(TCP_Client,2385698,1043,462)
{
Port=6667
IP="95.172.133.164"
link(onRead,1321069:doWork3,[(1087,468)(1087,127)(550,127)])
}
Add(Hub,16221038,980,462)
{
link(onEvent1,2385698:doOpen,[])
link(onEvent2,2385698:doSend,[(1018,475)(1018,482)])
}
Add(HubEx,1321069,546,175)
{
link(onEvent,7124130:doAdd,[])
}


--- Добавлено в 2016-12-06 12:53:24

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

Редактировалось 1 раз(а), последний 2016-12-06 12:53:24
карма: 0

0
Ответов: 2193
Рейтинг: 673
#4: 2016-12-06 13:44:38 ЛС | профиль | цитата
Saturn36rus, вот вы пишите что все понимаете, но при этом выкладываете схему в которой ХЭШ вообще никуда не отправляется!
Если что непонятно в моей схеме, задавайте вопросы. Если непонятно мои объяснения, то тоже задавайте вопросы. А прикидываться шлангом и писать что у меня все хорошо, но ничего не работает не нужно.
карма: 10

0
Ответов: 95
Рейтинг: 1
#5: 2016-12-06 14:24:35 ЛС | профиль | цитата
сам хеш от сервера отправляется что идёт после Haspi -
USER id - 38675238 pass - 29lk4x5v - nick - Млки8ей - Hash - C2V4AoDTXn.



Всё как вы обьяснили :

WSocket1.Sendline('USER '+ID+' '+PASS+' '+Nick+' '+Hash);



а то что InluneCode там некуда не отправляется я просто незнаю куда его присвоить если уже есть 4 значения которые нужны.

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

--- Добавлено в 2016-12-06 14:31:25

Вся проблема в этом хеше я уже месяц мучаюсь с подключением т.к не пойму куда должен присваиватся хеш который генерирует InlineCode и с чего он должен его генерировать тоесть с какой строки, с кода востановления от персонажа или с полученой строки Hapsi вот.

Редактировалось 1 раз(а), последний 2016-12-06 14:31:25
карма: 0

0
Ответов: 4612
Рейтинг: 746
#6: 2016-12-06 15:01:01 ЛС | профиль | цитата
1) Получаем второе слово с команды HAAAPSI
2) Делаем с него hash
3) Этот hash используем в команде USER (4-й параметр)

Редактировалось 1 раз(а), последний 2016-12-06 15:01:22
карма: 26

0
Ответов: 95
Рейтинг: 1
#7: 2016-12-06 15:12:30 ЛС | профиль | цитата
Netspirit писал(а):
1) Получаем второе слово с команды HAAAPSI
2) Делаем с него hash
3) Этот hash используем в команде USER (4-й параметр)



Преобразовал слово после Haaapsi в хеш ничего не изменилось.


Add(MainForm,14058530,42,161)
{
Width=503
Height=389
Position=1
link(onCreate,4961683:doEvent1,[])
}
Add(Edit,16355833,196,154)
{
Left=5
Top=25
Width=145
Ctl3D=1
Text="15s24vpoo2"
Alignment=2
}
Add(Label,16268837,133,98)
{
Left=5
Top=10
Width=106
Height=17
Caption="Код востановления:"
}
Add(Label,4084884,51,94)
{
Left=5
Top=50
Width=26
Height=17
Caption="Лог:"
}
Add(Memo,7124130,567,175)
{
Left=5
Top=65
Width=225
Height=125
Ctl3D=1
AddType=1
ScrollBars=2
}
Add(TCP_Client,16482401,322,175)
{
Port=6667
IP="95.172.133.164"
link(onRead,5432023:doCharset,[])
}
Add(Charset,5432023,364,175)
{
Type=7
link(onCharset,12970698:doEvent1,[])
}
Add(FormatStr,4120375,196,210)
{
DataCount=1
Mask=":ru IDENT 152 -1 4030 1 2 :GALA\r\nRECOVER %1\r\n"
link(onFString,7592917:doWork2,[])
link(Str1,16355833:Text,[])
}
Add(Button,3527773,112,210)
{
Left=160
Top=10
Width=70
Height=50
Font=[MS Sans Serif,8,1,0,1]
Ctl3D=0
Caption="Go"
link(onClick,4120375:doString,[])
}
Add(Label,7710592,91,96)
{
Left=5
Top=240
Width=49
Height=17
Caption="Запрост:"
}
Add(Memo,10086970,936,401)
{
Left=5
Top=255
Width=370
Height=85
Ctl3D=1
Strings=#31::ru IDENT 152 -1 4030 1 2 :GALA|18:RECOVER 15s24vpoo2|31:PHONE 360 640 1 2 :MPP_v.8.0.12|
}
Add(Button,5030718,888,463)
{
Left=150
Top=220
Width=80
Height=25
Ctl3D=0
Caption="Send"
link(onClick,12470601:doData,[])
}
Add(DoData,12470601,936,463)
{
link(onEventData,16221038:doEvent1,[(974,469)(974,468)])
link(Data,10086970:Text,[])
}
Add(LineBreakEx,7187201,245,225)
{
Type=1
link(OnEvent,7592917:doWork3,[(284,231)])
}
Add(HubEx,7592917,280,210)
{
link(onEvent,16482401:doSend,[(310,216)(310,195)])
}
Add(Replace,8906506,623,245)
{
SubStr="HAAAPSI "
link(onReplace,10709028:doReplace,[])
}
Add(Hub,12970698,420,175)
{
OutCount=3
link(onEvent1,1321069:doWork2,[])
link(onEvent2,10150143:doCompare,[(532,188)(532,244)])
link(onEvent3,360502:doCompare,[(452,195)(452,293)])
}
Add(StrMask,10150143,567,238)
{
Mask="HAAAPSI*"
link(onTrue,8906506:doReplace,[])
}
Add(Label,9510788,868,245)
{
Left=245
Top=65
Width=12
Height=17
Caption="H"
}
Add(StrMask,360502,469,287)
{
Mask="REGISTER*"
link(onTrue,3382646:doReplace,[])
}
Add(Replace,3382646,518,294)
{
SubStr="REGISTER"
link(onReplace,9888770:doEvent1,[])
}
Add(Label,5654986,686,294)
{
Left=245
Top=85
Width=12
Height=17
Caption="R"
}
Add(FormatStr,4356559,686,350)
{
Mask="USER %1 %2"
link(onFString,10908758:doReplace,[])
link(Str1,5654986:Caption,[])
link(Str2,9510788:Caption,[(699,314)(874,314)])
}
Add(LineBreakEx,13967977,1071,350)
{
}
Add(Hub,9888770,560,294)
{
link(onEvent1,8749952:doTrim,[])
link(onEvent2,4356559:doString,[(653,307)(653,356)])
}
Add(Replace,10908758,749,350)
{
SubStr="20"
link(onReplace,2231070:doReplace,[])
}
Add(Replace,10709028,672,245)
{
SubStr="20"
link(onReplace,1571027:doValue,[])
}
Add(Trim,8749952,602,294)
{
link(onTrim,5654986:doText,[])
}
Add(Replace,2231070,819,350)
{
SubStr="\r\n"
link(onReplace,16195625:doEvent1,[])
}
Add(Hub,16195625,868,350)
{
link(onEvent1,16176603:doEvent1,[])
link(onEvent2,10086970:doText,[(906,369)(906,428)])
}
Add(Label,3042770,175,94)
{
Left=245
Top=105
Width=13
Height=17
Font=[MS Sans Serif,8,1,255,1]
Caption="H"
}
Add(InlineCode,3021671,805,245)
{
@Color=11206570
WorkPoints=#10:doCalcHash|
EventPoints=#8:onResult|
DataPoints=#3:Str|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|4:uses|22: KOL, Share, Hash152;|0:|4:type|21: THiAsmClass = class|11: private|0:|10: public|21: Str: THI_Event;|29: onResult: THI_Event; |58: procedure doCalcHash(var _Data: TData; Index: Word);|6: end;|0:|0:|14:implementation|0:|0:|0:|65:procedure THiAsmClass.doCalcHash(var _Data: TData; Index: Word); |3:var|14: Hash: string;|5:begin|57: Hash := Hash152.CreateHash(ReadString(_Data, Str, ''));|42: _hi_CreateEvent(_Data, @onResult, Hash);|4:end;|0:|4:end.|
link(onResult,9510788:doText,[])
link(Str,1571027:Value,[(811,233)(786,233)(786,285)(748,285)])
}
Add(Hub,4961683,91,175)
{
link(onEvent1,16482401:doOpen,[])
}
Add(Charset,6194935,1022,350)
{
Type=6
link(onCharset,12948468:doWork2,[])
}
Add(Hub,16176603,980,350)
{
link(onEvent1,6194935:doCharset,[])
link(onEvent2,12948468:doWork3,[(1061,363)])
}
Add(HubEx,12948468,1057,350)
{
link(onEvent,13967977:doWork,[])
}
Add(TCP_Client,2385698,1043,462)
{
Port=6667
IP="95.172.133.164"
link(onRead,1321069:doWork3,[(1087,468)(1087,127)(550,127)])
}
Add(Hub,16221038,980,462)
{
link(onEvent1,2385698:doOpen,[])
link(onEvent2,2385698:doSend,[(1018,475)(1018,482)])
}
Add(HubEx,1321069,546,175)
{
link(onEvent,7124130:doAdd,[])
}
Add(Memory,1571027,742,245)
{
link(onData,3021671:doCalcHash,[])
}


--- Добавлено в 2016-12-06 15:21:42

В схеме от Sla8a так же подставляю Inline аналогично..


Add(MainForm,4378101,70,56)
{
Width=935
Height=600
Position=1
link(onCreate,16482401:doOpen,[])
}
Add(Edit,16355833,581,665)
{
Left=5
Top=25
Width=145
Ctl3D=1
Text="15s24vpoo2"
Alignment=2
}
Add(Memo,7124130,364,77)
{
@Hint=#31:Это последние полученные данные|
Left=5
Top=65
Width=225
Height=125
Ctl3D=1
ScrollBars=2
AddHint(-84,-32,194,13,@Hint)
}
Add(TCP_Client,16482401,126,70)
{
Port=6667
IP="95.172.133.164"
link(onRead,6527222:doEvent1,[])
}
Add(Charset,5432023,203,77)
{
Type=7
link(onCharset,1804923:doReplace,[])
}
Add(FormatStr,4120375,581,721)
{
Mask=":ru IDENT 152 -1 4030 1 2 :GALA\r\nRECOVER %1\r\nPHONE 360 640 1 2 :MPP_v.8.0.12\r\n"
link(onFString,3352258:doWork,[])
link(Str1,16355833:Text,[])
}
Add(Replace,1804923,252,77)
{
SubStr=" "
DestStr="\r\n"
link(onReplace,2130206:doEvent1,[(306,83)(306,76)])
}
Add(Hub,6527222,175,70)
{
OutCount=3
link(onEvent1,7124130:doClear,[(294,76)(294,90)])
link(onEvent2,5432023:doCharset,[])
link(onEvent3,5559791:doRead,[(198,90)(198,783)])
}
Add(Memo,8633362,483,70)
{
@Hint=#30:Это лог всех полученных данных|
Left=250
Top=65
Width=285
Height=360
Ctl3D=1
AddType=1
ScrollBars=2
AddHint(-74,-55,181,13,@Hint)
}
Add(Hub,2130206,329,70)
{
link(onEvent1,8633362:doAdd,[])
link(onEvent2,7124130:doAdd,[])
}
Add(ArrayRW,5559791,224,777)
{
@Hint=#20:Читаем первую строку|
Index=Integer(0)
link(onRead,8821029:doCase,[])
link(Array,6333921:getVar,[])
AddHint(-60,49,131,13,@Hint)
AddHint(10,-22,21,13,Index)
}
Add(Case,3396458,427,560)
{
Value=String(HAAAPSI)
link(onNextCase,1321523:doCase,[(485,566)(485,446)(422,446)(422,356)])
link(onTrue,6457300:doEvent1,[])
AddHint(-107,3,71,13,Value)
}
Add(Case,1321523,441,350)
{
Value=String(REGISTER)
link(onTrue,6423993:doEvent1,[])
AddHint(-124,7,80,13,Value)
}
Add(Case,8821029,441,777)
{
Value=String(PING)
link(onNextCase,3396458:doCase,[(485,783)(485,748)(422,748)(422,566)])
link(onTrue,2700626:doData,[])
AddHint(-93,12,51,13,Value)
}
Add(DoData,2700626,511,784)
{
Data=String(PONG)
link(onEventData,11907089:doWork,[])
AddHint(-13,-22,56,13,Data)
}
Add(FormatStr,9206063,567,378)
{
DataCount=4
Mask="USER\r\n%1\r\n%2\r\n%3\r\n%4"
link(onFString,10753192:doAdd,[])
link(Str1,11136958:Item,[])
link(Str2,7645903:Item,[(580,313)(615,313)])
link(Str3,5983206:Value,[(587,338)(755,338)])
link(Str4,9087631:Var,[])
}
Add(ArrayRW,11136958,567,189)
{
Index=Integer(1)
link(Array,14378459:getVar,[])
AddHint(14,-18,21,13,Index)
}
Add(Hub,6423993,518,357)
{
OutCount=5
link(onEvent1,11136958:doRead,[(541,363)(541,195)])
link(onEvent2,7645903:doRead,[(551,370)(551,223)])
link(onEvent3,11549066:doRead,[(559,377)(559,279)])
link(onEvent4,9206063:doString,[])
link(onEvent5,3953283:doReplace,[(546,391)(546,447)])
}
Add(ArrayRW,7645903,609,217)
{
Index=Integer(2)
link(Array,3768665:getVar,[])
AddHint(8,-18,21,13,Index)
}
Add(Memo,10753192,672,378)
{
Left=5
Top=205
Width=225
Height=205
}
Add(Hub,6457300,483,567)
{
link(onEvent1,13881349:doRead,[])
link(onEvent2,4120375:doString,[(539,580)(539,727)])
}
Add(ArrayRW,13881349,567,567)
{
Index=Integer(1)
link(onRead,425307:doValue,[])
link(Array,6190941:getVar,[])
AddHint(10,-19,21,13,Index)
}
Add(Memory,13036011,770,567)
{
}
Add(Check,1605529,651,616)
{
Caption="Сделать ХЭШ!"
}
Add(Memory,5983206,749,273)
{
}
Add(ArrayRW,11549066,651,273)
{
Index=Integer(3)
link(onRead,7542950:doCharset,[])
link(Array,5436636:getVar,[])
AddHint(9,-20,21,13,Index)
}
Add(LineBreak,6294035,770,616)
{
Caption="ХЭШ"
Type=1
link(Data,13036011:Value,[])
Primary=[9087631,-182,-266]
}
Add(LineBreakEx,4802288,378,140)
{
Caption="data"
Type=3
link(_Data,7124130:Array,[])
}
Add(LineBreakEx,6333921,224,735)
{
Caption="data"
Type=2
}
Add(LineBreakEx,14378459,567,154)
{
Caption="data"
Type=2
}
Add(LineBreakEx,11907089,560,784)
{
Caption="send"
}
Add(LineBreakEx,3352258,630,721)
{
Caption="send"
}
Add(LineBreakEx,13179498,63,98)
{
Caption="send"
Type=1
link(OnEvent,16482401:doSend,[(116,104)(116,90)])
}
Add(LineBreakEx,10934201,742,441)
{
Caption="send"
}
Add(LineBreakEx,3768665,609,182)
{
Caption="data"
Type=2
}
Add(LineBreakEx,5436636,651,238)
{
Caption="data"
Type=2
}
Add(LineBreakEx,6190941,567,532)
{
Caption="data"
Type=2
}
Add(Charset,7542950,700,273)
{
Type=6
link(onCharset,5983206:doValue,[])
}
Add(Replace,3953283,672,441)
{
SubStr="\r\n"
DestStr=" "
link(onReplace,10934201:doWork,[])
link(Str,10753192:Text,[])
}
Add(InlineCode,3021671,700,567)
{
@Color=11206570
WorkPoints=#10:doCalcHash|
EventPoints=#8:onResult|
DataPoints=#3:Str|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|4:uses|22: KOL, Share, Hash152;|0:|4:type|21: THiAsmClass = class|11: private|0:|10: public|21: Str: THI_Event;|29: onResult: THI_Event; |58: procedure doCalcHash(var _Data: TData; Index: Word);|6: end;|0:|0:|14:implementation|0:|0:|0:|65:procedure THiAsmClass.doCalcHash(var _Data: TData; Index: Word); |3:var|14: Hash: string;|5:begin|57: Hash := Hash152.CreateHash(ReadString(_Data, Str, ''));|42: _hi_CreateEvent(_Data, @onResult, Hash);|4:end;|0:|4:end.|
link(onResult,13036011:doValue,[])
link(Str,425307:Value,[(706,555)(684,555)(684,609)(636,609)])
}
Add(Memory,425307,630,567)
{
link(onData,3021671:doCalcHash,[])
}


Редактировалось 1 раз(а), последний 2016-12-06 15:21:42
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#8: 2016-12-06 20:16:35 ЛС | профиль | цитата
Saturn36rus, просто твой "исходник на Delphi" писал сишник, не имеющий понятия о строках Delphi.
Хотел бы я в Delphi посмотреть на S[0]
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 95
Рейтинг: 1
#9: 2016-12-06 21:29:00 ЛС | профиль | цитата
Tad писал(а):
Saturn36rus, просто твой "исходник на Delphi" писал сишник, не имеющий понятия о строках Delphi.
Хотел бы я в Delphi посмотреть на S[0]


я же выложил исходник на Delphi - [url]myasm.ueuo.com/files/Galaxy152Delphi.zip[/url]
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#10: 2016-12-06 21:38:52 ЛС | профиль | цитата
Saturn36rus писал(а):
я же выложил исходник на Delphi
Ну и что?
Saturn36rus_1.jpg
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 95
Рейтинг: 1
#11: 2016-12-06 22:15:07 ЛС | профиль | цитата
Tad писал(а):

Saturn36rus писал(а):
я же выложил исходник на Delphi
Ну и что?
Saturn36rus_1.jpg


У меня нет антивируса я не проверял файл
9.jpg
10.jpg

Unit1.pass :

//Подключение к Galaxy 8.0 by НоМеР//Специально для Gala-Teams.Ru
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OverbyteIcsWndControl, OverbyteIcsWSocket, Hash152, StdCtrls,
ExtCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Memo1: TMemo;
Button3: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
WSocket1: TWSocket;
Edit3: TEdit;
Label3: TLabel;
Button4: TButton;
Label4: TLabel;
Edit4: TEdit;
Label5: TLabel;
Edit5: TEdit;
Button5: TButton;
Button6: TButton;
procedure Button1Click(Sender: TObject);
procedure WSocket1DnsLookupDone(Sender: TObject; ErrCode: Word);
procedure WSocket1DataAvailable(Sender: TObject; ErrCode: Word);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
hash:string;
I: Integer;
idprvmg:integer=-1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
idprvmg:=-1;
Wsocket1.dnslookup('galaxy.mobstudio.ru');
Wsocket1.Port:='6667';
Wsocket1.Proto:='tcp';
end;

procedure TForm1.WSocket1DnsLookupDone(Sender: TObject; ErrCode: Word);
var
con: boolean;
begin
WSocket1.Port:='6667';
WSocket1.Proto:='tcp';
WSocket1.Addr:=WSocket1.DnsResult;
WSocket1.Connect;
con:=true;
end;

procedure TForm1.WSocket1DataAvailable(Sender: TObject; ErrCode: Word);
var
TS: TStringList;
Nick:string;
begin
TS := TStringList.Create;
TS.Delimiter := ' ';
TS.DelimitedText := Wsocket1.ReceiveStr;
Memo1.Lines.add(UTF8DECODE(TS.DelimitedText));
try
if TS[0] = 'HAAAPSI' then
Begin
hash:=Hash152.CreateHash(TS[1]);
WSocket1.Sendline(':ru IDENT 152 -1 4030 1 2 :GALA');
WSocket1.Sendline('RECOVER ' + Trim(Edit1.Text));
End
else
if TS[0] = 'REGISTER' then
Begin
Nick:=(UTF8DECODE(TS[3]));
WSocket1.Sendline('USER '+TS[1]+' '+TS[2]+' '+Nick+' '+hash);
End
else
if TS[0] = '999' then
Begin
WSocket1.Sendline('FWLISTVER 0');
WSocket1.Sendline('ADDONS 0');
WSocket1.Sendline('MYADDONS 0');
WSocket1.Sendline('R 0');
WSocket1.Sendline('JOIN '+ansitoutf8(edit2.Text));
WSocket1.Sendline('PHONE 360 640 1 2 :MPP_v.8.0.12');
End
else
if TS[0] = 'FO' then
Begin
Label2.Caption:='Друзей онлайн: '+TS[1];
End
else
if TS[0] = 'PING' then
Begin
WSocket1.Sendline('PONG');
End;
finally
TS.Free;
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
WSocket1.Sendline('JOIN '+ansitoutf8(edit2.Text));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Wsocket1.SendLine('QUIT :ds');
Wsocket1.Close;
end;


procedure TForm1.Button6Click(Sender: TObject);
begin
idprvmg:=idprvmg+1;
Wsocket1.SendLine('PRIVMSG '+inttostr(idprvmg)+' :'+ansitoutf8(Edit5.Text));
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Wsocket1.SendLine('REMOVE '+Edit3.Text);
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
Wsocket1.SendLine('EMO 1000 :'+ansitoutf8(Edit4.Text));
end;

end.


Hash152.pas:

unit Hash152; 

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

function CreateHash(S: String): string;
procedure InitCT(Hash, CtKey: String);
function GenCT(Text: string): String;

function sub_1cfc(i, j:integer): integer;

const
Length_var_165 = 10;
SYMB_COUNT = 62;

var
Hash_Key: String = 'Ep9n8Lpww4';
var_67a: int64 = 1036;
var_70a: int64 = -269;
var_649: int64 = 8167260239830188032;
Kode_raz: String = '5itndg36hj';
var_6dc: int64 = 94736404;
var_70a1: Int64 = 2147483648;
var_c7: String = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' +
'abcdefghijklmnopqrstuvwxyz';
MyChar: array[0..61] of Char = ('0', '1', '2', '3', '4', '5', '6',
'7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
'x', 'y', 'z');
var_1c8: array[0..50] of Integer = (28, 30, 28, 29, 28, 29, 26, 26,
28, 26, 26, 28, 27, 27, 29, 30, 27, 27, 13, 28, 28, 17, 26, 28,
26, 24, 33, 29, 28, 28, 28, 28, 27, 29, 27, 28, 29, 29, 29, 30,
29, 29, 28, 30, 28, 29, 28, 28, 29, 30, 18);
var8: array[0..9] of Char = ('5','i','t','n','d','g','3','6','h','j');
var7: array of Integer;
MyString, LatsGenerated: String;
MyLong: int64;
MyInteger, MyInteger2, var_6b8e, var_6bae, var_6b9e,
var_6b96, ctc, ctct: integer;

implementation

uses Unit1;

procedure StrToChArVar(S: string);
var
i: integer;
ch: char;
begin
for i := 0 to length(s) - 1 do
begin
ch := s[i];
var8[i] := ch;
end;
end;

function ChArToStrVar8: string;
var
i: integer;
begin
for i := 0 to length(var8) - 1 do
Result := Result + var8[i];
end;

function IndexOf(s: string; s1: char): integer;
var
i:integer;
b:boolean;
begin
b := false;
for i := 0 to length(s) - 1 do
begin
if s[i] = s1 then
begin
b := true;
break;
end;
end;
if b then
result := i
else
result := -1;
end;

procedure sub_46b(var1: string);
var
var10, i: integer;
s: string;
begin
var1 := '5itndg36hj';
s := '';
for var10 := 0 to length(var7) - 1 do
begin
end;
for i:= 0 to length(var1) - 1 do
begin
var7[i] := var7[i] + (MyInteger or (ord(var_c7[indexOf(var_c7, var8[i])])));
var7[i] := ord(int64(var7[i]) + int64(MyInteger2) + MyLong);
MyInteger := MyInteger+ord(var7[i]);
var7[i] := var7[i] + (ord(var_6dc));
s := s + MyChar[abs(var7[i] mod SYMB_COUNT)];
LatsGenerated := s;
end;
end;

function sub_82a(var0: integer): integer;
begin
result := Ord(var_1c8[Abs(var0 mod Length(var_1c8))]);
end;

function sub_d4c(var0: char; var1: char; var2: integer): boolean;
var
i, z: integer;
begin
i := abs(ord(var0) - ord(var1));
z := (var2 + sub_82a(var2));
if i <= z then
Result := true
else
Result:=false;
end;

function sub_19c(var0, var1: integer): integer;
begin
Randomize;
Result := Random(var1 - var0);
end;

function sub_219(MyLong: int64): integer;
var
i: integer;
begin
var7[0] := int64((MyLong + MyLong + var_6dc) * MyLong);
for i := 1 to Length(Kode_raz) - 1 do
var7[i] := INT64((MyLOng + ORD(i) + ORD(var7[I - 1])) * myLong);
Result := sub_19c(10000, 1000000);
end;

function sub_2d5(var2: integer): integer;
var
var3, var4, var5: integer;
begin
for var3 := 0 to length(var7) * 4 - 1 do
begin
var4 := var3 mod Length(var7);
var5 := Abs(var3 * ord(var7[var4]) + ord(var7[var4])) mod length(var7);
if not sub_d4c(var8[var4], var8[var5], length(var7)) then
begin
inc(var7[(var4 + var5) div 2]);
var7[var4] := var7[var4] + (ord(var8[var5]));
var7[var5] := var7[var5] + (ord(var8[var4]));
inc(var2);
end;
end;
Result:=var2;
end;


function sub_221: int64;
begin
Result := MyLong + 105193645467299057;
end;

function sub_3538(var0: string): string;
var
i: integer;
begin
if var0 <> '' then
begin
Hash_Key := var0;
inc(var_67a);
end;
try
MyString := '';
MyLong := 508;
if (var_70a <> 0) and (var_67a > 0) then
begin
if (var_67a mod 256 <> 233) then
MyLong := MyLong xor var_649;
end
else
MyLong := MyLong xor var_67a;
for i := 0 to length(Hash_Key) do
MyLong:= MyLong + ( ord(Hash_Key[i] ) * var_649);
MyInteger2 := length(Kode_raz);
MyLong := sub_221;
setLength(var7, length(Kode_raz));
sub_219(MyLong);
MyInteger := sub_2d5(1);
sub_46b(Hash_Key + Kode_raz);
MyString := ChArToStrVar8;
except
MyString := 'Error';
end;
Result := MyString;
end;

function CreateHash(S: String): String;
begin
Hash_Key := s;
s := '';
sub_3538(s);
Result := LatsGenerated;
end;

function sub_1cfc(i, j:integer): integer;
var
k: integer;
begin
k:=1;
while (j > 0) do
begin
if ((j mod 2) = 1) then k := k * i;
j:= j shr 1;
i := i * i;
end;
Result := k;
end;

function ConvertCTKey(s: string): integer;
var
l, r: integer;
begin
r := 0;
for l := 1 to length(s) do
r := (r shl 8) + ord(s[l]);
Result := r;
end;

function GenCT(Text: String): String;
var
i, j: integer;
begin
Result := '';
var_6b9e := var_6b9e + Length(Text);
var_6bae := var_6bae + 1;
Inc(ctc);
if ctc = ctct then
begin
ctc := 1;
if (var_6b8e = 0) then
var_6b8e := var_6b96;
i := sub_1cfc(var_6b8e, var_6bae);
j := var_6b96 shl var_6b9e;
var_6b8e := i xor j;
Result := 'ct ' + inttostr(var_6b8e);
end;
end;

procedure InitCT(Hash, CtKey: String);
begin
var_6b96 := ConvertCTKey(Hash);
ctct := StrToInt(CtKey);
end;

end.


--- Добавлено в 2016-12-06 22:23:49

Tad если ещё какие либо файлы нужно выкинуть, напишите я отправлю в текстовом виде сюда.

Редактировалось 2 раз(а), последний 2016-12-06 22:23:49
карма: 0

0
Ответов: 2193
Рейтинг: 673
#12: 2016-12-07 00:57:37 ЛС | профиль | цитата
Tad, Netspirit, не тратьте время, ТС ждет готовое решение на блюдечке с голубой каемочкой. Все необходимое ему уже дал и подробно объяснил. Даже если не понятно объяснил, то в выложенном мной наброске все более чем понятно. Там доделать то минута работы, если подумать немного, ТС не хочет.
Saturn36rus,
galaxy_01.PNG

--- Добавлено в 2016-12-07 01:11:16

galaxy_02.PNG
А что так дорого?
В "реале" это ничего не стоит.

Редактировалось 1 раз(а), последний 2016-12-07 01:11:16
карма: 10

0
Ответов: 95
Рейтинг: 1
#13: 2016-12-07 02:19:58 ЛС | профиль | цитата
sla8a писал(а):
не тратьте время, ТС ждет готовое решение на блюдечке с голубой каемочкой. Все необходимое ему уже дал и подробно объяснил. Даже если не понятно объяснил, то в выложенном мной наброске все более чем понятно. Там доделать то минута работы, если подумать немного, ТС не хочет.


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


А что так дорого?
В "реале" это ничего не стоит.




да это совсем недорого по меркам чата)))

вижу что на скрине всё как надо , но я не могу дойти до этого своими мозгами sla8a как я понял схему мне не дадите из за принципа?

Редактировалось 1 раз(а), последний 2016-12-07 02:20:44
карма: 0

0
Ответов: 4612
Рейтинг: 746
#14: 2016-12-07 11:44:44 ЛС | профиль | цитата
sla8a писал(а):
Netspirit, не тратьте время, ТС ждет готовое решение
Проблема в том, что это "готовое решение" мне самому получить не удалось - сервер не выдаёт ответа на команду USER (правильно сформированную, с учетом всех нюансов ещё до твоих объяснений - я то же самое объяснял в ЛС и сам пробовал. IC с реализацией Hash152 в схеме - моих рук дело).

Редактировалось 1 раз(а), последний 2016-12-07 11:45:50
карма: 26

0
Ответов: 95
Рейтинг: 1
#15: 2016-12-07 14:22:45 ЛС | профиль | цитата
sla8a, вот даже Netspirit не смог добиться нужной авторизации как у тебя на скрине а ты говоришь мне на минуту размышлений дело я уже перепробывал переводить все данные в хеш с кодировкой и без кодировки, сервер молчит как не крути.
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)