MIRC Порт Сканер - PullRequest
       5

MIRC Порт Сканер

0 голосов
/ 14 апреля 2011
  if data.find('!scan') != -1:
     nick = data.split('!')[ 0 ].replace(':','')
     targetip = str(socket.gethostbyname(args))
     sck.send('PRIVMSG ' + chan + " :" ' scanning host' + " " + targetip + '\r\n')
     for i in range(20, 1025):
         s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
         result = s.connect_ex((targetip, i))
         if (result == 0) :
              s.send('PRIVMSG ' + chan + " :" 'port %d: OPEN' % (i,) + '\r\n')
         s.close()

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

1 Ответ

1 голос
/ 14 апреля 2011

Лучшее решение - использовать несколько потоков, причем основной поток анализирует входные данные IRC и отвечает на запросы PING, тогда как другие потоки выполняют фактическую обработку команд и все, что может занять много времени.

skybot , мой IRC-бот, порождает новый поток при каждом запуске команды и использует потокобезопасные очереди для передачи сообщений между ними.

...