C# 中的 Telnet 庫

Muhammad Zeeshan 2023年10月12日
  1. C# 中的 Telnet 庫
  2. C# 中 Telnet 庫的應用
  3. C# 中 Telnet 庫的後果
C# 中的 Telnet 庫

本教程將解釋 Telnet 庫並用 C# 演示一個簡單的 Telnet 介面。

C# 中的 Telnet 庫

Telnet 是一種網路協議,允許你虛擬連線到計算機並在兩個工作站之間建立雙向、相互支援、基於文字的通訊通道。

它使用使用者命令傳輸控制協議/網際網路協議 (TCP/IP) 網路協議建立遠端會話。

在 Web 上,超文字傳輸​​協議 (HTTP) 和檔案傳輸協議 (FTP) 僅允許使用者從遠端計算機請求特定檔案。

但是,Telnet 允許使用者以普通使用者的身份登入,並具有為該機器上的特定應用程式和資料提供的功能。

例子:

此類的可能應用程式包括 Telnet 終端、基於必須在伺服器上執行的某些 UNIX 命令的 Windows GUI,以及執行 telnet 指令碼的軟體。

此程式碼提供了一個簡約的終端和通過檔案管道部署指令碼的選項。

首先,匯入以下庫:

using System;
using System.Collections.Generic;
using System.Text;

在名稱空間 MinimalisticTelnet 中建立一個 Telnet 類來編寫程式碼。

namespace MinimalisticTelnet {
  class Telnet {}
}

Main 函式中的埠 23 上建立一個名為 Tcon 到主機名 shani 的新 telnet 連線。Telnet 協議通常使用埠 Port 23

TelnetConnection Tcon = new TelnetConnection("shani", 23);

Login() 方法的幫助下,構造一個字串變數 t,它將包含登入憑據,例如 rootrootpasswordtimeout。我們提供了 rootrootpassword 和 130 秒的 timeout

它將顯示伺服器輸出,如你在以下程式碼行中所見。

string t = Tcon.Login("root", "rootpassword", 130);
Console.Write(t);

獲得伺服器輸出後,我們將驗證伺服器輸出。它應該以 $> 結尾;否則,將引發異常,並顯示訊息 Something went wrong, failed to connect

string Prmpt = t.TrimEnd();
Prmpt = t.Substring(Prmpt.Length - 1, 1);
if (Prmpt != "$" && Prmpt != ">")
  throw new Exception("Something went wrong failed to connect ");
Prmpt = "";

現在,我們將使用 while 迴圈並將 telnet 連線 Tcon 作為引數傳遞,以檢視它是否已連線。如果已連線,則迴圈執行;否則,它將終止並顯示訊息 Disconnected

while (Tcon.IsConnected && Prmpt.Trim() != "exit") {
}
Console.WriteLine("Disconnected");
Console.ReadLine();

最後,在 while 迴圈的主體中編寫以下程式碼。

while (Tcon.IsConnected && Prmpt.Trim() != "exit") {
  Console.Write(Tcon.Read());
  Prmpt = Console.ReadLine();
  Tcon.WriteLine(Prmpt);
  Console.Write(Tcon.Read());
}

伺服器的輸出將顯示在以下程式碼行中。

Console.Write(Tcon.Read());

這會將所有客戶端的資訊或輸入傳輸到伺服器。

Prmpt = Console.ReadLine();
Tcon.WriteLine(Prmpt);

輸入客戶端資訊後,此程式碼將顯示伺服器的輸出。

Console.Write(Tcon.Read());

示例程式碼:

using System;
using System.Collections.Generic;
using System.Text;

namespace MinimalisticTelnet {
  class Telnet {
    static void Main(string[] args) {
      TelnetConnection Tcon = new TelnetConnection("shani", 23);
      string t = Tcon.Login("root", "rootpassword", 130);
      Console.Write(t);
      string Prmpt = t.TrimEnd();
      Prmpt = t.Substring(Prmpt.Length - 1, 1);
      if (Prmpt != "$" && Prmpt != ">")
        throw new Exception("Something went wrong failed to connect ");
      Prmpt = "";
      while (Tcon.IsConnected && Prmpt.Trim() != "exit") {
        Console.Write(Tcon.Read());
        Prmpt = Console.ReadLine();
        Tcon.WriteLine(Prmpt);
        Console.Write(Tcon.Read());
      }
      Console.WriteLine("Disconnected");
      Console.ReadLine();
    }
  }
}

C# 中 Telnet 庫的應用

Telnet 允許使用者連線到任何使用基於文字的未加密協議的程式,例如 Web 伺服器和埠。

Telnet 可用於在伺服器上執行一系列任務,包括檔案編輯、程式執行和電子郵件檢查。

各種伺服器通過 Telnet 提供對公共資料的遠端訪問,允許使用者玩簡單的遊戲或檢視天氣預報。其中許多功能之所以持續存在,是因為它們懷舊或與需要某些資料的早期系統相容。

C# 中 Telnet 庫的後果

Telnet 存在安全漏洞。這是一個未加密的、不安全的協議。

在 Telnet 會話期間,任何監視使用者連線的人都可以看到使用者的登入名、密碼和其他以明文形式編寫的私人資訊。此資料可用於訪問使用者的裝置。

Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn