Multiserver (TCP)

    • VB.NET

    Es gibt 854 Antworten in diesem Thema. Der letzte Beitrag () ist von ClonkAndre.

      Ordentliche Verschlüsselung

      Soweit so gut... nur wie bekomme ich z.B die Zeile 5 der ListBox in eine Textbox oder sogar alles in eine RichTextbox??

      Schau Dir mal das .AppendText der RichTextBox an. ;)

      Hätte vielleicht jemand eine Idee oder zumindest einen Denkanstoß, das "Protokoll" effektiv zu verschlüsseln, sodass man die Verbindung nicht einfach sniffen kann, um seinen eigenen Client zu bauen?

      Netto
      bei meinem clienten ist das nicht drin mit der verschlüsselung ts2 & 3 haben im telnet keine verschlüsselung... ssh oder so nicht möglich...

      nur wenn ich mir die eigenschaften der richtextbox ansehe kann ich beim besten willen deinem gedanken stoß nicht folgen...

      nur wenn ich mir die eigenschaften der richtextbox ansehe kann ich beim besten willen deinem gedanken stoß nicht folgen...

      Also so könnte man jede neue Nachricht zur RTB hinzufügen, anstatt zur ListBox:

      VB.NET-Quellcode

      1. Dim empfangeneNachricht As String = "Die empfangene Nachricht"
      2. RichTextBox.HideSelection = False 'Damit...
      3. RichTextBox.AppendText(empfangeneNachricht & vbNewLine)
      4. RichTextBox.ScrollToCaret() '...wir hier zum Caret scrollen können.


      Dass es da keine richtige Verschlüsselungsmöglichkeit gibt, ist echt dumm... Da muss sich doch was machen lassen. Denn wenn Toyota sagt, dass nichts unmöglich ist, dann glaub ich das auch. :D

      Gruß,
      Netto
      Hi
      Ich bastele aus Spaß gerade etwas an einem Client Server Konstrukt. Auf jeden Fall versuche ich gerade die Funktion den Server neuzustarten einzubauen. Stoppen klappt schon ganz gut. Allerdings wenn ich den Server Neustarte kommt folgender Fehler:

      Normalerweise darf jede Socketadresse (Protokoll, Netzwerkadresse oder Anschluss) nur jeweils einmal verwendet werden
      Der Fehler tritt auf wenn ich

      VB.NET-Quellcode

      1. server.start

      ausführe.

      Weiß jemand wie ich das beheben kann.

      Mfg
      Firestorm

      Netto Hikari schrieb:


      nur wenn ich mir die eigenschaften der richtextbox ansehe kann ich beim besten willen deinem gedanken stoß nicht folgen...

      Also so könnte man jede neue Nachricht zur RTB hinzufügen, anstatt zur ListBox:

      VB.NET-Quellcode

      1. Dim empfangeneNachricht As String = "Die empfangene Nachricht"
      2. RichTextBox.HideSelection = False 'Damit...
      3. RichTextBox.AppendText(empfangeneNachricht & vbNewLine)
      4. RichTextBox.ScrollToCaret() '...wir hier zum Caret scrollen können.


      Dass es da keine richtige Verschlüsselungsmöglichkeit gibt, ist echt dumm... Da muss sich doch was machen lassen. Denn wenn Toyota sagt, dass nichts unmöglich ist, dann glaub ich das auch. :D

      Gruß,
      Netto

      Heyho,

      eine Möglichkeit währe es eine Art "Protokoll" alá Knuddels zu machen:

      Im Client (AddItem):

      VB.NET-Quellcode

      1. Dim lol As String() = s.Split(New Char() {"§"c})
      2. Select Case lol(0)
      3. Case "s"
      4. RichTextBox1.SelectionFont = New Font(RichTextBox1.Font, FontStyle.Bold)
      5. RichTextBox1.SelectionColor = RichTextBox1.ForeColor
      6. RichTextBox1.AppendText(lol(1) & ": ")
      7. RichTextBox1.SelectionFont = New Font(RichTextBox1.Font, FontStyle.Regular)
      8. RichTextBox1.AppendText(lol(2) & vbCrLf)
      9. End Select


      Der Server sendet:

      VB.NET-Quellcode

      1. SendToAllClients("s§" & con.nick & "§" & tmp)

      Also:
      s§Nickname§Text

      Es kommt raus:
      Nickname: Text

      Wenn man beim Schreiben dann noch das "§"-Zeichen ersetzt, kann man über den Chat soetwas wie "Bot (privat): Wow, Nickname ist cool!" machen.

      MfG
      eine Möglichkeit währe es eine Art "Protokoll" alá Knuddels zu machen

      Hi! :)

      Jo, was ich da geschrieben habe, war nur ein kleines Beispiel. Ich selbst verwende Syntax Highlighting, usw. auch, aber er wollte ja nur wissen, wie man etwas zur RTB hinzufügt. Danke aber trotzdem. :P

      Hier mal ein Teil des Raumfensters von meinem EverBaduk Brettspielserver-Client "iPlayGo"... lol.


      Sayonara.

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

      Netto Hikari schrieb:

      eine Möglichkeit währe es eine Art "Protokoll" alá Knuddels zu machen

      Hi! :)

      Jo, was ich da geschrieben habe, war nur ein kleines Beispiel. Ich selbst verwende Syntax Highlighting, usw. auch, aber er wollte ja nur wissen, wie man etwas zur RTB hinzufügt. Danke aber trotzdem. :P

      Hier mal ein Teil des Raumfensters von meinem EverBaduk Brettspielserver-Client "iPlayGo"... lol.


      Sayonara.

      Mein Beitrag war auch eigentlich mehr eine Antwort auf:

      Netto Hikari schrieb:


      Dass es da keine richtige Verschlüsselungsmöglichkeit gibt, ist echt dumm... Da muss sich doch was machen lassen. Denn wenn Toyota sagt, dass nichts unmöglich ist, dann glaub ich das auch. :D
      Mein Beitrag war auch eigentlich mehr eine Antwort auf:

      Argh, wie peinlich. ^^ Joa, manchmal bin ich echt total schwer von Kapie in letzter Zeit. Sorry. >< Naja, bei mir sieht ein Befehl so aus: "/chat|username|color|message", 3 Mal darfst Du raten, wo ich da splitte. :P Das hindert einen ja noch immer nicht daran, einen Sniffer dazwischen zu tun, sich das alles zu notieren und einen Client nachzubauen.

      Gruß,
      Netto

      Netto Hikari schrieb:

      Mein Beitrag war auch eigentlich mehr eine Antwort auf:

      Argh, wie peinlich. ^^ Joa, manchmal bin ich echt total schwer von Kapie in letzter Zeit. Sorry. >< Naja, bei mir sieht ein Befehl so aus: "/chat|username|color|message", 3 Mal darfst Du raten, wo ich da splitte. :P Das hindert einen ja noch immer nicht daran, einen Sniffer dazwischen zu tun, sich das alles zu notieren und einen Client nachzubauen.

      Gruß,
      Netto

      Klar hindern tut es keinen, es erschwert es nur ein bisschen.

      Netto Hikari schrieb:

      VB.NET-Quellcode

      1. Dim empfangeneNachricht As String = "Die empfangene Nachricht"
      2. RichTextBox.HideSelection = False 'Damit...
      3. RichTextBox.AppendText(empfangeneNachricht & vbNewLine)
      4. RichTextBox.ScrollToCaret() '...wir hier zum Caret scrollen können.

      nach langem probieren bekomme ich es einfach nicht hin...
      Hy, bin zwar neu hier, aber mir gefällt das Tutorial und ich hätte aber eine einfache Methode zum Ver- und Entschlüsseln. Ist zwar nicht unknackbar, macht das ganze aber schwerer :)

      VB.NET-Quellcode

      1. Imports Microsoft.VisualBasic
      2. Imports System.Security.Cryptography
      3. Imports System.IO
      4. Imports System.Text
      5. Public Class Passwort
      6. Public Shared Function verschlüsseln(ByVal input As String) As String
      7. Dim rd As New RijndaelManaged
      8. If input = Nothing Or input = "" Then
      9. Return "Keine Eingabe getätigt"
      10. Exit Function
      11. End If
      12. Dim md5 As New MD5CryptoServiceProvider
      13. Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes("Verschlüsselungskey"))
      14. md5.Clear()
      15. rd.Key = key
      16. rd.GenerateIV()
      17. Dim iv() As Byte = rd.IV
      18. Dim ms As New MemoryStream
      19. ms.Write(iv, 0, iv.Length)
      20. Dim cs As New CryptoStream(ms, rd.CreateEncryptor, CryptoStreamMode.Write)
      21. Dim data() As Byte = System.Text.Encoding.UTF8.GetBytes(input)
      22. cs.Write(data, 0, data.Length)
      23. cs.FlushFinalBlock()
      24. Dim encdata() As Byte = ms.ToArray()
      25. Return Convert.ToBase64String(encdata)
      26. cs.Close()
      27. rd.Clear()
      28. End Function
      29. Public Shared Function entschlüsseln(ByVal input As String) As String
      30. Dim inpt() As String = input.Split(": ")
      31. input = inpt(1)
      32. If input = Nothing Or input = "" Then
      33. Return "Keine Eingabe getätigt"
      34. Exit Function
      35. End If
      36. Dim rd As New RijndaelManaged
      37. Dim rijndaelIvLength As Integer = 16
      38. Dim md5 As New MD5CryptoServiceProvider
      39. Dim key() As Byte = md5.ComputeHash(Encoding.UTF8.GetBytes("Verschlüsselungskey"))
      40. md5.Clear()
      41. Dim encdata() As Byte = Convert.FromBase64String(input)
      42. Dim ms As New MemoryStream(encdata)
      43. Dim iv(15) As Byte
      44. ms.Read(iv, 0, rijndaelIvLength)
      45. rd.IV = iv
      46. rd.Key = key
      47. Dim cs As New CryptoStream(ms, rd.CreateDecryptor, CryptoStreamMode.Read)
      48. Dim data(ms.Length - rijndaelIvLength) As Byte
      49. Dim i As Integer = cs.Read(data, 0, data.Length)
      50. Return (inpt(0) & ": " & System.Text.Encoding.UTF8.GetString(data, 0, i))
      51. cs.Close()
      52. rd.Clear()
      53. End Function
      54. End Class


      Die beiden Verschlüsselungskeys müssen gleich sein damit alles funktioniert. Das einbinden in den Chat überlasse ich euch selbst. :)

      Btw. Großartiges Tutorial
      Mfg
      SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

      Weil einfach, einfach zu einfach ist! :D

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „BiedermannS“ () aus folgendem Grund: Beim Entschlüsseln des Streams, tritt ein Fehler auf, da der Nickname mit übergeben wird. (wurde behoben)

      aber es funktioniert und lässt sich gut für einen Chat im Lan einsetzen. :)

      wenn jemand eine besser Methode kennt um etwas zu verschlüsseln und auch wieder zu entschlüsseln, würde ich die gerne sehen. Ich such schon seit längerer zeit eine sichere verschlüsselungsmethode, die man allerdings auch wieder entschlüsseln kann.

      Mfg
      SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=

      Weil einfach, einfach zu einfach ist! :D
      man kann jede Verschlüsselung entschlüsseln, sonst ist es ein Hash Algorithmus...
      wenn du eine sichere Verschlüsselung willst, dann mach selbst eine(nat. + Chiffre) und verbinde diese Verschlüsselung mit Rijndael...Rijndael an sich ist ja auch schon sehr sicher und dann noch etwas unbekanntes->Super...ich schätze, dass sowieso niemand deine Sachen knacken will, reicht das sicher aus ;)
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---
      Zu BiedermannS Methode:
      Wenn ein Cryptostream schon genutzt wird, dann doch nicht immer einen neuen erstellen für jede Botschaft.
      Hier haben wir doch schon einen NetworkSTREAM zur Datenübertragung.

      Also am besten diesen direkt verschlüsseln:

      VB.NET-Quellcode

      1. Dim cs As New CryptoStream(NETWORKSTREAM, rd.CreateEncryptor, CryptoStreamMode.Write)


      Dann kann man eine verschlüsselte Nachricht direkt mit einem "new Streamreader(cs)" (oder dem entsprechenden Streamwriter) lesen (und schreiben).
      Somit wird währen der gesamten Serverlaufzeit nur einmal pro Client - und nicht pro Nachricht - ein solcher Cryptostream erstellt.

      ShadowWarlock schrieb:

      nach langem probieren bekomme ich es einfach nicht hin...

      Wo liegt dein Problem denn genau? Wenn ich das richtig verstanden habe, dann willst du die empfangenen Nachrichten in eine RichTextBox auflisten, anstatt in einer ListView. Dann musst du einfach jede empfangene Nachricht an den Text, der sich bereits in der RichTextBox befindet anhängen und danach sagen, dass ein Zeilenumbruch eingefügt werden soll. Hier nochmal die Erklärung:

      VB.NET-Quellcode

      1. Dim empfangeneNachricht As String = "Die empfangene Nachricht" 'Sagen wir, du hast die Nachricht, die dein Client empfangen hat, in dieser Variable gespeichert.
      2. deineRichTextBox.AppendText(empfangeneNachricht & vbNewLine) 'Danach benutzt du die "AppendText" Methode der RichTextBox, um die empfangene Nachricht an den bereits bestehenden Text anzuhängen zusammen mit einem "vbNewLine", welches ein Zeilenumbruch erzeugen wird.

      Das mit HideSelection und ScrollToCaret war, damit die RichTextBox automatisch scrollt, aber das habe ich hier zur Verdeutlichung nochmal rausgelassen.

      Ich hoffe, du verstehst das. Liebe Grüße,
      Netto