Перейти к содержимому

Фотография
- - - - -

Работа с динамическими bypass'ами. Регулярные выражения

bypass байпасс regexp

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 16

#1
farmwl

farmwl

*
Популярное сообщение!

Сейчас практически на любом сервере ставят доп защиты на диалоги, чтобы ботам было трудней взаимодействовать с NPC.

Adrenalin поддерживает работу с регулярными выражениями (regular expressions) или коротко регэксп.

Это открывает большие возможности по обходу подобных защит, рассмотрим пример:

Скрытый текст
Нажать кнопку "Like" (Доступно, если у Вас более 3-х сообщений)

 

Первая процедура распечатает нам все доступные строки с байпасами, притом что занимает она буквально 10 строк:
 

explorer_2016-06-29_02-25-19.thumb.png.f15b2820e4bfc2d5d51ecc0de9572edc.png

 

Вторая же отыщет нужный байпасс по названию диалога и отправит его на сервер.

Стоит отметить, что тут рассмотрен только пример с самой простой защитой, когда с каждым новым открытием диалога меняется лишь байпас, никаких рандомных вставок\замен букв в диалоги эта функция не предусматривает. Это тоже возможно, но по понятным причинам готовый код я выкладывать не буду

О правилах составления регулярных выражений можете почитать например тут: http://www.exlab.net...ets/regexp.html


  • 57

#2
Ivanius

Ivanius

Ну поэтому мы и добавили регексы еще более года назад и сразуже можно было написать пару регексов и пользоватся на всех серверах....


  • 0
Участник разработки бота Adrenalin, администратор официального форума.
 

#3
Krickt

Krickt

Ivanius , еще бы вы добавляли не только в тихаря для себя, а давали инфу всем...


  • 1

#4
Stradevari379

Stradevari379
  • 17
    0
    Кривляюсь
    • Lvl 12
    • Пользователь

А допустим если есть плагин запись ваших действий в скрипт ....то он обойдет байпас динамический или простой ...???


  • 0

#5
SoundShocking

SoundShocking

А допустим если есть плагин запись ваших действий в скрипт ....то он обойдет байпас динамический или простой ...???

простой только


  • 0

#6
moped

moped
  • 5
    0
    Радостный
    • Lvl 3
    • Пользователь

farmwl, RegExpr этот модуль с какой версии бота активирован?


Сообщение отредактировал moped: 31 Июль 2016 - 22:38

  • 0

#7
Krickt

Krickt

moped, в шаровом нет, не волнуйтесь.


  • 0

#8
moped

moped
  • 5
    0
    Радостный
    • Lvl 3
    • Пользователь

Krickt, не волнуюсь, но возникает вопрос: при появлении капчи, я могу взять и записать её текст в файл, а назад прочитать через пару секунд могу?  Просто я бы банально в С# консолькой допилил бы и вырезал норм байпас.


  • 0

#9
Krickt

Krickt

moped, можешь конечно.

Не очень понимаю, почему у человека, пишущего на C#, возникают такие вопросы.


  • 0

#10
moped

moped
  • 5
    0
    Радостный
    • Lvl 3
    • Пользователь

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


  • 0

#11
Akim4eg

Akim4eg
  • 3
    0
    Радостный
    • Lvl 1
    • Пользователь

Нужен совет, 
 

procedure NPCDLGBPS;
var 
  DLG,Rez,D1,D2: string; 
begin
 
      DLG := Engine.DlgText;
      D1 := '139 Adena</a><br1>'; // До этого символа мы будем потом вырезать
      D2 := 'msg="811;Blazing';// обрезаем все что идет дальше
      Rez :=Copy(DLG,Pos(D1,DLG)+40,Pos(D2,DLG)-Pos(D1,DLG)-42) ;// вычисляем количество символов
      print(Rez); // Выводим результат
      Engine.ByPAssToServer('Rez',True); // составляем байпас
 
end;
 
 begin
 NPCDLGBPS;
 end.

Выдирает из гк байпас и отправляет его, но ничего не происходит


  • 0

#12
SARCAZM

SARCAZM

Akim4eg, не вчитывался в код, но смутило что в строке 

Engine.ByPAssToServer('Rez',True); // составляем байпас

название переменной Rez обособлено в кавычки, а потому отправляется не ее знаение, а просто строка "Rez" вместо байпасса


  • 0

#13
Akim4eg

Akim4eg
  • 3
    0
    Радостный
    • Lvl 1
    • Пользователь

SARCAZM, оу, спасибо. как то пропустил этот момент... глупая ошибка))


  • 0

#14
Валерий

Валерий
  • 8
    0
    Офигеваю
    • Lvl 6
    • Пользователь

 Сделал все как вы и описали. 
он бафнул )
Но как теперь правильно мне вставить это в скрипт фарма нон-стоп.
Конечный результат он мне выдал такой. 
Как правильно теперь использовать данный динамический байпас для фарма.
Помогите пожалуйста


Сервер KetraWars x100
Адрик платный.
 

uses SysUtils, Classes, RegExpr; // подключили модуль RegExpr

procedure PrintAllTags(); // распечатать все конструкции с bypass'ами
var RegExp: TRegExpr; 
begin 
RegExp:= TRegExpr.Create;
RegExp.Expression:= '(<a *(.+?)</a>)|(<button *(.+?)>)'; 
if RegExp.Exec(Engine.DlgText) then
repeat Print(RegExp.Match[0]);
until (not RegExp.ExecNext); 
RegExp.Free;
end;

function Bypass(dlg: string): boolean; // найти и отправить байпасс по названию диалога
var
RegExp: TRegExpr;
SL: TStringList;
i: integer;
bps: string;
begin
Result:= true; // задаем результат по умолчанию
RegExp:= TRegExpr.Create; // инициализируем объекты для дальнейшей работы
SL:= TStringList.Create;

RegExp.Expression:= '(<a *(.+?)</a>)|(<button *(.+?)>)'; // задаем регэксп на поиск всех возможных bypass'ов 
if RegExp.Exec(Engine.DlgText) then // если нашлелся нужный шаблон, то
repeat SL.Add(RegExp.Match[0]); // заполняем наш список такими совпадениями
until (not RegExp.ExecNext); // пока не закончатся шаблоны

for i:= 0 to SL.Count-1 do begin // теперь пробегаемся по нашему списку
if (Pos(dlg, SL[i]) > 0) then begin // если в i-ой строке нашелся искомый текст, то
RegExp.Expression:= '"bypass -h *(.+?)"'; // ищем шаблон текста c bypass'ом
if RegExp.Exec(SL[i]) then // и если нашли, то копирем из него интересующий нас кусок
bps:= TrimLeft(Copy(RegExp.Match[0], 12, Length(RegExp.Match[0])-12));
end;
end;

Print(bps); // распечатываем конечный вариант bypass'а
if (Length(bps) > 0) then Engine.BypassToServer(bps); // если его длина > 0, то отправляем на сервер

RegExp.Free; // не забываем освобождать память
SL.Free;
end;


begin
PrintAllTags();
Bypass('Набор воина');
end.

Прикрепленные изображения

  • Адр.JPG

Сообщение отредактировал Валерий: 03 Февраль 2017 - 22:48

  • 0

#15
farmwl

farmwl

Валерий, ну перед тем как выбрать диалог - его нужно сначала открыть, а перед этим еще не забыть подойти к NPC)


  • 0

#16
Reliable

Reliable
  • 33
    36
    А что, если...
    • Lvl 20
    • Пользователь
    ВКонтакте
    reliable88
    Skype
    Reliable88
    Город
    Благовещенск

Bypass('Набор воина');
ставишь в основной скрипт процедуру Bypass('Набор воина'); и все)
  • 0

#17
SexPistol

SexPistol
  • 1
    0
    Не выбрано
    • Гремлин

Скрытый текст
К сожалению не могу прочитать данный текст так как, в силу того что я еще туповат чтобы писать советы, я не набрал достаточное количество сообщений. farmwl, не мог бы ты скинуть в открытом виде данную часть твоего учения?))
  • 0



Темы с аналогичным тегами bypass, байпасс, regexp

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Rawr.su - Сделано с для игроков.