2011-04-13 136 views
0
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和發送一個乒乓球那麼掃描一些更多的端口,以防止ping超時。MIRC端口掃描器

回答

1

最好的解決方案是使用多線程,主線程解析來自IRC的輸入並響應PING,而其他線程執行實際的命令處理以及任何可能需要很長時間的任何操作。

skybot,我的IRC bot會在發出命令時產生一個新線程,並使用線程安全隊列在它們之間傳遞消息。

+0

一個線程安全的隊列是一個機器人的好主意。我應該添加到我的基於插件的機器人。 – bgw 2011-04-13 23:43:53