MIRC端口扫描仪

时间:2011-04-13 21:34:52

标签: python sockets irc

  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()

该脚本可以工作,但是在它可以获得一个开放端口之前ping超时,我怎么能这样做它可以扫描几个端口然后从服务器检查ping并发送一个pong然后再扫描几个端口所以它不会ping超时。

1 个答案:

答案 0 :(得分:1)

最好的解决方案是使用多个线程,主线程解析来自IRC的输入并响应PING,而其他线程执行实际的命令处理以及任何可能需要很长时间的事情。

skybot,我的IRC机器人,每当发出命令时都会生成一个新线程,并使用线程安全队列在它们之间传递消息。