Telnet协议
Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式
前言
它是Tnternet中用来进行远程访问的重要协议之一。远程登录允许用户与远程计算机进行动态交互,即用自己的键盘,鼠标等输入设备操纵远程计算机,运行远程计算机上的软件,在自己的显示器上了解运行情况,查看运行结果。
一、工作原理
使用Telnet协议进行远程登录时需要满足以下条件:
- 在本地计算机上必须装有包含Telnet协议的客户程序;
- 必须知道远程主机的Ip地址或域名;
- 必须知道登录标识与口令。
Telnet远程登录服务分为以下4个过程:
- 本地与远程主机建立连接。该过程实际上是建立一个TCP连接,用户必须知道远程主机的Ip地址或域名;
- 将本地终端上输入的用户名和口令及以后输入的任何命令或字符以NVT(Net VirtualTerminal)格式传送到远程主机。该过程实际上是从本地主机向远程主机发送一个IP数据包;
- 将远程主机输出的NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果;
- 最后,本地终端对远程主机进行撤消连接。该过程是撤销一个TCP连接
二、代码模拟
代码如下(示例):
最基本的Telnet示例,借鉴于python的telnetlib库给出的经典实例
#python的telnetlib库给出的经典实例
import getpass
import sys
import telnetlib
HOST = "localhost"
user = raw_input("Enter your remote account: ")
password = getpass.getpass()
tn = telnetlib.Telnet(HOST)
tn.read_until("login: ")
tn.write(user + "\n")
if password:
tn.read_until("Password: ")
tn.write(password + "\n")
tn.write("ls\n")
tn.write("exit\n")
print tn.read_all()
import telnetlib
'''由经典实例改写的Telnet远程登录'''
# 配置选项
Host = 'xxx.xxx.xxx' # Telnet服务器IP
username = 'admin' # 登录用户名
password = 'admin' # 登录密码
finish = ':~$ ' # 命令提示符
# 连接Telnet服务器
TN = telnetlib.Telnet(Host)
#输入登录用户名
TN.read_until('login: ')
TN.write(username + '\n')
# 输入登录密码
TN.read_until('Password: ')
TN.write(password + '\n')
# 登录完毕后,执行ls命令
TN.read_until(finish)
TN.write('ls\n')
# ls命令执行完毕后,终止Telnet连接
TN.read_until(finish)
TN.close()
golang代码模拟就不写了,自己的水平不够,测试经常失败,连接不上
还是老样子,我给大家推荐一篇大佬的博客
总结
提示:期待大家的一键三连,希望大家多多转发
网络协议分析专题创作的第四天,可能是刚开始写,有些生疏,水平也不够,因为想要每天一篇,但又没那么多时间…导致代码模拟部分有些拉跨,还望各位友友们见谅