Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo an die PHP-Checker...!!! ;)

Ich habe als Hausarbeit ein PW-Manager als PHP-Script erstellt. Es gibt 2 Eingabefelder mit unbegrenzter Wort-/Satzlänge und als Ausgabe kommt ein verschlüsselter Wert. Die Verschlüsselung besteht aus sha1, md5 & crypt...

Naja, das könnt ihr unten im aufgeführten PHP-Code ja selber lesen. Das ist soweit auch alles korrekt.

Dieses Script ist mit xampp oder ähnlichem Server-Tools ausführbar, wie man es ja von php gewohnt ist. Soweit so gut...

Mein Anliegen ist jetzt, das ich gern dieses php-Script umwandeln möchte, so das es nur noch über eine Webseite ohne Server gestartet werden kann. Ein ausführbares GUI (Programm-Oberfläche) wäre sogar noch besser.

Ich möchte aber keine gutgemeinten Ratschläge wie, das geht in Java oder C/C++ oder whatever. Da ich so eine Umwandlung noch nicht gemacht habe, wäre ich euch sehr dankbar wenn mir da jemand weiterhelfen könnte.

Man müsste doch theoretisch nur paar wenige Codes umändern, oder täusch ich mich da...? Ich hab es nach 3 Stunden probieren leider nicht hinbekommen.

Hier das PHP-Script:

<?php
echo "
<form action='crypto_gen.php' method='POST'>
Dein Geheimnis: <input type='text' name='geheimnis'>
Dienstname: <input type='text' name='dienst'>

<input type='submit' name='snd'>
</form><br><br>";

if (isset($_POST['snd']))
{
$hash_passwd = sha1($_POST['geheimnis']);
$hash_dienst = md5($_POST['dienst']);
$beide = crypt($hash_passwd, '$6$rounds=9123$' . $hash_dienst);
echo substr($beide,strlen($beide)-15);

}
?>[/PHP]

Achso, falls es Unklarheiten gibt, wegen meinem Verschlüsselungsalgoritmus, der ist so gewollt... :D

Vielen Dank schonmal....

Geschrieben
Mein Anliegen ist jetzt, das ich gern dieses php-Script umwandeln möchte, so das es nur noch über eine Webseite ohne Server gestartet werden kann. Ein ausführbares GUI (Programm-Oberfläche) wäre sogar noch besser.
Weißt du denn, wie man PHP-Code lokal, ohne Webserver ausführt?

Man müsste doch theoretisch nur paar wenige Codes umändern, oder täusch ich mich da...?
Naja, das ganze HTML-Zeug muss natürlich weg, statt dessen musst du deine Eingabedaten aus der Konsole oder GUI lesen.

Achso, falls es Unklarheiten gibt, wegen meinem Verschlüsselungsalgoritmus
Mag sein, dass du das für korrekt und gewollt hältst. Aber das ist kein Verschlüsselungsalgorithmus.
Geschrieben
Weißt du denn, wie man PHP-Code lokal, ohne Webserver ausführt?

Nein... Sonst hätte ich es ja selbst hinbekommen.

Naja, das ganze HTML-Zeug muss natürlich weg, statt dessen musst du deine Eingabedaten aus der Konsole oder GUI lesen.

Die HTML-Tags hab ich benutzt, damit das Script im Browser ordentlich dargestellt wird... Können natürlich entfernt werden. Ich kenn aber die Befehle für Eingabefeld und Submit-Button für eine andere Sprache nicht. Ich lerne Systemintegration, nicht Anwendungsentwicklung. Und Programmierung ham wir nur paar Wochen gehabt.

Du meinst mit Eingabedaten aus Konsole/GUI bestimmt Print und Integer, oder versteh ich das falsch.

Mag sein, dass du das für korrekt und gewollt hältst. Aber das ist kein Verschlüsselungsalgorithmus.

Hast du diesen bei dir ausprobiert? Aus beiden Eingabefeldern wird der Wert jeweils in sha1 & md5 verschlüsselt =>Das Ergebnis wird in Crypt verschlüsselt => Die Ausgabe des Wertes erfolgt nach 9123 Durchgängen + ab der 15. Stelle.

Wenn am Code nix geändert wird, ist bei jeder selben Eingabe der beiden Felder immer der gleiche verschlüsselte Wert.

Was ist daran falsch?

Geschrieben
NDie HTML-Tags hab ich benutzt, damit das Script im Browser ordentlich dargestellt wird..
Ohne Beteiligung eines Webservers ist es sinnlos, da einen Browser einzubeziehen.

Ich kenn aber die Befehle für Eingabefeld und Submit-Button für eine andere Sprache nicht.
Dann mach es eben erst einmal über die Konsole.

Du meinst mit Eingabedaten aus Konsole/GUI bestimmt Print und Integer, oder versteh ich das falsch.
Print ist Ausgabe. Konsoleneingabe bei PHP funktioniert über fscanf auf STDIN, soweit ich weiß.

Hast du diesen bei dir ausprobiert?
Nein, das kann man dem Code ansehen.

Aus beiden Eingabefeldern wird der Wert jeweils in sha1 & md5 verschlüsselt =>Das Ergebnis wird in Crypt verschlüsselt => Die Ausgabe des Wertes erfolgt nach 9123 Durchgängen + ab der 15. Stelle.

Wenn am Code nix geändert wird, ist bei jeder selben Eingabe der beiden Felder immer der gleiche verschlüsselte Wert.

Was ist daran falsch?

Eine wichtige Eigenschaft einer Verschlüsselung ist, dass man sie umkehren kann. Was du da machst, ist nicht umkehrbar.

Auch SHA1 und MD5 sind keine Verschlüsselungen, aus genau demselben Grund: Weil du den Klartext nicht wiederherstellen kann.

Ein Password-Manager, aus dem man die Passwörter nicht wieder herausholen kann, klingt für mich ziemlich kaputt.

Geschrieben

Nein, das kann man dem Code ansehen.

Eine wichtige Eigenschaft einer Verschlüsselung ist, dass man sie umkehren kann. Was du da machst, ist nicht umkehrbar.

Auch SHA1 und MD5 sind keine Verschlüsselungen, aus genau demselben Grund: Weil du den Klartext nicht wiederherstellen kann.

Ein Password-Manager, aus dem man die Passwörter nicht wieder herausholen kann, klingt für mich ziemlich kaputt.

PW-Manager ist von mir falsch ausgedrückt. Das soll natürlich ein PW-Generator darstellen, wie man erkennt. Ein PW-Manager bzw. Safe ist nur so lange sicher, wie niemand außer der Besitzer den Zugang zum Safe bekommt. Der Nachteil an einer umkehrbaren Verschlüsselung ist, das der Code "auslesbar" ist.

Und genau hier setzt mein Generator an. Das PW ist NICHT in umgekehrter Richtung wiederherstellbar. Man merkt sich nur das eigene, persönliche Wort oder Satz und den entsprechenden Dienst. Für jede Anmeldung müssen die beiden Felder damit gefüllt werden und schon bekommt man das Kennwort. Das ist quasi ein PW-Merker ohne das die PW´s irgendwo abgelegt werden.

Hier ist natürlich auch die Voraussetzung das man die Begriffe für die Felder nicht vergisst oder jemand anderem zugänglich macht. Aber da nützt auch der beste Safe nichts...

Geschrieben
Ein PW-Manager bzw. Safe ist nur so lange sicher, wie niemand außer der Besitzer den Zugang zum Safe bekommt.
Was meinst du denn mit Zugang? Bei einem guten Passwortmanager ist weder Kenntnis des Algorithmus noch der Zugriff auf die verschlüsselten Daten ein Problem.

Der Nachteil an einer umkehrbaren Verschlüsselung ist, das der Code "auslesbar" ist.
Alle Verschlüsselungen sind umkehrbar. Du benutzt den Begriff "Verschlüsselung" falsch. In deinem Programm ist nirgendwo eine Verschlüsselung. Du verknüpfst mehrere Hash-Funktionen.

Das ist quasi ein PW-Merker ohne das die PW´s irgendwo abgelegt werden.
Und wo ist die zusätzliche Sicherheit? Statt den Dienst selbst mit Passwortlisten zu füttern, füttere ich eben dein Programm mit diesen Listen. Mit etwas Glück verwendet der Benutzer dasselbe Geheimnis für mehrere Dienste, dann gute Nacht.
Geschrieben

Kein Schutz bietet 100%ige Sicherheit. Die Warscheinlichkeit das jemand dasselbe Wort/Satz für den Generator verwendet, ist genauso hoch, wie wenn jemand deine PW´s (die aus einfachen Worten bestehen) rausbekommt, die du dir nur im Kopf merkst.

Nennen wir es kryptologischer Zufallsgenerator...

Ist ja auch nur ein Übungsscript, wo mehrere Hash-Funktionen einen kryptographischen Endwert ergeben sollen... mehr nicht

Ma zurück zum eigentlichen Thema... Kann mir evtl. jemand bitte den abgewandelten Code für eine Konsolenausgabe zur Verfügung stellen...? :rolleyes:

Geschrieben
Hallo an die PHP-Checker...!!! ;)

Man müsste doch theoretisch nur paar wenige Codes umändern, oder täusch ich mich da...? Ich hab es nach 3 Stunden probieren leider nicht hinbekommen.

Ohne Dein Vorhaben bewerten zu wollen:

Dann versuche Dich einfach weiter.

Eventuell erkennst Du dann auch einen Unterschied zwischen PHP-Scripting und Programmierung in Java/C/C++

Geschrieben

Den Unterschied kenn ich... Ich werde das ganze mal in Java umwandeln. Das ist, glaub ich, der Code der dem PHP am nähesten kommt. Am Ende ist es dann doch besser, wenn ich das selber mach. So kann ich mich wenigstens mal damit auseinandersetzen, wie man generell eine Code-Sprache in eine andere umwandelt oder anpasst.

Geschrieben
Kein Schutz bietet 100%ige Sicherheit. Die Warscheinlichkeit das jemand dasselbe Wort/Satz für den Generator verwendet, ist genauso hoch, wie wenn jemand deine PW´s (die aus einfachen Worten bestehen) rausbekommt, die du dir nur im Kopf merkst.[...]
Sehe ich anders, wenn nicht explizit bestimmte Kennwortrichtlinien implementiert sind, so dass man ein Kennwort z.B. nicht doppelt verwenden kann und man z.B. mindestens 8 Zeichen, davon mind 1 Großbuchstabe, 1 Ziffer und ein Sonderzeichen enthalten und sich von den anderen Passwörtern an mindestens x Stellen unterscheiden muss (gegen z.B. fortlaufende Nummern/Buchstabenreihen).

Bei Zugängen hat man oftmals bestimmte Komplexitätsvorgaben und kann z.B. die letzten 10 PAsswörter nicht nutzen, die man vorher schon mal verwendet hat.

Geschrieben

Spätestens beim Social-Hacking ist die Methode auch nicht 100%ig sicher. Bei solchen Kennwortrichtlinien braucht man entweder ein verdammt gutes Gedächtnis um sich die PW´s zu merken oder man schreibt sie wo auf oder speichert die in nem Safe/Manager-Tool oder verschlüsselt auf der HDD.

Gedächtnis is natürlich die wohl sicherste Methode. Aber die anderen beiden zeigen ja, das keine 100%ige Sicherheit garantiert werden kann, sobald die Kennwörter irgendwo gespeichert oder geschrieben sind. Die Sicherheit ergibt sich eher dadurch, wieviel Mühe und Zeit es überhaupt wert ist an die PW´s zu kommen. Bei den meisten Nutzern, sicherlich völlig unangemessen. Aber bei hochprisanten Daten ist der Aufwand zum PW-Klau teilweise schon gegeben.

Ist meine persönliche Meinung...:)

Geschrieben

Ich möchte aber keine gutgemeinten Ratschläge wie, das geht in Java oder C/C++ oder whatever. [...] wäre ich euch sehr dankbar wenn mir da jemand weiterhelfen könnte.

Zuerst einmal suchst du dir eine Programmiersprache heraus, für die es eine GUI gibt und die dir gefällt bzw. die du aus anderen Gründen noch lernen möchtest. Zum Beispiel Java (Swing), C++ (WinAPI, Qt, GTK, ...), C# oder VB.NET (Winforms, WPF, ...). Dann erstellst du einfach deine GUI (entweder mit einem Modeller/Desigenr/GUI-Builder oder eben "per Hand" also per Code). Brauchst ja nur zwei Eingabefelder, ein Button und noch ein Ausgabefeld. Dann suchst du dir für die gewählte Programmiersprache noch ein zwei Libs, Klassen, Whatever aus, welche dir die sha1 und md5 zur Verfügung stellen und bindest diese ein. Die crypt()-Funktion von PHP ist glaube ich Betriebssystemabhängig, da suchste dir eben noch was schönes aus. Anschließend noch dem Button die entsprechende Aktion geben und dort deine Daten einwegverschlüsseln und bei deinem Ausgabefeld anzeigen. Fertig. Bei konkreten(!) Problemen dabei helfe ich gerne weiter. Aber eine Sprache lernen musst du selber.

Geschrieben (bearbeitet)

Einen neuen Code in einer anderen Sprache wollt ich ja nicht. Sondern den vorhandenen PHP-Code so umcodieren das der ohne ohne Netz-/Serververbindung läuft. Ich wollte mir so einen komplett neuen Code ersparen...

Weißt du denn, wie man PHP-Code lokal, ohne Webserver ausführt?

Auf diese Frage hin, hätt ich vermutet das das möglich ist.

Hätte ich mal einen viel längeren PHP-Code, den ich aber auch "Offline" anwenden möchte, wäre es gut gewesen wenn das einfach gegangen wäre. Aber dem ist ja leider nicht so...

Ich hab diese Crypt-Varianten genommen, weil das letzte Woche unser Thema war. Nach Internetrechersche und einigen Aussagen hier, würde ich jetzt bei einer GUI-Version nach besseren Alternativen suchen.

Aber trotzdem danke... Mein Praktikum beginnt nächste Woche, da werd ich sicher mehr Zeit haben, mich mit Programmierung auseinander zu setzen. Da komm ich sicher mal auf dein Angebot zurück. ;)

Bearbeitet von submain
Geschrieben
Auf diese Frage hin, hätt ich vermutet das das möglich ist.

Es ist möglich, aber nicht so einfach, wie du dir das vielleicht vorstellst. Du kannst dich auch nicht mit Lenkrad und Stuhl auf die Straße setzen und hoffen, dass du ohne ein Auto ans Ziel kommst, wenn du nur etwas andere Lenkbewegungen machst.

Der "natürliche Lebensraum" von PHP-Skripten ist eine ziemlich komplexe und komfortable Laufzeitumgebung aus dem Browser, der die GUI darstellt und die Eingabedaten liefert, und dem Webserver, der sich um die Ausführung kümmert. PHP-Skripte sind natürlich auf diese Laufzeitumgebung ausgelegt.

Wenn du die Abhängigkeit von dieser Infrastruktur loswerden willst, muss sich dein Programm um alles, was vorher Browser und Webserver erledigt haben, selbst kümmern. Es gibt dann niemanden mehr, der für dich die GUI aus HTML rendert, und niemanden, der dir die Eingabedaten in einem handlichen $_POST liefert. Das geht nicht einfach so mit "umcodieren".

Zudem musst du dafür sorgen, dass du entweder direkt ausführbare Dateien aus dem PHP-Code erstellst (mit einem Compiler), oder lokal ein PHP-Interpreter vorhanden ist, der deinen Code ausführt.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...