Вверх ↑
Ответов: 95
Рейтинг: 1
#1: 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 если ещё какие либо файлы нужно выкинуть, напишите я отправлю в текстовом виде сюда.
карма: 0

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