2015-04-12 484 views
-1

我正在研究一個大學項目,我必須評估開放WiFi網絡的安全威脅。我選擇了aircrack-ng工具進行滲透測試。我的項目使用Node js提供豐富的功能。但是,我是一名初學者,並且正在努力解決一個問題。首先,我將介紹我的代碼,然後提出問題。Nodejs child_process執行shell命令

var spawn = require('child_process').spawn; 
var nic = "wlan2"; 

//obtain uid number of a user for spawing a new console command 
//var uidNumber = require("uid-number"); 
// uidNumber("su", function (er, uid, gid) { 
// console.log(uid); 
// }); 

//Check for monitor tools 
var airmon_ng= spawn('airmon-ng'); 
airmon_ng.stdout.on('data', function (data) { 
    nicList = data.toString().split("\n"); 
    //use for data binding 
    console.log(nicList[0]);//.split("\t")[0]); 
}); 

//airmon start at the nic(var) 
var airmon_ng_start = spawn('airmon-ng',['start',nic]).on('error',function(err){console.log(err);}); 
airmon_ng_start.stdout.on('data', function (data) { 
console.log(data.toString()); 
}); 

var airmon_ng_start = spawn('airodump-ng',['mon0']).on('error',function(err){console.log(err);}); 
airmon_ng_start.stdout.on('data', function (data) { 
console.log(data.toString()); 
}); 

正如上面的代碼所示。我使用child_process.spwan來執行shell命令。在「var airmon_ng_start = spawn(......」)行中,實際的命令在終端中執行並且不會結束,直到ctrl + c被點擊,並且它定期更新附近可用的Wi-Fi網絡列表。我的目標是確定我想測試漏洞的網絡,但是當我執行命令時,進程會進入無限循環並等待shell命令終止(從終止狀態直到終止),而且我希望使用stdout流來顯示Wi-Fi發現和更新的新數據集。可能node.js專家爲我提供了一個更好的方法來做到這一點嗎?

2)另外我用來以root身份執行一些命令。這怎麼可能完成。現在我正在運行JavaScript作爲根。但是,在這個項目中,我只想以root身份執行一些命令,而不是以root身份執行整個js文件。有什麼建議麼 ?

回答

0
//inherit parent`s stdout stream 
var airmon_ng_start = spawn('airodump-ng',['mon0'],{ stdio: 'inherit' }) 
.on('error',function(err){console.log(err);}); 

找到了這個解決方案。簡單繼承父母的標準輸出