FTP Login mit einem TCP Chat verbinden

  • VB.NET

Es gibt 36 Antworten in diesem Thema. Der letzte Beitrag () ist von Solaris.

    FTP Login mit einem TCP Chat verbinden

    Hallo Leute,

    geht das überhaupt einen FTP Login und einem TCP Chat zu verbinden sodass die Programm beide Protokolle hat und wenn dann wie? Ich habe schon ein TCP Chat programmiert und einen FTP Login davor, zur Anmeldung davor geschaltet.

    Mfg
    Wie man mich kontaktieren kann:
    thiemo-melhorn.de
    Das macht keinen Sinn, FTP ist ein auf TCP basierendes Protokoll für den Dateiaustausch, nicht mehr und hat in Chats überhaupt nichts zu suchen, zumal es total unsicher ist und überhaupt nicht mehr verwendet werden sollte.

    Wenn Du einen Chat hast, hat FTP darin nichts verloren, Kommunikation passiert dann allein über TCP, da dieses dafür geeignet ist, jegliche Datenpakete zu versenden.
    Zudem ist eine Kombination weder sinnvoll, noch wirklich umsetzbar oder wie stellst Du Dir das denn vor?

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Thiemo1991 schrieb:

    Ich verwende nur FTP für den Login


    Das verstehe ich nicht!
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Thiemo1991 schrieb:

    Ich verwende nur FTP für den Login
    Anders gesagt gibst du alle Welt die FTP Daten deines Server Preis auf dem Geregelt wird, ob sich jemand einloggen darf oder nicht? Viel spaß mit deinem neuen "Warez" Server.

    Und nu mal rein theoretisch. Liefe dann auf dem FTP Server ein Programm das ständig die Datei pollt, ob etwas Neues drin steht, und versucht Das dann zu deuten?

    Das ist doch per TCP/UDP viel einfacher!

    FTP ist und bleibt eine Todsünde, sobald es zu einer "kommunikation" jeglicher Art kommt! Es lädt Dateien auf einen Server und BASTA.
    Keine Kommunikation, keine Datenhaltung, und schon gar kein Login. Benutzt Protokolle bitte nur für das, wofür sie da sind, und nichts anderes!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „EaranMaleasi“ ()

    Der Benutzer loggt sich nicht über TCP in mein Chatprogramm ein sondern über FTP. Wie mache ich das denn dann über UDP? Ich möchte nämlich dass der User einen Benutzernamen und ein Passwort eingeben kann und deshalb habe ich auch dann dafür FTP genutzt.
    Wie man mich kontaktieren kann:
    thiemo-melhorn.de

    Thiemo1991 schrieb:

    über UDP
    Wie TCP, nur dass du dich selbst darum kümmern musst, dass Pakete in der Richtigen Reihenfolge sind, unbeschadet sind, und das alle angekommen sind.
    Wäre blöd wenn aus dem Usernamen HansWurscht ein HnsaWust wird.

    Und per TCP machst du es genau so wie mit dem Chat. Du holst dir die Daten des Users über ne Form, schickst sie wie auch immer durchs Netz, und wertest diese beim Server aus.

    ThuCommix schrieb:

    oder Udp.

    Jo, je nachdem, ob er sicherstellen will, dass alles fehlerfrei abläuft, oder nicht, TCP ist da imho die bessere Lösung, aber muss er wissen. ^^

    @Thiemo1991 Sicherheitsrisiken bei der Verwendung von Ftp und Datenbanken
    Ich würde Dir jedoch raten, was ich Dir schon oft geraten habe, lass es doch bitte erstmal sein und befasse Dich erstmal mit grundlegenden Sachen, die Dir immer noch total fehlen. Das ist nichts schlimmes, aber wohl oder übel kommst Du so nicht weiter und endest dann eben mit sowas.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Wie kann ich einen Usernamen und ein Passwort bei TCP erzwingen? Das mit dem Passwort bekomme ich zwar dann hin aber das mit dem Usernamen nicht wirklich.
    Wie man mich kontaktieren kann:
    thiemo-melhorn.de
    Statt auf ein Passwort eingeben zu lassen und dieses am Server zu verifizieren, lässt du halt Benutzername und Passwort eingeben und verifizierst am Server, ob die Kombination aus beiden korrekt ist.

    Allerdings muss ich @Trade zustimmen.

    @radio-ffk das ist Blödsinn. Sicherheitsmechanismen sollten zu keinem Zeitpunkt von der UI abhängig sein. Sowas zu umgehen ist für jeden halbwegs fortgeschrittenen Hacker gar kein Problem.
    Das hängt ganz davon ab, wie du es implementieren willst. Sende halt die Kombi von Benutzername und Passwort, letzteres gehashed, vom Client zum Server, wo du die Daten in irgendeiner Form hinterlegt hast. Zum testen reichen erstmal hardcoded Values oder eine Textdatei, später kann man für sowas ein DBMS nehmen.


    Zeig am besten einfach mal deinen bisherigen Code.
    Vom FTP Login:

    VB.NET-Quellcode

    1. ​Public Class Form1
    2. Dim wc As New Net.WebClient
    3. Private Sub TextBox2_KeyUp(sender As Object, e As KeyEventArgs) Handles TextBox2.KeyUp
    4. If e.KeyCode = Keys.Enter Then
    5. If TextBox1.Text = TextBox1.Text And TextBox2.Text = TextBox2.Text Then
    6. wc.Credentials = New Net.NetworkCredential("FTP Benutzername", "FTP Passwort")
    7. wc.UploadString("ftp://ftp.myserver.tv/Benutzernamen.txt", vbCrLf & TextBox1.Text)
    8. wc.UploadString("ftp://ftp.myserver.tv/Kennwort.txt", vbCrLf & TextBox2.Text)
    9. Form2.Show()
    10. Me.Hide()
    11. End If
    12. If TextBox1.Text = "" And TextBox2.Text = "" Then
    13. Form2.Show()
    14. Me.Hide()
    15. End If
    16. End If
    17. End Sub
    18. End Class


    Vom TCP Chat

    VB.NET-Quellcode

    1. ​Imports System.Net.Sockets
    2. Imports System.Threading
    3. Imports System.IO
    4. Public Class Form2
    5. Dim listener As New TcpListener(800)
    6. Dim client As New TcpClient
    7. Dim nachricht As String
    8. Dim listthread As New Thread(New ThreadStart(AddressOf listening))
    9. Dim writer As New StreamWriter(client.GetStream)
    10. Dim reader As New StreamReader(client.GetStream)
    11. Private Sub listening()
    12. listener.Start()
    13. End Sub
    14. Private Sub Form2_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
    15. listener.Stop()
    16. Me.Hide()
    17. Form1.Show()
    18. End Sub
    19. Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    20. listener.Start()
    21. listthread.Start()
    22. End Sub
    23. Private Sub txtSenden_KeyUp(sender As Object, e As KeyEventArgs) Handles txtSenden.KeyUp
    24. If e.KeyCode = Keys.End Then
    25. If txtSenden.Text = "" Then
    26. MsgBox("Bitte gebe einen Text ein bevor du sendest.", MsgBoxStyle.Exclamation, "Fehler beim senden")
    27. Else
    28. Try
    29. client = New TcpClient(Form1.TextBox1.Text, 800)
    30. writer.Write(txtSenden.Text)
    31. rtbEmpfänger.AppendText(Format(Now, "(hh.DD | hh:mm:ss)") & "Du: " & txtSenden.Text)
    32. txtSenden.Clear()
    33. writer.Flush()
    34. Catch ex As Exception
    35. MsgBox("Es gab einen Fehler.")
    36. End Try
    37. End If
    38. End If
    39. End Sub
    40. Private Sub tmrlistener_Tick(sender As Object, e As EventArgs) Handles tmrlistener.Tick
    41. If listener.Pending = True Then
    42. nachricht = ""
    43. client = listener.AcceptTcpClient
    44. While reader.Peek > -1
    45. nachricht = nachricht + Convert.ToChar(reader.Read()).ToString
    46. End While
    47. rtbEmpfänger.AppendText(Format(Now, "(hh.DD | hh:mm:ss)") & "Er/Sie: " & nachricht)
    48. End If
    49. End Sub
    50. End Class
    Wie man mich kontaktieren kann:
    thiemo-melhorn.de
    @Thiemo1991 Nochmal: FTP Login mit einem TCP Chat verbinden
    @enba Daten bereits gehashed vom Client zum Server zu senden und diese Hashes dann abzugleichen, ist keine gute Idee, somit kann man bei der Verbindung den Hash abgreifen und damit direkt etwas anstellen, man braucht nicht mal mehr das Passwort, also das muss der Server machen. Wenn man allerdings in Erwägung zieht, doppelt zu hashen, um es nicht plain zu übertragen, weil das ist ja ebenso dann leicht aushebelbar, dann ist das nat. vollkommen in Ordnung, auch wenn's nicht 100%ige Sicherheit verspricht. ;) Abgesicherte Verbindungen wären da halt echt ne Sache, je nachdem, welches Protokoll dafür benutzt wird, geht's oder auch nicht.

    Hashen btw am Besten mit SHA256, gesalzen und gepfeffert, falls vllt. über MD5 nachgedacht wird, oder so. :P

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Du nutzt die Strukturen des System.Net-Namespace ja auch völlig falsch.

    Ich weiß gerade nicht wirklich, wo ich anfangen soll. Also, anscheinend willst du eine P2P-Verbindung aufbauen. Nimm dafür zuallererst einmal den Timer raus und nutze am besten die Begin/EndAcceptTcpClient-Konstrukte oder ab FW4.5 AcceptTcpClientAsync. Nutze den hier ankommenden TcpClient dann für die Kommunikation mit dem Gegenüber, indem du in den Stream schreibst bzw. liest, den dir TcpClient.GetStream() bereitstellt. Du solltest _nicht_ bei jedem Senden/Empfangen-Vorgang einen neuen TcpClient erstellen. Hol ihn dir per Accept und verwende ihn dann so lange, bis die Verbindung (z.B. durch schließen des Programmes) unterbrochen wird.

    Guck dir am besten nochmal das MultiServer-Tutorial hier im Forum an, lade dir die Solution, gehe mit dem Debugger jede Zeile durch und versuche zu verstehen, was dort passiert - denn das tust du momentan noch nicht.

    Edit: @Trade hat natürlich absolut recht und ich nicht nachgedacht ;)

    enba schrieb:

    das ist Blödsinn. Sicherheitsmechanismen sollten zu keinem Zeitpunkt von der UI abhängig sein. Sowas zu umgehen ist für jeden halbwegs fortgeschrittenen Hacker gar kein Problem.


    @enba Ich hab mich verlesen, sorry ^^ . Ich machs ja selber auch über den Server. Selbst wenn der Hacker es schafft das Chatfenster aufzurufen, so wären die Sicherheitsmechanismen zu keinem Zeitpunkt von der UI abhängig da er ja immer noch nicht angemeldet wäre.
    Könntet ihr mir dazu ein Video oder nur ein Bespiel machen? Ich weis nämlich nicht wie ich es sonst lernen soll, weil ich das ganzen Fachausdrücke nicht kann.
    Wie man mich kontaktieren kann:
    thiemo-melhorn.de