Хитрости при работе в IRC

Написал Danila Vershinin Суббота, 19 Май 2007
Как проверить, что некий человек является человеком, а не ботом?
Защита от флуда и советы не для чайников только в этой статье.
  • Как проверить, что некий человек является человеком, а не ботом?


    • Способ 1.
      Надо кик-банить тестируемоего, потом снять бан. Если оно через 1-60 сек вернется, то надо повторить операцию еще пару раз (еще раз кик/банить и поглядеть, вернулось ли через 1-60 сек). Если стабильно возвращается через 1-60 сек, то это бот. Самый надежный и сложноподделываемый способ (хотя врядли найдутся программисты TCL, чтобы ставить таких ботов с хитрыми скриптами, т.к. это трата времени на глупости).
      На счет диапазона времени 1-60 сек. Дело в том, что бот каждую минуту (ровно раз в 60 сек) пытается войти на канал. Поэтому, если снять бан, он войдет, как только пройдут его 60 сек (а не с момента снятия бана - боту об этом неизвестно). Таким образом, с момента снятия бана должно пройти не более минуты. А если кикбанить и сразу засечь время, а через 10 сек снять бан, то бот должен войти ровно через 50 сек, т.е. всего пройдет 60 сек.
    • Способ 2.
      Надо кик/банить тестируемого. Затем пригласить (
      /invite [nick] [#chan]
      ) на левый канал (#n943h438h43).
      Затем пригласить на тестируемый канал (на ваш текущий - #chan). Если оно вернётся только на тестируемый (#chan) канал (причем сразу: через 1-5 сек), а на левый канал не пойдет - это бот.
      Основано на трех фактах:
      1. бот никогда на чужой канал не пойдет
      2. у некоторых в mIRC'е может быть включен игнор инвайт-приглашений, такой юзер (его программа) никуда не пойдет
      3. у некоторых наоборот, настроено входить на тот канал, куда приглашают войти, такой юзер сразу войдет на любой канал
      На счет диапазона времени 1-5 сек. Если бот не на канале по причине: не войти из-за бана, инвайта или лимита, то как только он получит от кого-либо инвайт на канал, то сразу туда и войдет. Почему 5 сек, а не 0 сек? Да потому, что от вас до бота есть какая-то задержка, вот и должно пройти пару секунд, пока бот получит ваш инвайт, войдет на канал и вы это увидите.
    Комбинируйте эти 2 способа. Это даже не способы, а одно целое, просто разделено для большего понимания.
  • Как защититься от злонамеренного флуда?

    Флуд бывает 3х типов.
    • Тип 1. Куча ботов/людей (штук 5 достаточно) шлют одновременно вам по 10 запросов на пинг (10*5 = 50 запросов всего). Ваш mIRC усердно на них отвечает, в результате чего получается, что вы в короткий момент времени высылаете 50 сообщений. 10 мгновенных сообщений (что шлет каждый из ботов) - нормально. 50 сразу - мнговенный дисконнект с причиной "Execc flood".
      Защита: в окошке игнора (Меню FILE, OPTION, вкладка IRC/CONTROL) надо поставить галочку напротив слова (*) ignore и галочку активизации [x] Active. В окошке вписать следующий текст: *!*@*,ctcp
      Но будьте осторожны! Если игнорировать CTCP, то никто не сможет вас пингануть. Например, вы напишите !ping в канале, а реакции не будет вам не смогут боты послать приглашение в чат (и люди не смогут послать вам приглашение чат или файл) никто не сможет узнать версию вашей программы, IDLE программы (еще бывает серверное IDLE - ниже написано), получить поле E-MAIL из настроек. Однако, этот пункт - преимущество, а не побочный эффект игнора CTCP.
    • Тип 2. Куча ботов шлет в канал просто текст. Все потихоньку вылетают с причиной Max sendQ. Это значит, на сервере переполнился буфер, в котором храняться отправленные вам сообщения. Если вы на хорошей линии в Интернет (т.е. не на модеме) и у сервера с вами хорошая связь, данный буфер особо не копиться. Однако при флуде, этот буфер быстро переполняется (у всех, кто на канале) и при достижении некого максимума сервер вас вырубет, т.к. у него просто нет больше памяти хранить для вас мусорные сообщения.
      Чтобы этого не произошло, сразу после начала флуда, пишите
      /mode [вашник] +d
      (это написано без ошибок, "вашник" - это ваш текущий ник, скобок не писать) и перестанете получать ВСЕ сообщения со всех каналов. После этого сидите баньте ботов. И
      /mode [вашник] -d
      в конце флуда, когда вы увидите, что все флуд боты свалили.
      В состоянии игнора по +d вы не получаете только сообщения с каналов, а JOIN/PART/MODE и т.п. - получаете. На личные сообщения (приват) это не влияет.
      Еще способ - просто выйти с канала. Но это скорее не способ, а то, чего и добивается флудер - выкинуть всех с канала. Даже если вы не включите режим +d и не выйдите с канала, зная, что вас скоро отключат, то этим вы только поможете борьбе с идиотами. Дело в том, что возникновение флуда (50-500 ботов шлют по 2-5 сообщений в секунду, максим. длина сообщения 510 байт) с учетом большого числа IRC серверов возникает нехилый трафик. Легко подсчитать, что даже при 50 ботах и 15 IRC серверах резко подскочит трафик. Пусть всего 7 IRC серверов задействованы в передаче, т.к. посетители канала физически подключены к разным серверам и сервера вынужденны пересылать друг-другу сообщения. Подсчитаем объем информации в секунду: 50 ботов х 2сообщения х 510 байт в сообщении х 7 серверов - получиться почти 3 Мбит/сек (в случае 200 ботов по 4 сообщения в сек и 10 серверах - 32 Мбит/сек). Хотите оценить, что 3Мбит - это огромный трафик (не учитывая обычных нагрузок IRC-серверов)? Приведу стоимость подключения по России к выделенному каналу скоростью 128Кбит/сек (1024Кбит=1Мбит) - от 400 до 600 $ в месяц. Теперь умножте эти число в 1024 раза (от КилоБит, до МегаБит) и потом на 3... Обычно у ИРЦ серверов каналы в интернет порядка 100Мбит. Конечно, этот простой подсчет не учитывает реальной схемы подключения (все сервера соеденены в дерево, а не на прямую), что снизило бы цифры, но все равно, трафик при флуде большой. И это хорошо, т.к. вы, не уходя с канала, будете помогать данному флуду стать еще больше. А чем больше нагрузка, тем быстрее данный флуд будет замечен иркопами или встроенными средставами контроля, которые могут поотключать сервера друг от друга на некоторое время (чтобы на 2-3 порядка снизить трафик) и расставить баны на флуд-хосты. Откуда беруться флуд боты - ниже.
    • Тип 3. Куча ботов шлет вам г*вн* в приват... mIRC (если не дергаться) обычно не виснет. Повиснет - поставте программу eXtreme для МИРКа или просто другую программу: Client или Visual IRC.
      Однако, если куча ботов будет вас спамить долго, вас отключат с причиной Max sendQ (см. выше описание). Тут защита одна - заигнорить всех спаммеров, но не в программе (mIRC'е), а на стороне сервере:
      /silent +[маска_для_игнора]
      - установить игнор
      /silent -[маска_для_игнора]
      - снять игнор
      /silent
      - посмотреть список игнор хостов
      Чтобы подействовало сразу, игнорьте всех по маске *!*@* Еще довольно простой способ - выйти со всех каналов и сменить себе ник. Тогда никто и никакими способами не сможет узнать, на какой именно ник вы сменили свой старый ник. Можно, конечно, и не выходить с канала, но тогда вы не будете знать, видит ли вас флудер.

      Откуда берутся флуд боты?

      От верблюда. IRC - это поле деятельности крутых кацкеров, которые уже немного подрасли, чтобы слать почтовые бомбы, бегать с вопросом "Как узнать IP в чате?" или нести бред в конференциях на разных сайтах =) Вот именно они и причина периодичного появления звеского флуда некоторых каналов.
      Как я сказал, данные товарищи, когда им нечего делать, идут в IRC показывать свою крутость. Делается это очень просто. Один программер или целая группа, пишут IRC клиент на языке программиварования Си (для не программистов - это основной язык написания программ). "Клиент" - это тип программ, которые могут куда-то подключаться и работать совместно с другими программами, например, к серверам в интернете (mIRC - тоже клиент, сама по себе программа ничего делать не может, нужна только для подключения к серверу). Так вот, написав небольшой IRC клиент злобные хацкеры рассылают данную программу по почте с надеждой, что неопытные пользователи ее у себя случайно запустят. И если запустят, то их компьютер становиться клинтов для атак на IRC сети. Такая программа не похожа не вирус, она сама обычно не распространяется, но это натуральный троян. Такой компьютер, когда он подключен к Интернету, готов в любой момент соединиться с нужным ИРЦ-сервером, войти на любой канал и исполнить любые команды, например - начать флуд определенного канала. Бедные пользователи, которые даже не слышали об IRC и тихо ходят в инет, ничего не подозревая участвуют в спаме. И будут долго участвовать, т.к. антивирусов у них нет. Да и в принципе поймать такую самодельную программу весьма трудно, т.к. это не какой-то рапространенный вид троянской программы, с которыми антивирусы умеют бороться.
      Ну, теперь вам должно быть понятно, как с разных диал-ап адресов может появиться такое большое число ботов. На самом деле это не боты, т.е. не то, с чем мы обычно их ассоциируем - программа на сервере, а куча активизированных троянских программ на куче зараженных компьютеров. Если к вам пришло 100 ботов (с каждого компа обычно в ИРЦ ломяться сразу 3 клона), то значит у хацкера, напавшего на ваш канал, в данный момент около 30 пострадавших компов в онлайне. И еще больше, конечно, зараженных компов, но не подключенных в данный момент к IRC.
Далее - советы не для чайников, поэтому без pазъяснений элементаpных вещей.
  • Получить IDLE любого юзеpа

    :
    /whois NICK NICK
    (2 pаза)
  • Получить список всех команд

    -
    /stats m
    или
    /raw help
    . Сеpвеp выдаст следующую табличку. Пpимечание: "?" - не понятно, "???" - не понятно и сеpвеp ничего не ответил, "-" - и так понятно, "*" - только для IRCop'ов.
     
    ADMIN 72 587 инфо об админах сеpвеpа
    AWAY 2647456 96882291 -
    BURST 842626 36049755 сервера при коннекте между собой передают инфу о каналах в спец 
    упакованном формате
    CLOSE 5 20 ?
    CNOTICE 13511 1707774 /CNOTICE NICK #CHAN MSG - тоже, что и NOTICE, только с указанием канала
    CONNECT 814 5906 * 
    CPRIVMSG 13956 1543214 /CPRIVMSG NICK #CHAN MSG - тоже, что и PRIVMSG, только с указанием канала
    CREATE 1495990 31852297 аналогично BURST, но другая информация
    DESYNCH 384 27657 коррекция информации о тех кто имел/не имел флаги +o/+v/баны и т.п.
    DIE 13 36 * 
    DNS 5 34 /DNS [IP or DNS] - имя<->IP
    END_OF_BURST 220 490 передайтся после сплита, означает конец обмена информацией BURST и переход 
    в обычный не упакованный режим обмена
    EOB_ACK 192 409 подтверждение того, что END_OF_BURST получена
    ERROR 1764 49513 ???
    GLINE 1243 190003 * 
    HASH 3 8 кол-во юзеpов и каналов (похожа на LUSERS)
    HELP 77 393 -
    INFO 92 1035 хpень какая-то о лицензиях :) инфо об авторе текущего ircd
    INVITE 62347 1364978 -
    ISON 1091278 633808024 /ISON NICK - pовеpить, не в онлайне ли NICK
    JOIN 1601302 140903113 -
    KICK 798056 36873559 -
    KILL 20964 3492733 -
    LINKS 2636 13099 получить линки, список сеpвеpов
    LIST 7284 56137 -
    LUSERS 68664 405330 -
    MAP 629 1906 деpево сеpвеpов Андеpнета
    MODE 9095864 158201501 -
    MOTD 527 2167 -
    NAMES 41180 352729 -
    NICK 1111680 498091767 -
    NOTICE 4844659 241600710 -
    OPER 540 6799 :)
    PART 6765352 79123574 -
    PASS 19083 198694 для обмена между серверами
    PING 2973464 73589875 -
    PONG 8892891 219925436 -
    POST 233 2408 ???
    PRIVMSG 7467914 3004192458 -
    PROTO 4 28 при коннекте сервера обмениваются номером версии протокола, он бывает от 1 до 12
    QUIT 4987400 142139770 
    REHASH 26 159 * 
    RESTART 5 44 * 
    RPING 31 204 * 
    RPONG 22 1489 * 
    SERVER 499 36843 пеpеконнектиться
    SILENCE 8912 234594 игнор на стороне сервера
    SQUIT 201 11760 * отсоединить сеpвеp от дpугих, типа 
    это и есть нетсплит 
    STATS 8347 19908 /STATS [любая буква алфавита] -- куча инфы, см. ниже
    TIME 7949 60910 -
    TOPIC 509789 32764363 -
    TRACE 27275 188512 /TRACE NICK -- тpассиpовка по сеpвеpам до ника
    UPING 16 153 -
    USER 2013950 110650540 при коннекте к ИРЦ серверу клиент информацию о человеке
    USERHOST 1371465 20012915 /USERHOST NICK -- хостмаска
    USERIP 156 1057 /USERIP NICK -- IP
    VERSION 5289 68551 версия текущего сервера
    WALLCHOPS 53365 3383103 /WALLCHOPS #CHAN MSG -- послать мессагу всем @опам канала
    WALLOPS 290 16765 * так ИРЦопы переговариваются  
    WHO 842656 10996029 -
    WHOIS 1861001 14087788 -
    WHOWAS 18795 174879 -

    Чтобы получить полный список банов сервера надо выполнить
    /stats g
    . Только учтите, что если вы на модеме, то вас тут же отключат от IRC с причиной Max sendQ, сервер кинет вам огромный ответ, который невозможно быстро получить, чтобы не превысить лимит. На выделенной линии получить этот огромный список можно.
    По
    /stat w
    можно получить это. Что значит - не в курсе.
     
    [07:32] -Flanders.Be.Eu.Undernet.org- Minute Hour Day Yest. YYest. Userload for:
    [07:32] -Flanders.Be.Eu.Undernet.org- 11.0 11.0 18 18 17 local clients
    [07:32] -Flanders.Be.Eu.Undernet.org- 2846.9 3022.7 5092 4796 4138 total clients
    [07:32] -Flanders.Be.Eu.Undernet.org- 2848.9 3024.7 5094 4798 4140 total connections

    По
    /stat t
    выдают статистику по объемам выполненной работы (скорее всего с момента запуска сервера).
     
    accepts 62794336 refused 51623425
    unknown commands 74856978 prefixes 13071
    nick collisions 9067 unknown closes 20510549
    wrong direction 844 empty 91221
    numerics seen 4328270 mode fakes 0
    auth successes 8825391 fails 17093143
    local connections 0
    Client Server
    connected 6589147 48
    bytes sent 805517349.666K 33860868.462K
    bytes recv 38565112.654K 52007492.635K
    time connected 1518538326 008261042

    По
    /stat y
    - не понятно:
     
    Y 0 120 600 1 40000 0
    Y 1 90 0 7000 60000 1924
    Y 2 90 0 2500 80000 636
    Y 3 90 0 250 50000 250
    Y 10 90 0 100 300000 8
    Y 50 90 300 10 1700000 0
    Y 70 90 300 1 1700000 0
    Y 80 90 300 1 1700000 0
    Y 90 180 300 1 7000000 1
    Y 91 180 300 1 20000000 1

    По /stat u выдают большой, но не понятный список из доменов верхнего уровня и больших сетей. Наверно что-то касается роутинга, резолва имен или K-line - переброса некоторых юзеров на другие сервера. Чтобы читать pазговоpы IRCopов, надо сделать /mode [ВашНик] +w. Чтобы читать появляющиеся глобал баны (G-LINE, *-LINE...) - /mode [ВашНик] +s. Веpнее, +s -- это не только баны, но и, к пpимеpу, сообщения о нетсплитах (начало/конец). Флагов много. Например о - локальный ИРЦоп и О - глобальный.
     
    *** You are now an IRC Operator
    *** Your user mode is "+oiwghsaAcfxvb"
  • Чтобы стать иркопом

    , надо сделать
    /oper [ircopnick] [ircoppasss]
    . Желательно иметь еще подходящий хост... Разумеется, ни пароля, ни возможности подделать нужный хост у вас нет. Попытки взятия опа отражаются на консоли у всех иркопов. Получить список хост-масок и ников иркопов -
    /stats o
    .
  • Получить E-Mail и IDLE от клиента человека

    -
    /ctcp [NICK] finger
  • Чтобы пингануть всех юзерей канала одной командой

    /ping #channel
    (в mIRC)
    putserv "PRIVMSG $chan :\001PING [unixtime]\001"
    (на TCL)
  • Ответ на CTCP запрос (пример с пингом)

    тоже, что и пинг, только PRIVMSG на NOTICE заменить
Максимально длинное имя канала в сети Undernet - 99 символов, включая решетку: #01234567890123456789012345678901234567890123456789012345678901234567890123456789012 345678
   Знаете ли вы, что каналы могут начинаться не только на решетку? Еще допустимые символы - знак И (&) и плюс (+). Особенность каналов, начинающихся на + - первый входящий на несуществующий канал не получает оп! Все знают, что если всем выйти с канала и зайти назад, то первый вошедший окажется с опом. А на плюсовых каналах - нет. Таким образом, если вы хотите поиграть в шпионов и назначить комуто явку в неизвестной IRC сети (вдруг, на том канала, что вы выберете, вам дадут бан и не позволят говорить), то назначайте ее на плюсовом канале. Только IRCопы могут становиться опами на таких каналах. Но они туда не ходят, да и вероятности нет никакой, что им захочется на неуправляемом канале что-то делать - на то и придуманы каналы без опов. Кстати, на таком канале можно ставить топик (флага t нет) и слать сообщения в канал, не находясь на нем (флага n тоже нет)! Но тут есть "НО" - на практике сменить топик или послать сообщенеи не находях на канале нельзя, хоть флаги это разрешают.
   Кстати, боты в курсе об этом - поставьте бота на канал + и покиньте канал. Бот не будет пытаться выходить, чтобы выйти и зайти снова с рассчетом получить оп. Он умный, знает, что не будет опа =))
   Буквами A-Line B-Line и т.д. (весь алфавит) в IRC называют разные вещи. Например: G-Line K-Line и A-Line - баны. Данное название пошло с давних пор, когда все настройки серверов писали в конфигурационные файлы.
Последнее обновление ( Понедельник, 21 Январь 2008 )
< Пред.   След. >