PDA

Просмотр полной версии : [Скрипт] Скрипт обхода шифрации пакетов


aion programmer
27.11.2011, 15:41
Запускаем L2PacketHack---->Автоматизация---->Скрипты---->Новый скрипт---->Имя (любое) жмем ОК---->Всё что там есть стираем и вставляем этот скрипт:
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.

510145
27.11.2011, 16:14
А не могли бы мне "смертному" по подробней объяснить ,что это скрипт делает?
тыкну спасибку за хорошее разъяснение )))

BabyDarkness
27.11.2011, 16:15
пакеты какие были такие и остались. Автор сам пробовал, если получилось напишешь подробнее?

Nieds
27.11.2011, 16:16
Автор, опишите по подробней как данный скрипт работает.

Станислаv
27.11.2011, 16:30
Мне тоже интересно стало

strepsil
27.11.2011, 16:54
ахахах мда, вы небось тупо копирнули всё подряд и всё?)


там помимо скрипта текста дох*я.

ух ну никак не хотят читать/facepalm

Nieds
27.11.2011, 16:56
ахахах мда, вы небось тупо копирнули всё подряд и всё?)


там помимо скрипта текста дох*я.

ух ну никак не хотят читать/facepalm

Ну если вы всё поняли, объясните другим.

freshinin-aion
27.11.2011, 16:57
Вопрос к автору, как ты сделал этот скрипт?

Pocuk
27.11.2011, 17:16
Запускаем L2PacketHack---->Автоматизация---->Скрипты---->Новый скрипт---->Имя (любое) жмем ОК---->Всё что там есть стираем и вставляем этот скрипт:
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.


/horror /facepalm
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
он не автор это 1
скрипт для линейки это 2
посмотрите на дату это 3

Станислаv
27.11.2011, 17:20
:hd:

dawah
27.11.2011, 17:29
ахахах мда, вы небось тупо копирнули всё подряд и всё?)


там помимо скрипта текста дох*я.

ух ну никак не хотят читать/facepalm

можете объяснить всем?:sceptic:

kreyker
27.11.2011, 18:04
/horror /facepalm
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
он не автор это 1
скрипт для линейки это 2
посмотрите на дату это 3
Ну как я понял в таком случае он не должен работать

nightspouke
27.11.2011, 18:20
Ну как я понял в таком случае он не должен работать

[Ссылки могут видеть только зарегистрированные и активированные пользователи] ([Ссылки могут видеть только зарегистрированные и активированные пользователи])
читай для чего нужен данный скрипт.

aion programmer
27.11.2011, 18:27
1)Скрипт расшифровыает пакет по принципу nex формата
2)при старте он отлавливает начальный ключ (StartKeyCatch)
3)после инициализирует начальный ключ который отловил при старте
4)дешифрует текущий пакет с использованием уже имеющегося ключа
5)Потом идет вычислительный процесс,где скрипт вычисляет новый ключ и подсчитывает все байты
6)Идет визуализация лога
По этой схеме работает данный скрипт

Добавлено через 5 минут
[Ссылки могут видеть только зарегистрированные и активированные пользователи] ([Ссылки могут видеть только зарегистрированные и активированные пользователи])
читай для чего нужен данный скрипт.
Скрипт для дюпа,Оо такие бывают/facepalm

Pocuk
27.11.2011, 18:40
ну так укажи откуда скрипт взял. Или ты сам автор? Где оно работает и работает ли вообще?
Скрины в доказательство как минимум, а то никто еще не подтвердил работоспособность.

dawah
27.11.2011, 18:47
нифига не понял) при активации скрипта выходит окно чат! скрипт я назвал Дешифровка и терь выходит фигня такая : Дешифровка: не будет использоваться)

aion programmer
27.11.2011, 18:50
нифига не понял) при активации скрипта выходит окно чат! скрипт я назвал Дешифровка и терь выходит фигня такая : Дешифровка: не будет использоваться)
Жми крестик,чат тебе не нужен)

dawah
27.11.2011, 19:01
я то убрал чат, а дальше что?)
ничего не изменилось же)

nightspouke
27.11.2011, 20:12
1)Скрипт расшифровыает пакет по принципу nex формата
2)при старте он отлавливает начальный ключ (StartKeyCatch)
3)после инициализирует начальный ключ который отловил при старте
4)дешифрует текущий пакет с использованием уже имеющегося ключа
5)Потом идет вычислительный процесс,где скрипт вычисляет новый ключ и подсчитывает все байты
6)Идет визуализация лога
По этой схеме работает данный скрипт

Добавлено через 5 минут

Скрипт для дюпа,Оо такие бывают/facepalm

сразу видно профи.
бывают прикинь?
не только для линейки, но и для айона
внезапно.

Вопрос к автору, как ты сделал этот скрипт?

Сtrl+c Ctrl+v

talala
27.11.2011, 21:29
Уважаемый автор темы. У народа накопилось много вопросов, но ответов нет. Теме день, дальше удаление за несоответствие разделу.

aion programmer
28.11.2011, 11:24
Мдя...нужно что нить по проще писать.
1)Скрипт рабочий,сам им пользовался-(сервер говорить не буду по этическим причинам)
2)В разработке скрипта я принимал участие хотя и не большое!
3)Скрипт нужно дописывать самому (из вас его что не кто не читал?)
4)Как данный скрипт работает уже описал!
Кидайте тему в топку,я погарячился выложив ее

talala
28.11.2011, 21:20
Кидайте тему в топку,я погарячился выложив ее
Чтобы не возникало вопросов, нужно сразу делать описание. Спасибо

edwardmell
29.11.2011, 20:03
Все равно не понятно как им пользоваться. Можно объяснить на "простонародном" диалекте и по-русски?

И еще один момент: почему на скринах скрипт зовется "предназначенным для дюпа", а в данной теме "обхода шифрации пакетов"??

manyunya
29.11.2011, 21:19
автор лапши на уши навешал, попытался отмазаться и потихой слинял

fredi_92
29.11.2011, 21:28
афтор мош отпишешся по подробней.не чё не понел или скрипт не работает или я не так чёт делаю. активировал скрип вышел чат сел встал и чё дальше пакеты серавно не изменились ((

Goldenrog
29.11.2011, 22:45
Включаю скрипт виснет игра мот я чё намутил?