【问题标题】:Is there some way to detect if a connected socket is using telnet?有什么方法可以检测连接的套接字是否正在使用 telnet?
【发布时间】:2017-08-12 12:18:53
【问题描述】:

我想知道连接的套接字是使用 telnet 还是其他协议。

需要什么才能知道这一点?我需要检查网络流量吗?

还有第三方库可以帮助我吗?

【问题讨论】:

    标签: c# sockets telnet


    【解决方案1】:

    有趣的问题。用户连接到“Telnet”套接字的第一个提示是端口号,官方端口是 23,但是服务器可以监听任何端口。

    检测 Telnet 的最大问题是,并不总是使用严格的“Telnet”协议(尽管存在),因为服务器可以选择不实现它,而只是直接使用普通 ASCII。您实际上是在处理通过普通旧 TCP 连接传输的普通 ASCII 字符和(可选)控制字符。大多数 telnet 服务器都会给出一些重要的提示,但它们会泄露出去,但您需要检查流量以确定。

    在网络流量中要寻找的东西是:

    1. 流量多为 ASCII 字符,通常混有英文单词或 linux 程序名。

    2. 控制字符。不能保证所有 Telnet 服务器(或位于其后面的终端)都实现这些,但几乎总是如此。专门查找CSI control codes,它可以更改终端大小、颜色和光标位置。

    3. 确凿证据,Telnet Negotiation。通常 Telnet 服务器在连接时发送这些命令,客户端也可以响应信息。它还处理一些其他功能,例如终端调整大小和字符集,但同样,并非所有服务器都实现了这一点。从这些信息中,您通常可以抓取客户端正在使用的客户端应用程序(例如 Putty)。

    在 TCP 连接中检测到任何这些东西都是 Telnet 会话正在发生的一个很大的迹象。

    【讨论】:

    • SMTP 和 Telnet 会话看起来一样吗? Telnet 是否如此幼稚,以至于许多已建立的协议和服务看起来都像 telnet? .
    • 虽然 SMTP 包含明文,但缺少丰富的 CSI 控制代码和任何 Telnet 协商消息。但是,在包含某些附件编码的电子邮件中可能会检测到误报。您还可以查找 SMTP 和其他明文协议并明确过滤掉它们,但归根结底,它实际上可能只是一个原始 TCP 连接。任何东西都可以看起来像任何东西。
    猜你喜欢
    • 2020-04-19
    • 2019-04-27
    • 2016-09-12
    • 2012-02-09
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    相关资源
    最近更新 更多