MegaChiter

Объявление

Кто хочет открыть хайд старых тем пишем админу в ЛС с ссылкой на тему.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » MegaChiter » Скрипты и пакеты. » Скрипт обхода шифрации


Скрипт обхода шифрации

Сообщений 1 страница 3 из 3

1

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.

0

2

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

+1

3

а на серве Sevensigns будет похать?

0


Вы здесь » MegaChiter » Скрипты и пакеты. » Скрипт обхода шифрации