MIRC端口扫描器

问题描述

|
  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超时。     

解决方法

最好的解决方案是使用多个线程,其中主线程解析来自IRC的输入并响应PING,而其他线程则进行实际的命令处理以及任何可能花费很长时间的事情。 我的IRC机器人skybot每当发出命令时都会生成一个新线程,并使用线程安全队列在它们之间传递消息。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...