如果我从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');
}
});
});
答案 0 :(得分:1)
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发送到套接字。