PDA

Просмотр полной версии : Помогите со скриптом


givemexxx
17.12.2008, 12:12
Имеется скрипт, предназначенный для дюпа вещей. Вот зашел на ваш форум, кто понимает плз обьясните как его еспользовать, тобеш все по пунктам, как активировать, как дюпнуть итем и т.д
var
frm:Tform;
memo:Tmemo;
pac:string; //расшифрованный пакет в HEX формате
D1,d2,d3,d4,d5,d6,d7,d8:integer; //2 разряда 1-го байта.. используются для перевода стринг в HEX
b1,b2,b3,b4:integer;
i:integer; // вспомогательная
size:integer; //размер пакета
keyClientIN: array [0..7] of byte; //8 байтов ключа
keyClientOUT: array [0..7] of byte;
keyServerIN: array [0..7] of byte;
keyServerOUT: array [0..7] of byte;
paket:string;

StartKeyCatch:boolean; //указатель на то что начальный ключ отловлен
//////////////////
k: integer;
b,a: integer;
//////////////////
stroka:string;
keyHEX:string;
sizeHEX:string;
BHEX:string;

const
hexdigit = '0123456789ABCDEF';




procedure Init; //Вызывается при включении скрипта
begin
frm := TForm.Create(nil);
frm.Caption := 'Chat';
frm.BorderStyle := bsSizeable;
frm.Position := poScreenCenter;
frm.align:=alBottom;
frm.Width:=700;
frm.Height:=200;
frm.FormStyle:=FsStayOnTop;
frm.Show;

memo :=TMemo.create(nil);
memo.parent:=frm;
memo.align:=alClient;
memo.WordWrap:=false;
memo.ScrollBars:=ssBoth;

StartKeyCatch := false;

end;

procedure Free; //Вызывается при выключении скрипта
begin
memo.free;
frm.Free;
end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
//*****************ИНИЦИАЛИЗИРУЕМ НАЧАЛЬНЫЙ КЛЮЧ ПРИ СТАРТЕ СКРИПТА*******************
//используем действие (сесть/всать) после запуска скрипта
if FromClient and StartKeyCatch = false then
begin
if length(pck) = 10 then
if (ord(pck[1]) xor $45) = (ord(pck[8]) xor ord(pck[9])) then
if (ord(pck[1]) xor ord(pck[2])) = (ord(pck[9]) xor ord(pck[10])) then
begin
keyClientIN[0]:= ord(pck[1]) xor $45;
keyClientIN[1]:= ord(pck[1]) xor ord(pck[2]);
keyClientIN[2]:= ord(pck[2]) xor ord(pck[3]);
keyClientIN[3]:= ord(pck[3]) xor ord(pck[4]);

keyClientIN[4]:= ord(pck[4]) xor ord(pck[5]);
keyClientIN[5]:= ord(pck[5]) xor ord(pck[6]);
keyClientIN[6]:= ord(pck[6]) xor ord(pck[7]);
keyClientIN[7]:= ord(pck[7]) xor ord(pck[8]);

StartKeyCatch:= true;
// memo.Lines.Add(inttostr(keyClientIN[0])+'+'+inttostr(keyClientIN[1])+' '+inttostr(keyClientIN[2])+' '+inttostr(keyClientIN[3])+' '+inttostr(keyClientIN[4])+' '+inttostr(keyClientIN[5])+' '+inttostr(keyClientIN[6])+' '+inttostr(keyClientIN[7]));
end;
end;


if FromClient and StartKeyCatch = true then
begin
//применение алгиритма фифрации к пакету.. для получения из PCK - PAKET
size:=length(pck);
paket:=pck;

//дешифрируем текущий пакет с использованием уже имеющегося ключа
for k:=size-1 downto 1 do
paket[k+1]:=chr(ORD(pck[k+1]) xor keyClientIN[k and 7] xor ord(pck[k-1+1]));
if size<>0 then paket[0+1]:=CHR(ord(pck[0+1]) xor keyClientIN[0]);


b:=0;
a:=0;
//вычисляем новый ключ
//подсчет суммы всех байтов в пакете кроме первого
for k:=1 to size-1 do
begin
b:=b+ord(paket[k+1]);
a:=0;
if (size + b) > $ff then a:=1;
if (size + b) > $ffff then a:=2;
end;

//учет частного случая
if size<>1 then
begin

keyClientIN[0]:=keyClientIN[0] xor b;
if a=0 then keyClientIN[1]:=keyClientIN[1] xor (b+size);
if a=1 then keyClientIN[1]:=keyClientIN[1] xor (b shr 8);
keyClientIN[2]:=keyClientIN[2];
keyClientIN[3]:=keyClientIN[3];


keyClientIN[4]:=keyClientIN[4] xor keyClientIN[0];
keyClientIN[5]:=keyClientIN[5] xor keyClientIN[1];
keyClientIN[6]:=keyClientIN[6] xor keyClientIN[2];
keyClientIN[7]:=keyClientIN[7] xor keyClientIN[3];

keyClientIN[5]:=keyClientIN[5] xor ((size + b) shr (a*8));
keyClientIN[5]:=keyClientIN[5] xor ((size + b) shr (8));
end;

//визуализация лога на форме
pac:='';
for i:=1 to size do
begin
d1:=ord(paket[i]) shr 4;
d2:=ord(paket[i]) - (d1 shl 4);

pac := pac + hexdigit[(d1 and $F)+1];
pac := pac + hexdigit[(d2 and $F)+1];
pac:= pac + ' ';
end;

keyHEX:='';
for i:=0 to 7 do
begin
d1:=keyClientIN[i] shr 4;
d2:=keyClientIN[i] - (d1 shl 4);

keyHEX:= keyHEX + hexdigit[(d1 and $F)+1];
keyHEX:= keyHEX + hexdigit[(d2 and $F)+1];
keyHEX:= keyHEX + ' ';
end;

sizeHEX:='';
d1:=size-((size shr 4) shl 4);
d2:=(size shr 4)-((size shr 4) shr 4 shl 4);
d3:=(size shr 8)-((size shr 8) shr 4 shl 4);
d4:=(size shr 12)-((size shr 12) shr 4 shl 4);

sizeHEX:=sizeHEX + hexdigit[(d4 and $F)+1];
sizeHEX:=sizeHEX + hexdigit[(d3 and $F)+1];
sizeHEX:=sizeHEX + hexdigit[(d2 and $F)+1];
sizeHEX:=sizeHEX + hexdigit[(d1 and $F)+1];

bHEX:='';
d1:=b-((b shr 4) shl 4);
d2:=(b shr 4)-((b shr 4) shr 4 shl 4);
d3:=(b shr 8)-((b shr 8) shr 4 shl 4);
d4:=(b shr 12)-((b shr 12) shr 4 shl 4);
d5:=(b shr 16)-((b shr 16) shr 4 shl 4);
d6:=(b shr 18)-((b shr 18) shr 4 shl 4);
d7:=(b shr 22)-((b shr 22) shr 4 shl 4);
d8:=(b shr 26)-((b shr 26) shr 4 shl 4);

bHEX:=bHEX + hexdigit[(d8 and $F)+1];
bHEX:=bHEX + hexdigit[(d7 and $F)+1];
bHEX:=bHEX + hexdigit[(d6 and $F)+1];
bHEX:=bHEX + hexdigit[(d5 and $F)+1];
bHEX:=bHEX + hexdigit[(d4 and $F)+1];
bHEX:=bHEX + hexdigit[(d3 and $F)+1];
bHEX:=bHEX + hexdigit[(d2 and $F)+1];
bHEX:=bHEX + hexdigit[(d1 and $F)+1];



stroka:=pac+';;'+keyHEX+';;'+ bhex+';;'+sizehex+';;'+inttostr( ((size + b) shr (8))-((b) shr (8)) );

memo.Lines.Add(stroka);

end;
end.

Зараннее спс

marslem
17.12.2008, 12:31
уууууу,сразу тебе скажу что ниче не выйдет,можешь даже не пытаться,даже на яве с1 не прокатит

givemexxx
17.12.2008, 12:40
уууууу,сразу тебе скажу что ниче не выйдет,можешь даже не пытаться,даже на яве с1 не прокатит

А почему это?

QaK
17.12.2008, 12:52
Это не чит-форум, тема закрыта.