http://wiki.ggf-controls.de/index.php?title=Passwortgenerator_und_-speicher_(C%2B%2B)&feed=atom&action=historyPasswortgenerator und -speicher (C++) - Versionsgeschichte2024-03-28T08:11:05ZVersionsgeschichte dieser Seite in C++_PHP_und_mehrMediaWiki 1.23.14http://wiki.ggf-controls.de/index.php?title=Passwortgenerator_und_-speicher_(C%2B%2B)&diff=100&oldid=prevSysOpGert: 1 Version: Neuinstallation2017-03-27T17:29:59Z<p>1 Version: Neuinstallation</p>
<table class='diff diff-contentalign-left'>
<tr style='vertical-align: top;'>
<td colspan='1' style="background-color: white; color:black; text-align: center;">← Nächstältere Version</td>
<td colspan='1' style="background-color: white; color:black; text-align: center;">Version vom 27. März 2017, 17:29 Uhr</td>
</tr><tr><td colspan='2' style='text-align: center;'><div class="mw-diff-empty">(kein Unterschied)</div>
</td></tr></table>SysOpGerthttp://wiki.ggf-controls.de/index.php?title=Passwortgenerator_und_-speicher_(C%2B%2B)&diff=99&oldid=prevGert: /* Binaries */ W7.zip mit DLLs2014-05-09T18:30:35Z<p><span dir="auto"><span class="autocomment">Binaries: </span> W7.zip mit DLLs</span></p>
<p><b>Neue Seite</b></p><div>[[Kategorie:C++]]<br />
Als moderner Mensch kann man vieles Online beschaffen oder erledigen. Aber für alles braucht man ein Passwort, und dieses Passwort sollte nur mit großen Aufwand geknackt werden können. Das bedeutet eine willkürliche Folge von Zahlen, Groß- und Kleinbuchstaben, am besten mit Sonderzeichen, um so länger, um so besser. Und natürlich für jede Website ein anderes Passwort<ref>Es kommt schon vor, dass bei Anbietern Listen mit Passwörtern gestohlen werden. Um den Schaden zu begrenzen, darf das Passwort nicht auch noch woanders einen Zugang gewähren.</ref>. Aber wer kann sich schon so viele verschiedene Passwörter ausdenken oder merken. Und aufschreiben ist auch riskant.<br />
Deshalb habe ich ein kleines Programm Namens '''PWCrypt''' geschrieben, das ein zufälliges Passwort erzeugt und mit einem Nutzername unter einem Stichwort abspeichert. Die Speicherdatei wird mit einem Master-Passwort durch [http://www.gnupg.org GnuPG] symmetrisch verschlüsselt<ref>Firefox bietet mit dem Master-Passwort eine ähnliche Funktionalität, aber nur für Websites, und auch nicht für alle. Und man muss sich das Passwort immer noch selbst ausdenken.</ref><br />
<br />
==Funktionen==<br />
*Erzeugung eines zufälligen Passworts mit oder ohne Sonderzeichen. Voreinstellung ohne.<br />
*Oder Eingabe eines bereits bestehenden Passworts.<br />
*Jedem Passwort wird vom Anwender eine Kennung zugeordnet, unter der man es wiederfindet.<br />
*Mit jedem Passwort ist ein Nutzer gespeichert, vom Anwender einzugeben.<br />
*Speicherung des Passworts in eine verschlüsselten Datei. Voreingestellter Dateiname passwort.txt.gpg.<br />
*Symmetrische Verschlüsselung der Passwortdatei durch ein Masterpasswort aus beliebigen Zeichen (außer " oder Leerzeichen).<br />
*Anzeigen eines Passworts durch Angabe der Kennung.<br />
*Anzeigen aller Passwörter.<br />
*Löschen eines Passworts.<br />
<br />
==Speicherdatei==<br />
Jede Zeile in der Speicherdatei repräsentiert ein Passwort und besteht aus 3 mit '\t' getrennten Spalten:<br />
<table border='0'> <br />
<tr><td>Passwortindex</td><td>Kennung für das Passwort, dient zum Wiederauffinden. Passwortindex sollte eindeutig sein, sonst wird immer das 1. Auftreten gezeigt.</td></tr> <br />
<tr><td>Nutzer</td><td>Üblicherweise gehört zu einem Passwort auch ein Benutzer, zB. logins bestehen meistens aus 2 Feldern.</td></tr> <br />
<tr><td>Passwort</td><td>Eine zufällige Folge von Zeichen einstellbarer Länge, falls gewünscht auch mit Sonderzeichen.</td></tr> <br />
</table> <br />
<br />
==Gebrauch== <br />
Es handelt sich um ein reines C++-Programm, dh. es läuft auf der Konsole ohne grafische Oberfläche (Windows:Eingabeaufforderung, Linux:Terminal). <br />
<br />
Der Schlüssel {{Platz|Passwortindex}} wird als (letztes) Argument beim Aufruf übergeben, davor sind diverse Optionen möglich. <br />
<br />Ohne Optionen wird die Passwortzeile mit dem Schlüssel {{Platz|Passwortindex}} ausgegeben.<br />
<br />
'''Aufruf'''<br />
<br />PWCrypt [Options] Passwortindex<br />
<br />PWCrypt --entfernen Passwortindex<br />
<br />PWCrypt -a<br />
<br />
'''Optionen''' <table border='0'><br />
<tr><td>-?</td><td>Ausgabe dieses Textes.</td></tr><br />
<tr><td>-1</td><td>Verwendet GnuPG Version 1.4 (gpg). Voreinstellung ist Version 2.x (gpg2).</td></tr><br />
<tr><td>-a</td><td>Zeigt alle Passwortzeilen in der Datei an.</td></tr><br />
<tr><td>-d</td><td>Neue Passwortzeile mit Defaulteinstellung und dem Index Passwortindex.</td></tr><br />
<tr><td>--entfernen</td><td>Entfernt alle Passwortzeilen mit der Kennung Passwortindex.</td></tr><br />
<tr><td>-f <file></td><td>Gibt den Namen der unverschlüsselten Datei an, wenn -f fehlt, wird die Voreinstellung DEFAULT_DATEI verwendet.</td></tr><br />
<tr><td>-h</td><td>Ausgabe dieses Textes.</td></tr><br />
<tr><td>-n <number></td><td>Neue Passwortzeile mit <number> Zeichen als Passwort. Voreinstellung DEFAULT_NUMBER.</td></tr><br />
<tr><td>-p</td><td>Neue Passwortzeile mit abgefragten Passwort statt zufälligem Wert.</td></tr><br />
<tr><td>-r</td><td>Liest das Passwort mit dem Index Passwortindex.</td></tr><br />
<tr><td>-s</td><td>Neue Passwortzeile auch mit Sonderzeichen, Voreinstellung ohne.</td></tr><br />
<tr><td>-u <user></td><td>Neue Passwortzeile mit <user> für die Spalte Nutzer, Voreinstellung Login-Name.</td></tr><br />
<tr><td>-v</td><td>Gibt die Versionsnummer aus.</td></tr><br />
</table><br />
Das Master-Passwort wird in Klartext angezeigt. Das habe ich ganz bewusst so realisiert:<br />
#Das Master-Passwort muss lang und kompliziert sein und kann beliebige Zeichen (außer " oder Leerzeichen) enthalten<ref>Wenn man die Passwortdatei unter Windows und Linux nutzen will, sollte man die unterschiedliche Zeichensätze in Terminal bzw. Eingabeaufforderung berücksichtigen. Am besten beschränkt man sich auf ASCII-Zeichen, das sind über 90 Zeichen inklusive aller Satzzeichen und Klammern. Außerdem musste ich feststellen, dass das Apostroph unter Windows nicht die klammernde Bedeutung hat wie unter Linux.</ref>. Somit sind Tippfehler wahrscheinlich<ref>Generell finde ich es extrem lästig, das Passwörter verdeckt eingegeben werden. Das macht sichere Passwörter - also lange, zufällige Zeichenfolgen - fast unmöglich.</ref>.<br />
#Wo steht schon einer hinter einem und filmt den Bildschirm. Außerdem könnte er dann auch die Tastenanschläge filmen.<br />
<br />
==Installation==<br />
Es ist reiner C++-Code und kann unter Windows und Linux<ref>Wahrscheinlich unter jedem Betriebssystem.</ref> erstellt werden.<br />
Das Programm wurde mit der [[Einführung in die Entwicklungsumgebung (C++)|{{tooltip|Integrated Development Envirement (IDE)|integrierten Entwicklungsumgebung}}]] [[Qt Creator (Qt)|Qt Creator]] erstellt und ausgetestet, es sind aber nur die Basiswerkzeuge Compiler und Linker notwendig. Dafür ist ein einfaches Makefile für Gnu make beigefügt.<br />
<br />Nach der Erstellung kann es sofort verwendet werden, es sind keine Einstellungen in einer Datei oder der Registry notwendig. Die Voreinstellungen DEFAULT_... sind als Konstanten in '''eigenschaften.h''' abgelegt und können vor dem Compilieren an die eigenen Bedürfnisse angepasst werden.<br />
===Quellcode===<br />
Die notwendigen Dateien findet man unter [http://wiki.ggf-controls.de/Beispiele/PWCrypt/PWCrypt.tar.bz2 Quellcode von PWCrypt].<br />
<br />Außerdem gibt es eine mit [[Doxygen]] erstellte Beschreibung des Programms unter [http://wiki.ggf-controls.de/Beispiele/PWCrypt/html Dokumentation zu PWCrypt].<br />
===Linux===<br />
Auf jedem Linux-System steht für die Programmerstellung normalerweise eine GNU-C++ {{Tooltip|Programmerstelungswerkzeuge|Toolchain}} zur Verfügung, bzw. ist leicht nachrüstbar<ref>Unter Ubuntu werden die Werkzeuge nicht automatisch mit installiert: [http://wiki.ubuntuusers.de/GCC Installation der Gnu C++-Entwicklungswerkzeuge]</ref>.<br />
<br />Einfach im Source-Ordner (mit dem Makefile) im Terminal '''make''' eingeben.<br />
<br />In den meisten Distributionen ist GnuPG 1.4 oder GnuPG 2.x oder beide vorinstalliert.<br />
===Windows===<br />
Unter MS-Windows ist die Sache irgendwie komplizierter: Im QtCreator wird normalerweise die vorkompilierte ''Umgebung'' als DLLs dynamisch eingebunden, die DLLs muss man in den Ordner mit dem Programm kopieren, sie befinden sich irgendwo unter dem Qt-Ordner C:\Qt<ref>Esgibt auch eine Möglichkeit, statische Libraries einzubinden, aber das erfordert zusätzlichen Aufwand, siehe [https://qt-project.org/wiki/How-to-build-a-static-Qt-for-Windows-MinGW Statisches Qt]</ref>. Besser ist es, den Makefile zu nutzen: in der '''Eingabeaufforderung''' genau wie unter Linux ein '''make'''<ref>Ich muss zu meiner Schande gestehen, dass ich nur Erfahrung mit GNUmake habe. Unter Visual C++ ist wahrscheinlich alles anders. Aber ich verwende QtCreator + MinGW.</ref> aufrufen. Ich habe mit Qt den MinGW-Compiler installiert, für QT5.2 mit Default-Einstellungen ist das Make-Tool '''C:\Qt\Tools\mingw48_32\bin\mingw32-make.exe'''. '''Aber man muss auch den Ordner in PATH<ref>Eine dauerhafte Änderung unter W7 ist nur über {{Eingabe|Systemsteuerung->System->Erweiterte Systemeinstellung->Register Erweitert->Umgebungsvariablen->Systemvariablen->Path}} möglich.</ref> mit aufnehmen, da das Make-Tool Compiler und Linker aus diesem Ordner aufruft.'''<br />
<ref>Erstaunlicherweise ist das Programm bei Erstellung mit QtCreator unter Verwendung von DLLs unter Window 7 fast doppelt so groß (dazu kommen noch die nicht gerade kleinen DLLs) wie unter Linux mit eingebundenen Libs. Unter Windows 7 mit mingw32-make ist es 3 mal so groß wie unter Linux, bei Verwendung von statischen Qt 15 mal so groß.</ref><br />
<br />[ftp://ftp.gnupg.org/gcrypt/binary/ GnuPG 1.4 für Windows] findet man hier.<br />
<br />
===Binaries===<br />
Für diejenigen, die dieses lebensnotwendige Programm nutzen möchten, ohne sich mit C++ auseinanderzusetzen - was schade ist, da sich dieses Wiki um C++ dreht - zur Bequemlichkeit die erstellten Programme: <br />
<br />[http://wiki.ggf-controls.de/Beispiele/PWCrypt/Binaries/PWCrypt_linux Linux].<br />
<br />[http://wiki.ggf-controls.de/Beispiele/PWCrypt/Binaries/PWCrypt_W7.zip Windows_7].<br />
<br />
== Fußnoten ==<br />
<references /></div>Gert