Tagebuch Programm mit Eltern-Nix-Lesen-Können-Schutz

    • VB.NET

    Es gibt 32 Antworten in diesem Thema. Der letzte Beitrag () ist von aligator.

      Tagebuch Programm mit Eltern-Nix-Lesen-Können-Schutz

      Hallo.

      Das ist mein erster Sourcecode. Ich stelle mal hier ein Tagebuchprogramm rein. Einmal gespeichert, nie wieder lesbar. Aber natürlich hab ich eine geheime Hintertür eingebaut.

      Stichwort: My.Settings, hier speichern wir den letzen Eintrag im Plaintext ab. Für Eltern: Kein Plan wo das ist: Mit einem kleinem Trick, ist der letze Eintrag wieder sichtbar.

      Also genug gelabert; ran an die Bulleten...

      Schritt 1.

      Wir erstellen eine neue Windows Forms.

      Schritt 2.

      Wir erstellen ein neues Modul, dieses Modul ist dafür da, das alle Tagebucheinträge als Hash (MD5) verschlüsselt gespeichert werden.

      VB.NET-Quellcode

      1. Imports System.Security.Cryptography
      2. Imports System.Text
      3. Module md5
      4. PublicFunction MD5StringHash(ByVal strString AsString) AsString
      5. Dim MD5 AsNew MD5CryptoServiceProvider
      6. Dim Data AsByte()
      7. Dim Result AsByte()
      8. Dim Res AsString = ""
      9. Dim Tmp AsString = ""
      10. Data = Encoding.ASCII.GetBytes(strString)
      11. Result = MD5.ComputeHash(Data)
      12. For i AsInteger = 0 To Result.Length - 1
      13. Tmp = Hex(Result(i))
      14. If Len(Tmp) = 1 Then Tmp = "0" & Tmp
      15. Res += Tmp
      16. Next
      17. Return Res
      18. End Function
      19. End Module


      Schritt 3.

      Wir gestalten die Form.

      Wir brauchen folgendes:

      1x | RichTextBox

      3x | ComboBox

      1x | Button

      Die Form könnte so aussehen:



      Schritt 4:

      Wir machen Doppelklick auf den Button1 und wir sehen nun:

      VB.NET-Quellcode

      1. Public Class Form1
      2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      3. End Sub

      Zwischen

      VB.NET-Quellcode

      1. Private Sub Button1_Click(ByVal sender as System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      und

      VB.NET-Quellcode

      1. End Sub

      schreiben wir:

      VB.NET-Quellcode

      1. Dim diarycode As String
      2. diarycode = MD5StringHash(RichTextBox1.Text & ComboBox1.Text & ComboBox2.Text & ComboBox3.Text)
      3. Dim diaryname As Stringdiaryname = MD5StringHash("Diary from the " & ComboBox1.Text & "." & ComboBox2.Text & "." & ComboBox3.Text)
      4. IO.File.WriteAllText(diaryname, diarycode)
      5. MsgBox("Erfolgreich in Hash gespeichert", MsgBoxStyle.Information, Title:="Success")

      Nun, ich erkläre den Code mal.

      VB.NET-Quellcode

      1. Dim diarycode As String
      Erstellt den String "diarycode".

      VB.NET-Quellcode

      1. diarycode = MD5StringHash(RichTextBox1.Text & ComboBox1.Text & ComboBox2.Text & ComboBox3.Text)
      Setzt den soeben erstellten String diarycode auf einen MD5 Hash. Dieser ist aus
      dem Text von RichTextBox1, ComboBox 1, 2 und 3.

      VB.NET-Quellcode

      1. Dim diaryname As String
      Erstellt den String "diaryname".

      VB.NET-Quellcode

      1. diaryname = MD5StringHash("Diary from the " & ComboBox1.Text & "." & ComboBox2.Text & "." & ComboBox3.Text)
      Setzt den soeben erstellten String diarycode auf einen MD5 Hash. Dieser ist aus

      dem Text ComboBox 1, 2 und 3 + extra Text.

      VB.NET-Quellcode

      1. IO.File.WriteAllText(diaryname, diarycode)
      Schreibt eine Datei mit dem Namen von dem Text von dem String diaryname. Der Inhalt ist der Text von dem String diarycode.

      VB.NET-Quellcode

      1. MsgBox("Erfolgreich in Hash gespeichert", MsgBoxStyle.Information, Title:="Success")
      Gibt eine MessageBox aus.
      Dies ist erstmal das Grundgerüst. Um nun die My.Settings-Speichermethode-Eltern-nix-lesen-können zu verwenden, müssten wir als erstes in der Eigenschaftsseite in der Registerkarte Einstellungen einen Wert hinzufügen. Ich nehme hier jetzt mal "diary". Das muss ein String sein.
      Also jetzt weiter. Wir machen Doppelklick auf die RichTextBox1 und sehen folgendes:

      VB.NET-Quellcode

      1. Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
      2. End Sub

      Zwischen

      VB.NET-Quellcode

      1. Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
      und

      VB.NET-Quellcode

      1. End Sub
      schreiben wir:

      VB.NET-Quellcode

      1. If RichTextBox1.Text = "passwort" Then
      2. RichTextBox1.text = My.Settings.diary
      3. End If

      Passwort muss hier mit einem beliebigen Wert ersetzt werden, den nur
      du kennst!
      Wir machen Doppelklick auf den Button1 und schreiben nach unserem Code

      VB.NET-Quellcode

      1. My.Settings.diary = RichTextBox1.Text

      So. Nun ist der Code fertig.
      Ich hoffe ihr könnt damit was anfangen :)
      Gruß Christopher
      habs jetzt nich getestet, aber mein dad weis schon wo die settings simd.
      besser wärs wenn dus verschlüsseln würdest. dafür gibts ja genügend möglichkeiten...
      :P Mfg Aligator :P

      Pascal J. schrieb:

      Eine Möglichkeit wäre, ein paar verschiedene Verschlüsselungen hintereinander zu reihen.


      Das ist unsicherer als einfach eine normal Verschlüsselung zu nehmen mit einem langen Passwort.
      Suche zB nach Rijndael, da gibts ein Tut auf vbfun
      Für ein Mindestmaß an Rechtschreibung, Interpunktion und Majuskeln!
      wieso, ma könnte beim ersten Start einer Anwendung per Random() Zufallszahlen für Die Verschlüsselungen erstellen, und dann nochmal per Random() die Reihenfolge festlegen, und dann als letztes di Rijndal Verschlüsselung mit einem vom Benutzer festgelegten Passwort.
      Die Zufallszahlen, könnte man dann noch binär abspeichern, und schwupps wäre es nach meiner Ansicht sehr sicher.
      „Ex-ter-mi-nate all knock-knock jokes! They are an enemy of the daleks “ A Dalek
      Mein Blog zum Thema Klarträumen
      ich kenn jetzt SHA51 zwar nicht(nur SHA512 bzw. SHA1), aber aufgrund der anderen beiden Verschlüsselungen meine ich, dass das eine Einwegverschlüsselung ist(ein Hash)...
      dies wäre für ein Tagebuch ziemlich unsinnig, da man das selber ja wieder entschlüsseln(lesen) will?!
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---
      man kann stadt für jedes elment einzehln um an dass datum zu kommen einfach einen Datatimepicker nehmen!

      Binärpasswort!

      Ich würds somachen das man den Binärcode des Passworts eingeben muss somit würde das direkte Passwort das man in des settings finden kann ja nix nützen =) man Kann ja iwo versteckt aufm PC ein Prog speichern das Text in Binär umwandelt =)

      MFG Royal
      Text in Binär? Das wird doch alles schon Binär gespeichert, was sollte dies für einen Sinn ergeben? Meinst du etwas ein eigenes Encoding? Oder etwa die nullen und einsen in eine normale Datei zu schreiben->wow was für ein Speicherverbrauch... pro binärzeichen genau 255 Byte dies ergibt 2040 Bit warum 2040 Bit für einen Bit verbrauchen?...xD Einfach den Text verschlüsseln, alles andere ist nicht wirklich sicher...
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---
      Was ich meinte das das Programm nur die Binärcodeversion des Passworts erkennen sollte womit das normale Passwort in den Settings nix nützt da das Programm guckt ob die Binärversion des Passworts in der Textbox korekt ist und das originale My.Settings Passwort nicht erlaubt solang es nicht als Binärcode eingegeben wird.

      Myrax schrieb:

      Stichwort: My.Settings, hier speichern wir den letzen Eintrag im Plaintext ab. Für Eltern: Kein Plan wo das ist

      *schlapplach* besonders darüber dass wir Eltern von nix ne Ahnung haben ;)

      Vorschlag für Namensgebung: Write-Only-Diary , erinnert mich irgendwie an das Write-Only-Memory

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

      Was ist mit einen Localen SQL Server, der kan doch verschlüßert werden oder nicht???