Запускаем 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;
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]);
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];
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:=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.
________________
Помог жми спасибо! Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось aion programmer; 27.11.2011 в 16:49.
Запускаем 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;
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]);
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];
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:=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.
[Ссылки могут видеть только зарегистрированные пользователи. ]
он не автор это 1
скрипт для линейки это 2
посмотрите на дату это 3
1)Скрипт расшифровыает пакет по принципу nex формата
2)при старте он отлавливает начальный ключ (StartKeyCatch)
3)после инициализирует начальный ключ который отловил при старте
4)дешифрует текущий пакет с использованием уже имеющегося ключа
5)Потом идет вычислительный процесс,где скрипт вычисляет новый ключ и подсчитывает все байты
6)Идет визуализация лога
По этой схеме работает данный скрипт
Добавлено через 5 минут
Цитата:
Сообщение от nightspouke
[Ссылки могут видеть только зарегистрированные пользователи. ]
читай для чего нужен данный скрипт.
Скрипт для дюпа,Оо такие бывают
________________
Помог жми спасибо! Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось aion programmer; 27.11.2011 в 19:34.
Причина: Добавлено сообщение
ну так укажи откуда скрипт взял. Или ты сам автор? Где оно работает и работает ли вообще?
Скрины в доказательство как минимум, а то никто еще не подтвердил работоспособность.
Последний раз редактировалось Pocuk; 27.11.2011 в 19:45.