В последнее время стал часто встречать сервера (без защиты от ПХ) с рабочими мультиселлами. И ручками перебирать мульты не очень удобно, по этому хочу упростить эту задачу с Вашей помощью.
Другими словами хочу написать скрипт для ПХ с:
1 - полуавтоматическим перебором на существование МС (т.е. по соц.действию например)
2 - В автоматическом режиме (по таймеру) с возможностью ведения лога.
Пошарив по жуку нашел похожую закрытую J-Fobos`ом тему, в которой он говорл что такой скрипт есть, но он в подполье.
Собственно, на форуме самой программы нашел похожий скрипт, но он для ПТС.
Сам скрипт выглядит так + мои комменты к нему
Код:
var
i:int64;
procedure Init;
begin
i:=1; //Номер мультиселла с которого начинаем перебор
end;
begin
if FromClient and (pck[1]=#$56) then //1 байт пакета, к примеру какое-то соц.действие
begin
pck:='';
buf:=#$23; //23 - первый байт мультиселла который(мульт) имеет место быть на сервере
WriteS('menu_select?ask=-303&reply='+inttostr(i)); //составление конечного пакета мульта
SendToServer;
inc(i);
end;
end.
Кто что может дополнить, объяснить, посоветовать по этому скрипту? Это скрипт для 1-го варианта, т.е. для полуавтоматического перебора, тыкаме соц.действие, сервер получает сформированый скриптом пакет на мульт. А мы в свою очередь видим присутствует мульт с запрошенным номером или нет.
Второй вариант скрипта можно будет реализовать после проверки на работоспособность первого. Вместо соц.действия прописайть таймер с заданной задержкой и прописать сохранение в лог валидных пакетов.
Перебор конечно хорошо но надо перебирать всё не с нуля а хотя бы в каком то выбранном диапазоне.
Однородные пакеты посылаемые очень часто неизбежно привлекут внимание админа.
Либо система просто заблочит перса с которого так будешь флудить пакетам.
Для этого надо реализовать задержку либо с помощью delay но это плохо кончится скорее всего дисконектом.
Лучше с помощью таймера. Таймер лучше делать с задержкой от 500 мс.
Обычно число мультисессела кодируется в формате от 00 00 00 00 до FF FF FF FF. Давай посчитаем сколько это вариантов.
Переведём FFFFFFFF в десятеричное значение и получим 4294967295.
Давай щас посчитаем сколько потребуется времяни чтобы перебрать все возможные варианты от 0 до 4294967295.
(4294967295+1)вариантов*0.5сккунд=2147483648 секунд
2147483648секунд / 60= 35791394,125 минут
35791394/60 =596523 часов
596523/24 = 248563,458 суток
248563/365 = 680.8 лет
если что то не правильно подсчитал поправьте.
Последний раз редактировалось Samor888; 27.01.2012 в 15:28.
Причина: Удобочитаемость
mattrix, Да ты что? А как же тогда клиент видит что в конкретном пакете от сервера запихан конкретный мульт? Извини, ты не прав. И лог как-то вести можно, давно видел тему на сайте создателя L2PHX, но найти не могу.
2 Samor888, с перебором кстати я разобрался, дописал скрипт. Привязал на соц действие, проверял пока что на 1 серваке, ни дисконнектов, ни бана пока не словил. Осталось найти как вести лог и как автоматизировать. При чем не обязательно начинать перебор с 1 мультисела, в скрипт можно подставить любой номер.