Javascript开放端口扫描程序

Javascript开放端口扫描程序,javascript,node.js,ip,port,child-process,Javascript,Node.js,Ip,Port,Child Process,我正在使用node.js在js中进行ip端口扫描。 我使用如下命令启动函数:>getports 127.0.0.0 我想看看所有可以用来拒绝服务的端口 这是我的密码: const { exec } = require('child_process'); exec(`netstat -an ${args[0]} | findstr "ESTABLISHED"`, (error, stdout, stderr) => { if(error){ console.log(`exec

我正在使用node.js在js中进行ip端口扫描。 我使用如下命令启动函数:>getports 127.0.0.0 我想看看所有可以用来拒绝服务的端口

这是我的密码:

const { exec } = require('child_process');

exec(`netstat -an ${args[0]} | findstr "ESTABLISHED"`, (error, stdout, stderr) => {
  if(error){
    console.log(`exec error: ${error}`);
    return;
  }else if(stdout){
    console.log(`Found :\n${stdout.slice(0, 1980)}`); // I just want the 1980 first chars
    return;
  }else if(stderr){
    console.log(`stderr: ${stderr}`);
    return;
  }
});
执行的命令:netstat-127.0.0.0 | findstr“已建立”

我被阻止了,因为这个过程永远不会结束。所以我从来没有得到回应

  • exec
  • 此方法将生成一个子shell,并在该shell和缓冲区生成的数据中执行命令。当子进程完成时,将使用以下命令调用回调函数: 命令成功执行时缓冲的数据

    当您从cmd运行netstat-an 127.0.0.1时,您可以看到该命令仍在继续运行,直到您发送停止信号

    因此,如果您想将输出获取到缓冲区,我建议您生成一个cmd.exe并从中执行netstat.exe

    function run_cmd(cmd, args, cb, end) {
    var spawn = require('child_process').spawn,
        child = spawn(cmd, args),
        me = this;
    child.stdout.on('data', function (buffer) { cb(me, buffer) });
    child.stdout.on('end', end);
    }
    
    // Run C:\Windows\System32\netstat.exe -an
    var foo = new run_cmd(
        'netstat.exe', ['-an'],
        function (me, buffer) { me.stdout += buffer.toString() },
        function () { console.log(foo.stdout) }
    );
    

    类似这样的内容

    只是一个建议:“ETABLISHED”似乎是一个拼写错误。是的,mb,我更改了它,但没有解决我的问题:/args[0]中您希望出现什么?你能用console.log记录exec字符串吗?args[0]是我在命令中提供的ip地址*javascript在我的机器上工作。请在控制台中运行命令
    netstat-一个127.0.0.1 | findstr“已建立”
    ,以确保该命令在您的机器上工作。