Форум работает в тестовом режиме. Все данные были перенесены со старого сайта 2018 года. Некоторая информация может быть недоступна, например вложения или хайды. Просьба сообщать о данных случаях через функционал "Жалоба", прямо под постом, где отсуствуют данные из хайда или проблемы с вложением.
Могут быть проблемы в "выкидыванием" с форума (слетевшей авторизацией). Нужно собрать статистику таких случаев.
Есть Тема, куда можете сообщить о проблемах с сайтом либо просто передать привет.

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

Рег
26 Дек 2015
Сообщения
82
Реакции
0
Сейчас практически на любом сервере ставят доп защиты на диалоги, чтобы ботам было трудней взаимодействовать с NPC.
Adrenalin поддерживает работу с регулярными выражениями (regular expressions) или коротко регэксп.
Это открывает большие возможности по обходу подобных защит, рассмотрим пример:


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

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

Вторая же отыщет нужный байпасс по названию диалога и отправит его на сервер.
Стоит отметить, что тут рассмотрен только пример с самой простой защитой, когда с каждым новым открытием диалога меняется лишь байпас, никаких рандомных вставок\замен букв в диалоги эта функция не предусматривает. Это тоже возможно, но по понятным причинам готовый код я выкладывать не буду
О правилах составления регулярных выражений можете почитать например тут: http://www.exlab.net/tools/sheets/regexp.html
 
Ну поэтому мы и добавили регексы еще более года назад и сразуже можно было написать пару регексов и пользоватся на всех серверах....
 
А допустим если есть плагин запись ваших действий в скрипт ....то он обойдет байпас динамический или простой ...???
 
Stradevari379 написал(а):
А допустим если есть плагин запись ваших действий в скрипт ....то он обойдет байпас динамический или простой ...???
простой только
 
@farmwl, RegExpr этот модуль с какой версии бота активирован?
 
@Krickt, не волнуюсь, но возникает вопрос: при появлении капчи, я могу взять и записать её текст в файл, а назад прочитать через пару секунд могу? Просто я бы банально в С# консолькой допилил бы и вырезал норм байпас.
 
@Krickt, я буду с вами немножко искренен, сначала задал вопрос, а потом погуглил и понял что задал глупость.
 
Нужен совет,


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.
Выдирает из гк байпас и отправляет его, но ничего не происходит
 
@Akim4eg, не вчитывался в код, но смутило что в строке

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

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


Сервер 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
    Адр.JPG
    91.7 KB · Просмотры: 0
@Валерий, ну перед тем как выбрать диалог - его нужно сначала открыть, а перед этим еще не забыть подойти к NPC)
 
farmwl написал(а):
К сожалению не могу прочитать данный текст так как, в силу того что я еще туповат чтобы писать советы, я не набрал достаточное количество сообщений. farmwl, не мог бы ты скинуть в открытом виде данную часть твоего учения?))
 
Назад
Сверху