← 回到文章列表

用Mina架设最基本的Telnet服务器

其实我们经常会用到telnet命令进行远程操作 但是telnet的底层也就是最基本的socket 并且telnet是不加密的 所以大家都说安全性差 我们可以使用mina框架轻松模拟最基本的telnet服务哦 我们先去下载mina的core包 新建java工程 导入好mina的ja…

其实我们经常会用到telnet命令进行远程操作
但是telnet的底层也就是最基本的socket
并且telnet是不加密的 所以大家都说安全性差
我们可以使用mina框架轻松模拟最基本的telnet服务哦
我们先去下载mina的core包
新建java工程 导入好mina的jar包

然后我们新建一个telnet.java
写入如下:

import java.net.InetSocketAddress;
import java.nio.charset.Charset;

import org.apache.log4j.Logger;
import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.LineDelimiter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;

public class telnet {
	private static Logger logger = Logger.getLogger(telnet.class);
	private static int PORT = 3005;

	public static void main(String[]  t){
		IoAcceptor acceptor = null;
		try{
			acceptor = new NioSocketAcceptor();
			acceptor.getFilterChain().addLast(
					"telnet", 
					new ProtocolCodecFilter(new TextLineCodecFactory(
							Charset.forName("UTF-8"),
							LineDelimiter.WINDOWS.getValue(),
							LineDelimiter.WINDOWS.getValue())));
			acceptor.getSessionConfig().setReadBufferSize(2048);
			acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
			acceptor.setHandler(new telnetServerHandler());
			acceptor.bind(new InetSocketAddress(PORT));
			logger.info("Finish");
		}catch (Exception e){
			logger.error("Error"+e);
		}
	}
}

然后新建一个telnetServerHandler.java
进行实现数据处理交互

import java.io.BufferedReader;
import java.io.InputStreamReader;

import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
import org.apache.log4j.Logger;


public class telnetServerHandler extends IoHandlerAdapter{
	private static Logger logger = Logger.getLogger(telnetServerHandler.class);
	public void sessionCreated(IoSession session) throws Exception{
		logger.info("Connected");
	}
	public void sessionOpened(IoSession session) throws Exception{
		logger.info("Seesion Open");
	}
	public void messageReceived(IoSession session,Object message) throws Exception{
		String msg=message.toString();
		logger.info("Massage:"+msg);
		Process pro=Runtime.getRuntime().exec(msg);
		
		BufferedReader msgBr=new BufferedReader(new InputStreamReader(pro.getInputStream()));
		String strTemp="";
		while((strTemp = msgBr.readLine()) != null){
			session.write(strTemp);
		}
	}
	public void messageSent(IoSession session,Object message) throws Exception{
		logger.info("Send Message:"+message.toString());
	}
}

因为java的安全性
有很多命令是不能使用的
但是这也基本实现了telnet原理了
效果如下: [媒体不可用]

由此也可以得到
需要sudo权限的命令都是不可运行的哦~

在这里找找

输入关键词,找一篇过去的记录。