Firewall-Login via Telnet

  • VB.NET
  • .NET (FX) 3.0–3.5

    Firewall-Login via Telnet

    Hallo zusammen,

    ja, ich bin relativ neu im Thema vb.net und habe auch gleich schon eine etwas kompliziertere Frage.
    Ich bin gerade ein Tool zu entwickeln, in dem man sich auf verschiedene "NoMachine-Server" verbinden kann, das funktioniert auch schon soweit. Nur benötige ich - bevor ich mich zu den Servern verbinden kann - eine Firewall-Freischaltung, die auch auch gerne mit in das Programm aufnehmen möchte.

    Bei der Firewall handelt es sich um ein unbekanntes Modell, der Marke "Fortigate". Der Login erfolgt hier per Telnet.
    Der Promt mit (z.B. PuTTY) sieht so aus: (siehe auch Anhang)


    Firewall Authentication required before proceeding with service
    login:



    Nun habe ich auch schon ein bisschen gesucht, und folgenden Quellcode gefunden:

    VB.NET-Quellcode

    1. Imports System.Net.Sockets
    2. Public Class telnetLoginTest
    3. Dim Full_Stop As String = ""
    4. Dim TelnetClient As New TcpClient
    5. Private Sub StartButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles StartButton.Click
    6. TelnetClient.Connect("10.90.70.113", 23) 'Connecting to the IP Given
    7. Send_Sub("Test")
    8. Dim thr As New Threading.Thread(AddressOf Receive_thread)
    9. thr.Start()
    10. End Sub
    11. Private Sub StopButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles StopButton.Click
    12. Full_Stop = "Stop"
    13. TelnetClient.Close()
    14. End Sub
    15. Sub Send_Sub(ByVal msg As String)
    16. Dim byt_to_send() As Byte = System.Text.Encoding.ASCII.GetBytes(msg)
    17. TelnetClient.Client.Send(byt_to_send, 0, byt_to_send.Length, SocketFlags.None)
    18. End Sub
    19. Sub Receive_thread()
    20. re:
    21. If Full_Stop = "Stop" Then Exit Sub 'If you set Full_Stop string to "Stop" the thread will end
    22. If TelnetClient.Client.Available < 0 Then 'Check if there is any Data to receive
    23. Dim byt_to_receive(TelnetClient.Available - 1) As Byte
    24. TelnetClient.Client.Receive(byt_to_receive, 0, byt_to_receive.Length, SocketFlags.None)
    25. Dim String_From_Byte As String = System.Text.Encoding.ASCII.GetString(byt_to_receive)
    26. MsgBox(String_From_Byte)
    27. If String_From_Byte = "login:" Then 'If the telnet asks you to Enter the login name the Send_Sub will do the job
    28. Send_Sub("77885322")
    29. ElseIf String_From_Byte = "password:" Then 'If the telnet asks you to Enter the Password the Send_Sub will do the job
    30. Send_Sub("Hier_das_Passwort")
    31. End If
    32. End If
    33. GoTo re 'this will NOT allow the thread to End by sending it back to re: statement, unless the Full_Stop is "Stop"
    34. End Sub
    35. Private Sub telnetLoginTest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    36. End Sub
    37. End Class


    Leider funktioniert der Login gar nicht, ich habe den Eindruck, dass er die "Schleife" gar nicht nimmt, nachdem man den Start-Button anklickt.
    Hat jemand von Euch damit schon Erfahrungen mit dem Thema und kann mir helfen?

    Danke schon mal!

    VG
    Frank
    Bilder
    • Prompt.PNG

      13,88 kB, 643×227, 150 mal angesehen