| Бреш в скриптах говорящего бота Те, кто пишет замообучающихся говорящих ботов под mIRC должны знать,
что данные скрипты имеют брешь. Умело закрученный текст, который
посылается боту, может вывести из стоя операционку на которой он стоит.
Все это происходит потому, что данные скрипты работают на операторе
$read. А $read как известно может не только считывать строки из разных
файлов, но и вставлять эти строки к команды. И теперь, если какой-нить
(продвинутый мать его...) Юзер пишет на канале или непосредственно в
приват бота (взависимости от скрипта) фразу, в которой содержатся команды
mIRC (например: мне хана!!! | run concon), то комп на котором стоит бот
повиснет.
Объясняю почему:
Скрипты говорящего бота строятся в основном по одному алгоритму:
1. Запись текстов пользователей в какой-нибудь файл оператором write.
2. Ответ в канал или в прават записанных фраз из этого файла оператором $read.
Если записанная фраза содержит " | " (это знак разделителя команд), то скрипт
выдаст только текст, находящийся до этого значка, а дальше начнет исполнять
команду, которая описана после "|". Если там будет написано Disconnect, то
скрипт отключит mIRC от сервера.
Как защитится от этой бреши?
1. Отказаться от такого интеллекта вообще нахрен!!! :-)
2. Отказаться от $Read. Например алгоритм разговора у бота ©Mirabel
я построил на "Play". А оператор play может только воспроизводить фразы,
но никак не исполнять команды. Небуду здесь описывать алгоритм разговора
(об этом в следующей статье).
3. установить фильтр записывающихся фраз. Вот как это делается, я думаю
нужно написать: Нам нужно исключить запись в файл фраз, содержаших какие -
либо команды. Это делается следующим образом:
on *:TEXT:*:*: {
; При Любом тексте, от Любого юзера, на Любом канале или привате
; (это как Вы сами сделаете)
if ($chr(124) isin $1-) || ($chr(35) isin $1-) || ($chr(36) isin $1-) || (run isin $1-) {
msg $nick ты че мне впариваешь? | halt
}
; Если в тексте присутсвует " | " или " # " или " $ " или " run ",
; то ответить этому Юзеру "ты че мне впариваешь?" и остановить выполнение скрипта.
}
©Anode |