使用nodejs Telnet登录时不能输入密码

can't enter password in telnet login with nodejs

本文关键字:不能 输入 密码 登录 nodejs Telnet 使用      更新时间:2023-09-26

如果我从windows命令行远程登录,没有问题:

> telnet telehack.com
(... wait until a '.' appears)
. login
username? example
password? (examplepass) * * * * * * * 
Logged...
(...)
@ (This is the prompt when you are logged)

因此,有了shell,我可以登录并做所有事情,并且使用为nodejs编写的javascript代码,我可以做所有事情,但输入密码。然后我能够:连接到主机+端口,输入"login"命令,输入"示例"用户名(实际存在),当我尝试输入"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');
    }
  });
});

看看这个

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发送任何数据到套接字。