PasswordList v2.2

    • Release
    • Open Source

    Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von Niko Ortner.

      PasswordList v2.2

      Name:
      PasswordList v2.2

      Kurze Beschreibung:
      Das Programm speichert Passwörter, damit man sie nicht vergisst.
      Die Passwörter werden mit einem Master-Passwort verschlüsselt, welches man sich merken muss. Deshalb "Safe". (Nach einem Hinweis von Marcus in Post #9 habe ich das Programm umbenannt. Es hieß früher "PasswordSafe".)

      Screenshots:


      Ausführliche Beschreibung:
      Das Programm führt eine Liste von Passwörtern und Hinweisen, wo diese verwendet werden. Die Passwörter werden mit dem Master-Passwort verschlüsselt. Dieses muss beim Programmstart (oder beim Klick auf "Laden") und beim Speichern angegeben werden.
      Beim ersten Programmstart muss das Master-Passwort nicht eingegeben werden, weil es noch keine gespeicherten Passwörter gibt.
      Mit einem Klick auf das Passwort wird dieses in die Zwischenablage kopiert.
      Passwörter können mit unterschiedlichen Zeichengruppen und Längen generiert oder von Hand eingetippt werden.

      Details zum Wie und Wo:
      Passwörter werden unter %AppData%\Local\PasswordSafe\Passwords.xml gespeichert. Jeder Eintrag hat ein Password, UserName und Description Attribut. Password steht für das Passwort, welches vom Programm immer mit Sternchen (*) maskiert wird. Description steht für den Klartext, der erklären soll, wo das Passwort verwendet wird. UserName beinhaltet einen Benutzername, zu dem das Passwort gehört. Alle Texte werden wie folgt behandelt, bevor sie in die Datei geschrieben werden:
      • Encoding.GetBytes mit UTF8-Encoding ohne BOM.
      • 2.0:
        Die Daten werden auf das nächste oder übernächste (zufällig, 50% Wahrscheinlichkeit) vielfache von 64 (512 ab 2.2) Bytes erweitert. Die ersten 4 Bytes des resultierenden Byte-Arrays geben an, wie viele Bytes angehängt wurden.
        Beispiel: Das Passwort "123456" ergibt die Bytes {49, 50, 51, 52, 53, 54}. Zufällig wird ausgewählt, ob 64 - 6 = 58 oder 128 - 6 = 122 zufällige Bytes angehängt werden (sagen wir mal 58). Die zufälligen Bytes sind hier zur Veranschaulichung aufsteigend von 1 gewählt. Voran steht die Anzahl an angehängten Bytes. {0, 0, 0, 58, 49, 50, 51, 52, 53, 54, 1, 2, 3, 4, ..., 56, 57, 58}
        1.0 und 1.1:
        Vorne und hinten werden zufällige Bytes zufälliger Länge angehängt, damit von den verschlüsselten Daten nicht auf die Länge des Passwortes geschlossen werden kann. Die ersten 8 Bytes geben die Längen der zufälligen Daten an.
      • Mit AES256 (CBC) verschlüsselt. Dazu wird aus einem mithilfe von RNGCryptoServiceProvider zufällig erstellten Salt (welcher ebenfalls in der Xml-Datei gespeichert wird) und dem Passwort mit Rfc2898DeriveBytes ein Schlüssel und IV errechnet. Das Padding ist PKCS7.
      • Convert.ToBase64String
      Das Programm hält die Passwörter in Strings. Das könnte unter Umständen ein Problem sein, aber wie das die Sicherheit in der Praxis beeinträchtigt, kann ich nicht genau sagen. Ich vermute, dass sich der Aufwand nicht lohnt, mit SecureString zu hantieren. Vorallem, weil beim Kopieren in die Zwischenablage sowieso wieder ein String draus gemacht werden muss.
      Seit Version 2.0 werden Dateien älterer Versionen mit der Methode eingelesen, die durch die Versionsangabe in der Passwords.xml-Datei angegeben ist, aber anschließend mit der neuesten gespeichert.

      Verwendete Programmiersprache und IDE:
      Visual Basic .NET (Visual Basic 2010 Express)

      Systemanforderungen:
      .Net Framework 4.0

      Systemveränderungen:
      Ein Ordner wird unter %AppData%\Local erstellt und darin wird eine Datei mit dem Namen Passwords.xml erstellt.

      Download:
      Ausführbar:
      PasswordList v2.2 Assembly.zip (96 kiB gepackt, 171 kiB entpackt)
      VB-Projekt:
      PasswordList v2.2 Source.zip (45 kiB gepackt, 169 kiB entpackt)

      Lizenz/Weitergabe:
      Das Programm darf beliebig weitergegeben werden, solange dafür kein Geld verlangt wird.
      Einkompilieren erlaubt (Erwähnung wäre nett).
      Dekompilieren erlaubt, ich beantworte Fragen zum Code wie immer auch gerne selbst ;)
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils

      Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Niko Ortner“ ()

      An sich eine nette "Idee".

      Nur scheint mir das ganze ein wenig lieblos dahin geklatscht.
      1. Wenn ich mehr als X Einträge(Passwörter) habe, überlappen die Button am unteren Rand die Einträge und die Passwörter werden somit unerreichbar(Scrollbar wäre gut)
      2. Was ist, wenn es mehrere Benutzer an einem Rechner gibt? Sollen diese die gleiche "Datenbank" benutzen? :)

      Falls du das Programm geschrieben hast, weil du es dringend gebraucht hast, kann ich dir KeePass empfehlen ;)

      Hoffe, du führst das ganze weiter :)

      LG Reeker
      Das Design ist in der Tat nicht so dolle. Tut aber was es soll.
      Ich weiß nicht mehr von wem, aber hier gabs mal nen richtig guten PW-Manger.
      Suche ich nachher mal raus.

      Grüße
      "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

      Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
      @Nikx Von MaxXor war der, den nutze ich aktiv noch, der User ist aber nicht mehr registriert, wie es aussieht. ;)

      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 :!:
      @GimpTutWorks
      Jo, ich bin kein guter Designer. Wie Nikx erwähnt hat: Es tut was es soll.
      Zu Punkt 1: Das ist mir noch garnicht aufgefallen. Ich hab ein ItemsControl (anstelle einer ListBox) verwendet, weil ich die Auswahl-Funktion nicht brauche. Hab jetzt einen ScrollViewer drumherum gepackt.
      Punkt 2: Jeder Benutzer auf dem Computer hat eine eigene Liste. Das liegt am Speicherort der Xml-Datei. Der ist zum Beispiel bei mir C:\Users\Niko\AppData\Local\PasswordSafe\Passwords.xml (also unter SpecialFolder.LocalApplicationData). Bei anderen Benutzern steht ein anderer Name im Pfad.

      KeePass kenne ich, aber ich wollte was ganz einfaches. Ich habe nämlich Verwandschaft, die erhebliche Schwierigkeiten hat, sich Passwörter zu merken, und mit Computern... sagen wir "nicht sehr bewandert ist".
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      Gestern kam mir die Idee, meinen etwas in die Jahre gekommenen Passwort Manager etwas aufzufrischen...
      Hast dir ja ziemliche Mühe gegeben, dass es kompliziert ist mit dem Entschlüsseln (mit Passwort), aber du hast ROT13 (oder ROT26, wäre doppelt so sicher) vergessen :D

      Sonst finde ich immer noch ganz schön, wenn jedem Passwort ein Benutzername, eine Website und eine E-Mail Adresse zugewiesen ist. Dann fehlen noch spezielle Einträge wie Kreditkarte usw.
      Und ich finde einen TreeView immer ganz hübsch, welcher dann Kategorien enthält:


      (KeePass finde ich einfach nur hässlich, abgesehen davon, dass ich keinem Programm meine ganzen Passwörter anvertraue, welches ich nicht selber untersucht habe)
      Mfg
      Vincent

      Niko Ortner schrieb:

      Punkt 2: Jeder Benutzer auf dem Computer hat eine eigene Liste. [...]

      Was ist aber, wenn es mehrer Benutzer mit dem gleichen Benutzer Account gibt? :)
      Anders gesagt, wäre gut, wenn es einen Filebrowser gäbe(Grob gesagt)

      Und des mit dem "ich bin kein guter Designer" ist nur ne Ausrede, oder? Des kauf ich dir nicht ab :D
      @GimpTutWorks
      Ok, ich verstehe was Du meinst. Wenn das bei Dir (oder jemand anderem) der Fall ist, dann bau ich das noch ein.

      Und ja, ich bin kein guter Designer. Ich baue meine Programme immer so, dass sie für mich gut funktionieren und das tun, was ich will.
      Auf Optik leg ich nur dann wirklich Wert, wenn ich das Programm veröffentliche oder wenn es zweckmäßig ist, dass es ordentlich aussieht.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      @Marcus Gräfe
      Danke für den Hinweis. Werde ich machen.

      Hat jemand eine Idee für einen Namen?
      PasswordList vielleicht?
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils

      VincentTB schrieb:



      (KeePass finde ich einfach nur hässlich, abgesehen davon, dass ich keinem Programm meine ganzen Passwörter anvertraue, welches ich nicht selber untersucht habe)


      Dann schauvdir Sources doch an. Ist C#
      Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.

      Niko Ortner schrieb:

      Auf Optik leg ich nur dann wirklich Wert, wenn ich das Programm veröffentliche


      Hast du das nicht mit dem erstellen dieses Threads öffentlich gemacht? :)
      Dann hättest du es eigentlich in den Sourcecode Austausch packen können
      Update 2.0:
      Hab's jetzt umbenannt auf PasswordList.

      Eine mögliche Sicherheitslücke behoben:

      Bei AES (und bei den meisten Verschlüsselungen generell) sind die Daten, die am Ende herauskommen, gleich lang, wie die Daten, die man hineinschmeißt (bis auf das Padding, aber das kann man ja problemlos entfernen). Das ist besonders bei Passwörtern problematisch, denn für einen Angreifer ist es sehr hilfreich, zu wissen, wie lang das Passwort genau ist.
      Bis Version 1.1 wurde den Bytes vor dem Verschlüsseln vorne und hinten je 20 bis 80 (also 40 bis 160) zufällige Bytes angehängt. Das Problem dabei ist: wenn man ein sehr kurzes Passwort hat und wenig Bytes angehängt werden, kann man die mögliche Länge des Passwortes bereits weit einschränken.
      Beispiel:
      Die verschlüsselten Daten sind 50 Bytes lang. Davon sind 8 die Größenangaben der hinzugefügten Bytes, also bleiben noch 42. Da mindestens 40 zufällige Bytes hinzugefügt werden, gibt es nur noch 3 2 Möglichkeiten:
      40 zufällige Bytes: Das Passwort ist 2 Bytes und damit wahrscheinlich 2 Zeichen lang.
      41 zufällige Bytes: Das Passwort ist 1 Byte / 1 Zeichen lang.
      42 zufällige Bytes: Das Passwort ist leer, aber das wird vom Programm nicht zugelassen, also kann das nie passieren.

      In der neuen Version werden die Daten immer auf ein Vielfaches von 64 Bytes (+ 4 Bytes für die Anzahl an hinzugefügten Bytes) erweitert. Dadurch kann man das Passwort nie genauer als 64 Zeichen eingrenzen.
      Weil die meisten Passwörter kürzer als 64 Zeichen sein werden, hab ich noch eingebaut, dass in 50% der Fälle auf das übernächste Vielfache von 64 erweitert wird. Dadurch sind Passwörter < 64 Zeichen nicht mehr so leicht von Passwörtern >= 64 Zeichen zu unterscheiden.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      @Niko Ortner,
      Warum machst du es so kompliziert? Hash das Master PW (Stichwort Sha-256) und verschlüsseln anhand diesem.
      Das sollte eigentlich nicht die Möglichkeit geben auf die PW länge zu "Schätzen"

      LG Ruerte
      Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
      has not granted the respective music rights. Sorry about that.

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Ruerte“ ()

      @Ruerte
      Ziel ist es nicht, die Länge des Master-Passwortes zu verschleiern, sondern die Längen der gespeicherten Passwörter.
      Nachdem verschlüsselt wurde kann man sowieso nicht mehr auf die Länge des Passwortes schließen, denn eine moderne Verschlüsselung (insbesondere die hier verwendete) verwendet einen Schlüssel fester Größe (in diesem Fall 256 Bits).
      Dafür ist auch Rfc2898DeriveBytes da.
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      Und diese XML wird nicht zufällig versendet and dich? Nein Spaß!
      Ist ein nettes Programm, bin ja selbst so vergesslich.
      There are only 10 types of people in the world: Those who understand binary and those who don't.
      @DragonSlayerMarc
      Vielleicht
      Nö. Das tolle an Open Source ist, dass Du selbs nachsehen kannst, was das Programm so macht. Ich könnte natürlich gemein sein, sodass der Quellcode gar nicht zur Exe passt. Aber Du kannst 1. den Quellcode selbst kompilieren und 2. die Exe dekompilieren.
      Aber ja. Spaß angekommen :D
      "Luckily luh... luckily it wasn't poi-"
      -- Brady in Wonderland, 23. Februar 2015, 1:56
      Desktop Pinner | ApplicationSettings | OnUtils
      Also eigentlich würde ich dir zu einer ordentlichen Unterteilung der Eingaben (TreeView) wie im Post von VincentTB raten, aber fürs erste kann man es ja auch so nutzen.
      Mir ist aber etwas aufgefallen was ich etwas störend bei der Benutzung finde.

      Die Fenster die sich für die Eingabe öffnen usw., sollten zentriert vor der Hauptform auftauchen und nicht immer an verschiedenen Stellen.
      Und wenn man etwas hinzufügen möchte und sich die Form öffnet, sollte automatisch die erste Textbox ausgewählt sein damit man gleich tippen kann.