无法通过nodejs在telnet登录中输入密码

时间:2014-03-18 10:52:16

标签: javascript node.js telnet

如果我从windows命令行telnet没有问题:

> telnet telehack.com
(... wait until a '.' appears)
. login
username? example
password? (examplepass) * * * * * * * 

Logged...
(...)
@ (This is the prompt when you are logged)

所以使用shell我可以登录并执行所有操作,并且使用为nodejs编写的javascript代码,我可以执行所有操作,但输入密码。然后我就可以:连接到主机+端口,输入“登录”'命令,输入'示例'用户名(实际存在)以及当我尝试输入' examplepass' (实际上也存在)telnet服务器用' * * * * * * *'来回答我但是我无法通过那一步。我将提供代码,感谢任何帮助。

var net = require('net');
var conn = net.createConnection(23, 'telehack.com');

conn.setEncoding('utf-8');

conn.on('connect', function() {  
  console.log('connected to the server');

  conn.on('data', function(data) {
    console.log('' + data);
    if (data.indexOf('username') != -1) {
      conn.write('example\r\n');
    }
    if (data.indexOf('pass') != -1) {
      conn.write('examplepass\r\n');
    }
    if (data.indexOf("@") != -1) {
      conn.write('date\r\n');
    }
    if (data.slice(-1) == '.'){
      console.log('slice: '+data.slice(-1));
      //conn.emit('login');
      conn.write('login\r\n');

    }
  });
});

1 个答案:

答案 0 :(得分:1)

Check this out.

var net = require('net');
var client = net.connect(parseInt(process.argv[3]),process.argv[2],function(){
    client.setEncoding('utf8');
    console.log('Connected!!');
    client.on('data',function(chunk){
        console.log(chunk);
    });
    process.stdin.resume(); // Activate STDIN
    process.stdin.setEncoding('utf8'); // Set it to string encoding
    process.stdin.on('data',function(chunk){ // Pipe STDIN to Socket.out
        client.write(chunk);
    });
});

您必须重新启用stdin并将任何数据从stdin发送到套接字。