C# - 向 Telnet 服务器发送命令(纯文本)
Posted
技术标签:
【中文标题】C# - 向 Telnet 服务器发送命令(纯文本)【英文标题】:C# - Send command to Telnet Server (Plain Text) 【发布时间】:2020-12-16 14:18:00 【问题描述】:我正在尝试连接并向 TCP 服务器发送命令(我认为是 Telnet)。我只知道我需要发送命令来接收数据。
我们的本地网络上已经有一个阅读器,但它很旧,没有我们需要的所有功能。为了监控阅读器,我安装了 Wireshark。它表明发送的命令是纯文本的。而且没有身份验证。
所以我只需要连接,无需身份验证并以纯文本形式发送命令。如何使用 C# 连接到 Telnet 服务器?
Wireshark 打印:print
【问题讨论】:
【参考方案1】:这是一个套接字的例子,它是通过 TCP 发送和接收数据的一种方式。 您可以更改地址和端口,并请求文本,它应该已经是一个工作示例。
Socket Class (System.Net.Socket)
如果您需要发送的是字节而不是文本,您可以手动填充发送的字节数组,而不是将字符串解码为 Byte[] bytesSent = Encoding.ASCII.GetBytes(request);
行中的字节数组
【讨论】:
我已经尝试过socket和TCPClient。但显然不可能以纯文本形式发送命令。我需要以纯文本形式发送命令.. 那正是代码。它的ASCII。将request
的内容替换为您的文本,调整地址和端口,然后运行程序。 Wireshark 应该显示纯文本。
No.. Encoding.ASCII 将字符串转换为 ASCII。使用 Wireshark 进行监控会显示 ASCII 码……而不是纯文本。
Encoding.ascii 将字符串转换为字节数组。每个 ASCII 字符都由 0 到 255 之间的字节值表示。它相同。32 表示空格等。你确定你正确使用了 wireshark 吗??你可以阅读 telnet rfc,它的 ASCII
嗨迈克尔。我解决了这个问题。 Wireshark 数据是正确的。数据是字符串十六进制。所以我使用这个例子将我的字符串十六进制转换为字节数组:***.com/questions/321370/…【参考方案2】:
老实说,您不能发送纯文本,您需要将纯文本转换为字节数组,然后将该数组写入端口
这有我们应该如何做到这一点的例子
Server Client send/receive simple text
【讨论】:
Telnet 数据以纯文本形式发送。超级旧的协议。看我帖子的截图。 ***.com/questions/390188/c-sharp-telnet-library 看看对你有没有帮助 这个我也已经测试过了。这个例子的问题在于它使用了身份验证和数据加密。以上是关于C# - 向 Telnet 服务器发送命令(纯文本)的主要内容,如果未能解决你的问题,请参考以下文章
从服务器向AWS JS SDK发送签名,而不是使用纯文本密钥
如何在 C# 程序中打开 Telnet 会话并以编程方式发送命令和接收响应?