2016-07-19 8 views
0

以下は、私がnodeで書いたmy port-scannerのコードです。問題は、正しい結果を1回限り得られますが、実行中の他のインスタンスでいくつかのオープンポートをスキップします。オープンポートには22,80,443が含まれています。数回実行してもらえますか?それはすべてあなたが設定されたタイムアウトに依存なぜこのポートスキャナは毎回正確な結果を得られないのですか?

const async = require('async') 
 
const net = require('net') 
 
const timeout = 3000 
 
const host = '192.30.253.113' 
 
const openPorts = [] 
 
const concurrency = 100 
 
const portsToScan = 2000 
 

 
const q = async.queue(function(port, callback) { 
 
    const client = net.createConnection({ 
 
    port: port, 
 
    host: host 
 
    },() => { 
 
    openPorts.push(port) 
 
    client.destroy() 
 
    }) 
 

 
    client.on('error',() => { 
 
    client.destroy() 
 
    }) 
 

 
    client.setTimeout(timeout,() => { 
 
    client.destroy() 
 
    }) 
 

 
    client.on('close',() => { 
 
    callback() 
 
    }) 
 
}, concurrency) 
 

 
for (let port = 0; port <= portsToScan; port++) { 
 
    q.push(port) 
 
} 
 

 
q.drain =() => { 
 
    console.log(openPorts) 
 
}

答えて

0

... 3Sは、私が(ピング> 1000ミリ秒今夜午前どこから多くありませんが、それは働いていない理由は、多分それはだ、悪い日ですよくここから)。 "完璧な"パラメータを理解することは難しいです。

注:ポート0はありません。ループは1で開始できます。

関連する問題