Jump to content
  • 0

Kundenpasswörter importieren (PrestaShop 1.7)


WebBusch

Question

Hallo zusammen,

 

wir sind aktuell am Testen von PrestaShop 1.7. Meine Aufgabe ist es, aus einem anderen Shop System, die bestehenden Kunden in den neuen Testshop zu importieren. Das mache im Backend mit der vorhandenen Importmöglichkeit. Dafür habe ich mir entsprechend der Syntax eine .csv Datei erstellt. Das Importieren funktioniert auch problemlos. Das einzige Problem ist das Passwort.

Die Passwörter der Kunden sind mit MD5 verschlüsselt und in der .csv Datei steht der entsprechende, verschlüsselte Wert. Wenn ich die .csv Datei importiere, wird die Verschlüsselung aber als Klartext interpretiert und ergibt das neue Passwort.

Um das Problem zu beheben habe ich mir den AdminImportController.php angesehen. Dort habe ich die Funktion gefunden.

 

protected function customerImportOne(…){

if ($customer->passwd) {

            /** @var \PrestaShop\PrestaShop\Core\Crypto\Hashing $crypto */

            $crypto = ServiceLocator::get('\\PrestaShop\\PrestaShop\\Core\\Crypto\\Hashing');

            $customer->passwd = $crypto->hash($customer->passwd, _COOKIE_KEY_);

        }

 

Die verwendete hash Funktion ist in der angegebenen Datei zu finden:

 

public function hash($plaintextPassword, $staticSalt = _COOKIE_KEY_)

    {

        if (!count($this->hashMethods)) {

            $this->initHashMethods();

        }

 

        $closure = reset($this->hashMethods);

 

        return $closure['hash']($plaintextPassword, $staticSalt, $closure['option']);

    }

 

Leider habe ich noch keine Erfahrung mit der Verschlüsslung von Passwörtern, oder hash Funktionen. Deshalb stellt sich die Frage, ob der Code angepasst werden kann, damit das importierte Passwort als MD5 Verschlüsselung erkannt wird? Und entsprechend verarbeitet wird, damit sich das ursprüngliche Passwort nicht ändert?

 

Ich bedanke mich für jegliche Hilfe :)  !

 

Link to comment
Share on other sites

49 answers to this question

Recommended Posts

  • 0

Korrigiert mich wenn ich falsch liege aber ich denke das wird nicht klappen.

 

Ich musste bei dem letzten Shopwechsel auch neue Passwörter vergeben weil es ja nicht möglich sein soll die Passwörter wieder zu entschlüsseln.

Der Shop der die Passwörter angelegt hat kann dies aber auch nicht rückwärts.

Der kann aus der verschlüsselten auch nicht mehr das entschlüsselte machen sondern er verschlüsselt das eingegebene Passwort und vergleicht ob es mit dem hinterlegten Passwort (verschlüsselt) übereinstimmt.

 

Sollte jemand eine Idee dazu haben, gern her damit, kommt früher oder später wieder auf mich zu wenn tatsächlich mal der 1.7er online gehen darf/kann.

Link to comment
Share on other sites

  • 0

Vielen Dank für die Antwort!

 

Ich denke auch, dass es am einfachsten sein wird, wenn die Kunden sich beim ersten Login einfach ein neues Passwort anlegen, aber wenn es irgendwie möglich ist, dies zu vermeiden, würde ich das gerne tun.

Im Grunde möchte ich das Passwort auch nicht entschlüsseln, ich möchte lediglich mitteilen, dass sich das Passwort bereits in einer MD5 Verschlüsselung befindet. 

 

Ein anderer Ansatz, den ich mir überlegt habe ist folgender:

 

Wenn ich das Passwort, welches der Kunde beim Login eingibt nochmal mit der PHP Funktion md5("Passwort"); verschlüssele, bevor es mit dem Wert aus der Datenbank verglichen wird, dann sollten die beiden Werte doch übereinstimmen, wenn das Passwort richtig eingegeben wurde. Das ursprüngliche Passwort ist nur mit md5 verschlüsselt, das habe ich schon getestet. Wenn die Passwort Eingabe bei Presta auch nochmal mit md5 verschlüsselt werden würde, könnten sich die alten Kunden doch weiterhin einloggen und bei neuen Kunden müsste das Passwort doch auch nur noch einmal zusätzlich mit md5 verschlüsselt werden müssen, bevor es in der Datenbank gespeichert wird.

 

Die Frage ist, ob das so überhaupt möglich ist?  

Link to comment
Share on other sites

  • 0

Ich müsste es jetzt erst nachlesen aber arbeitet die MD5 verschlüsselung nicht auch mit Schlüsseln? Dann müsste dein neuer Shop irgendwie genau den selben Schlüssel bei den Kunden verwenden sonst kommt dabei ja nicht das selbe raus.

Werde ich mich nachher mal etwas näher mit beschäftigen.

Link to comment
Share on other sites

  • 0

Vielen Dank für deine Unterstützung, ich freue mich über jegliche Hilfe!  :)

 

Also soweit ich das verstanden habe, gibt es keinen Schlüssel. Was zur Folge hat, dass das MD5 verschlüsselte Passwort auch nicht mehr entschlüsselt werden kann. (Außer mit Rainbow Tables, aber darauf möchte ich nicht zurückgreifen, weil ich dann ja die Passwörter hacken müsste).

 

Ich habe mir einen Test-Benutzer angelegt und das MD5 verschlüsselte Passwort aus der Datenbank des aktuellen Shops ausgelesen.

Danach habe ich ein kurzes PHP Script geschrieben, das Text nur mit MD5 verschlüsselt. Dort habe ich das Passwort des Test-Benutzers eingegeben und ebenfalls das verschlüsselte Passwort ausgelesen.

->Die beiden Werte stimmen tatsächlich überein. Deswegen kann ich mit Sicherheit sagen, dass die Passwörter der Kunden nur mit MD5 verschlüsselt sind.  

Link to comment
Share on other sites

  • 0

Nicht schlecht, dann wäre man jetzt also wieder an deinem Ausgangspunkt, man müsste wissen wie 1.7 verschlüsselt und ob man deine Funktion dagegen austauschen kann.

Und dafür müsste man wissen in welcher Datei wohl die verschlüsselung statt findet.

Oder stell ich mir das zu einfach vor?

Link to comment
Share on other sites

  • 0

Also ich vermute dass die Datei AdminImportController.php beim Import von Passwörtern, aus einer .csv Datei, die oben beschriebene hash Funktion aufruft. Weiterhin vermute ich, dass das Passwort nach dem Prinzip http://php.net/manual/en/faq.passwords.php#faq.passwords.fasthash verschlüsselt wird, weil das Passwort in der Datenbank mit dem Bild, unten, vom Link übereinstimmt. Zumindest von der Syntax. 

Die Hash Funktion ist zu finden in:

 

PrestaShop/src/Core/Crypto/Hashing.php

 

Dort findet wahrscheinlich die Verschlüsselung statt.

Kann diese Funktion geändert werden, damit sie weiß, dass die Werte bereits mit MD5 verschlüsselt sind?

Link to comment
Share on other sites

  • 0

Das klingt richtig gut. Jetzt müsste nurnoch jemand schaffen soeine Funktion zu bauen da ich ja nicht von Magento zu Presta will sondern von Presta zu Presta.

Und die Abfrage die bellini13 da beschreibt, wär ja generell mal was tolles sobald man Kunden von irgendwo zu Presta zu importieren versucht.

Link to comment
Share on other sites

  • 0

Vielen Dank für den Hinweis. Der Ansatz ist gut, diesem kann man nach gehen.

Es handelt sich in unserem Fall zwar um xtcModified und nicht um Magento, aber der Ansatz müsste der Selbe sein. Auf kostenpflichtige Migrations Tools würde ich gerne verzichten.

 

Ich bin dem beschriebenen Ansatz mal nach gegangen. Es ist tatsächlich kein Problem die Importieren Passwörter unverändert im MD5 Format zu speichern. Dafür habe ich einfach in AdminImportController.php Zeile 2882

$customer->passwd = $crypto->hash($customer->passwd, _COOKIE_KEY_); 

in

$customer->passwd = $customer->passwd;

geändert. Dadurch werden die Passwörter unverändert übertragen.

 

Aber wie müsste jetzt der AuthController.php geändert werden, damit er so wohl die alten Kunden mit MD5 verschlüsselten Passwörtern erkennt, aber auch neue Kunden, die sich mit dem neuen Verfahren registriert haben?

Link to comment
Share on other sites

  • 0

Wenn ich das richtig verstanden habe, müßte da ja das vom Kunden eingegebene Paßwort mit der crypto-Funktion verschlüsselt werden, da müßte jetzt zunächst der _COOKIE_KEY_ gegen das SALT vom alten Shop ausgetauscht werden. Dann müßte die Funktion zum Vergleich mit dem in der Datenbank gespeichten MD5-Wert kommen, wenn dieser TRUE lautet, müßte dann noch einmal die crypto-Funktion aufgerufen werden mit dem aktuellen _COOKIE_KEY_ und der Datenbank-Wert geändert werden, wenn FALSE müßte jetzt das ursprüngliche Verfahren durchlaufen werden.

Link to comment
Share on other sites

  • 0

Danke für die Tipps!

 

Haben mitllerweile das Problem gelöst. Die Kundenpasswörter liegen in einer MD5 verschlüsselung vor. Der MD5 Passwortcode wird mit einer .csv Datei in PrestaShop übertragen. Wenn alle Kunden inklusive Passwörter importiert sind, haben wir eine neue Tabelle angelegt. In diese Tabelle werden alle E-Mail Adressen der alten Kunden importiert. Außerdem besitzt die Tabelle eine Spalte mit beliebigem Namen, die die Werte 0 oder 1 annehmen kann. Standartmäßig erhält jede Mail Adresse den Wert 0.

 

Die Loginroutine muss nun an zwei Stellen angepasst werden:

 

-Zu Beginn des Login Prozess wird die vom User eingegebene E-Mail Adresse mit allen alten E-Mail Adressen verglichen. Gibt es eine Übereinstimmung, wird der zweite Wert überprüft. Steht dieser auf 0, dann wissen wir, dass der alte Kunde sich zum ersten mal im neuen Shop anmeldet. Dann wird einfach das von ihm eingegebene Passwort mit der md5($plaintextpasswort); PHP Funktion, mit md5 verschlüsselt. Und schon kann sich der Kunde wieder anmelden. Gibt es keine Übereinstimmungen, dann wird das Passwort nicht umgewandelt, da es sich um einen neuen Kunden handelt.

 

-Gab es eine Übereinstimmung, wird eine Variable auf TRUE gesetzt, das bedeutet dass am Ende des Login Prozess, das vom User eigegebene Passwort mit der üblichen hash Verschlüsselung von Presta 1.7 verschlüsselt wird. Nun wird nur noch ein SQL UPDATE Befehl ausgeführt, der das Passwort in der Kundentabelle mit dem neu verschlüsselten Passwort überschreibt.

Außerdem muss die Spalte (0/1) in der neuen Tabelle nun auf 1 gesetzt werden.

 

Fertig, nun können sich alte und neue Kunden einloggen.

Link to comment
Share on other sites

  • 0

Wenn ich das richtig verstehe, vergleichst du aber gar nicht mit dem Passwortcode, sondern gibst einfach jedem, der die E-Mail-Adresse eines Altkunden sowie ein beliebiges Paßwort angibt, Zugang zu allen Kundendaten, womit jedweder Paßwortschutz ausgehebelt wäre, nur die Kenntnis der E-Mail-Adresse ist erforderlich.

Link to comment
Share on other sites

  • 0

Sorry, wenn ich mich missverständlich ausgedrückt habe.

Mit der neuen Tabelle wird überprüft ob es sich um einen alten Kunden handelt und ob dieser sich zum ersten mal einloggt. Ist das der Fall, wird das eingegebene Passwort VOR der Passwort Vergleich Routine nochmal mit MD5 verschlüsselt. Handelt es sich um einen neuen Kunden, oder den zweiten (oder mehr) Login eines alten Kunden, wird der Schritt mit der MD5 Verschlüsselung einfach übersprungen und die Login Routine (mit Passwort Vergleich natürlich) wird angewendet.

 

Das Passwort der alten Kunden wird beim ersten Login einfach mit der hash Funktion von PrestaShop verschlüsselt und in der Datenbank wird das Passwort vom Login mit dem neu gehashten ersetzt, ABER NUR wenn das eingegebene Passwort auch richtig ist.

Link to comment
Share on other sites

  • 0

Aber an welcher Stelle und wie vergleichst du denn jetzt, ob das eingegebene Paßwort richtig ist? Du schreibst nur, daß du das vom Kunden eingegebene Paßwort verschlüsselst und dann in die Datenbank diesen Hashwert anstelle des vom alten Shop übernommenen in die Datenbank schreibst.

Link to comment
Share on other sites

  • 0

Während der Login Routine von PrestaShop. Am Anfang der Routine wird überprüft ob es ein alter Kunde ist oder nicht, ist das der Fall, wird seine Eingabe mit MD5 verschlüsselt. Jetzt wird die Login Routine von PrestaShop ausgeführt. Ist die Eingabe falsch, passiert nichts weiter und der Kunde kann sich nicht einloggen. Ist die Routine durchgelaufen und die Eingabe war richtig, wird der Kunde eingeloggt und seine Eingabe wird gehashed und in der Datenbank aktualisiert. 

Ich habe mir die Login Routine gesucht und diese wie beschrieben bearbeitet, aber nicht verändert.

Link to comment
Share on other sites

  • 0

Na aber kann das denn praktisch funktionieren? Glaube ich nicht.

 

Wenn ich wissen will, ob das eingegebene Passwort stimmt, muss ich es entschlüsseln.

 

Am Anfang der Routine wird überprüft ob es ein alter Kunde ist oder nicht

Okay, das geht ja über die E-Mail Adresse und ob er sich schon mal eingeloggt hat.

 

ist das der Fall, wird seine Eingabe mit MD5 verschlüsselt

Welche Eingabe? Das Passwort nehme ich an?

MD5 gesalzen oder Roh? Anmerkung: Der Hash wird NIE¹ der gleiche sein, trotz gleichem PW

 

Jetzt wird die Login Routine von PrestaShop ausgeführt

Also das MD5 verschlüsselte Passwort, was der Kunde eingetragen hat wird jetzt für den Login verwendet. checklogin()

 

Ist die Eingabe falsch, passiert nichts weiter und der Kunde kann sich nicht einloggen.

Der Fall sollte immer eintreffen, weil ja ein ganz anderer Hash entsteht.

post-1091593-0-82834800-1492074159_thumb.png

 

post-1091593-0-26485800-1492074159_thumb.png

 

> Es sind immer andere¹ Hash Werte

 

Ist die Routine durchgelaufen und die Eingabe war richtig, wird der Kunde eingeloggt und seine Eingabe wird gehashed und in der Datenbank aktualisiert.

Der User loggt sich also jetzt im neuen Shop ein, er Tippt also E-Mail und Passwort ein. Gibt es die E-Mail, wird das Passwort verschlüsselt (MD5 - Unsicher) und mit dem hinterlegten verglichen (diese sind auch alle MD5 verschlüsselt und aus der alten Datenbank?)

 

Stimmt der neu generierte MD5 Hash mit dem alten der DB überein lässt du das Passwort mit der Prestashop 1.7 Funktion neu verschlüsseln und eintragen?

 

Wäre der Ablauf so richtig?

 

Damit das Funktioniert müsstest du jede PW Eingabe Hacken und entschlüsseln. Das geht vielleicht mit Rainbow Tabellen aber das wird schon schwer und aufwendig¹.  Ist Salz in der Suppe geht auch das nicht mehr.

 

Bleibt am Ende nur eins: Bruteforce. So viel wie nur geht.

 

 

 

¹ Wahrscheinlichkeit von 1 zu 1.3471354624412734e+38 den gleichen Hash zu bekommen.

Edited by Lausli (see edit history)
Link to comment
Share on other sites

  • 0

Damit steht und fällt natürlich alles. Sollte der Hash immer der selbe sein klingt das für mich persönlich jedenfalls nach einer extrem guten Methode.

Ist der Hash nicht immer der selbe hat sich das ganze Thema erledigt.

Wahrscheinlichkeit von 1 zu 1.3471354624412734e+38 den gleichen Hash zu bekommen.

Link to comment
Share on other sites

  • 0

Aber auch bei Presta? Ich kenne den genauen Verschlüsselungsablauf bei Presta nicht. Besteht die theoretische Möglichkeit das Presta immer den selben Key zum verschlüsseln nimmt? WebBusch hat es ja getestet und es scheint ja generell funktioniert zu haben.

Link to comment
Share on other sites

  • 0

 

Besteht die theoretische Möglichkeit das Presta immer den selben Key zum verschlüsseln nimmt?

Es gibt keinen Master-Key. Prestashop nutzt Methode A zum Verschlüsseln. AES,MD5, ganz egal. Die daraus erzeugten Hash Werte sind immer zufällig und basierend auf das genutzte System sicher.

Link to comment
Share on other sites

  • 0

 

Welche Eingabe? Das Passwort nehme ich an?

MD5 gesalzen oder Roh? Anmerkung: Der Hash wird NIE¹ der gleiche sein, trotz gleichem PW

 

Ja, das Passwort.

Korrigiert mich bitte wenn ich falsch liege, aber wenn ich die

md5($var);

Funktion von PHP nutze, ist bei gleicher Eingabe der Hash auch immer gleich. Deswegen kann man md5 auch so "einfach" mit Rainbow Tabellen hacken. In genau diesem md5 Hash befinden sich alle Kundenpasswörter.

 

 

Also das MD5 verschlüsselte Passwort, was der Kunde eingetragen hat wird jetzt für den Login verwendet.

 

Nein. Das Passwort, welches der Kunde eingetragen hat, wird zu erst mit md5 verschlüsselt und anschließend als User Eingabe behandelt. Sprich, der verschlüsselte md5 Code ist das User Passwort. (Stimmt auch, weil die Eingabe identisch mit dem Importierten Passwort ist.)

 

 

(diese sind auch alle MD5 verschlüsselt und aus der alten Datenbank?)

 

Diese wurden ordnungsgemäß von Presta Shop verschlüsselt. Lediglich der md5 Code wird als Passwort behandelt, aber beim Import nochmal von Presta Shop verschlüsselt. Deswegen muss vor dem checkpasswd() die Passwort Eingabe eines alten Kunden mit md5 verschlüsselt werden.

 

 

Stimmt der neu generierte MD5 Hash mit dem alten der DB überein lässt du das Passwort mit der Prestashop 1.7 Funktion neu verschlüsseln und eintragen?

 

Stelle ich beim Login fest, dass es sich um einen alten Kunden handelt UND, dass sein Passwort richtig eingegeben wurde, wird das eingegebene Passwort mit der

hash($passwd);

Funktion von Presta Shop verschlüsselt und in der Datenbank als Passwort gespeichert.

 

Dadurch verschwindet das

hash(md5($kundenpasswort));

Passwort und wird zu

hash($kundenpasswort); 
Edited by WebBusch (see edit history)
Link to comment
Share on other sites

  • 0

Eine Datei oder ein Text kann den gleichen Hash Wert haben, das stimmt schon. Das ist ja der Sinn von Signierungen.

 

Ich kann also eine Datei packen, einen md5 String erstellen und den euch geben.

 

Ihr zieht euch die Datei. Dann ermittelt ihr von der Datei selbst einen md5 hash.

 

Den vergleicht ihr dann, ob der mit dem übereinstimmt den ich euch gegeben habe.

 

Ist dem so, dann würde die Datei nicht verändert.

 

Ist der Hash wert anders, wurde die Datei wahrscheinlich Manipuliert.

 

Das ist der Fingerabdruck der Datei. Der 128 Bit lange Code.

 

Aber die Eingabe des Benutzers wird ja in einem mathematischen verfahren verschlüsselt.

 

Arbeitet md5 nicht hat auch mit /dev/random/ ?

 

Ich habe mit der PHP md5 function noch nie gearbeitet. Ist es denn so, dass die nur Hash Werte erzeugt die gleich sind bei gleichen Text ?

 

Ich bevorzuge da andere Methoden, also falls ich hier falsch liege lern ich gern dazu :)

Link to comment
Share on other sites

  • 0

Es ist richtig was du sagst.

 

Zur Verschlüsslung der Kundenpasswörter wird ein Salt (Cookie_Key) verwendet, der zufällig ist. Deswegen möchte ich die Passwörter der Kunden auch mit dem Verfahren von Presta Shop verschlüsseln.

 

MD5("Text"); Hat bei gleicher Eingabe auch den gleich Code. Deswegen ist das Verfahren auch so unsicher und anfällig gegen Rainbow Tabellen. 

 

Die Kundenpasswörter befinden sich in diesem MD5 Format. Beim Import in PrestaShop wird der MD5 Code mit dem Salt usw. von Presta Shop nochmal verschlüsselt. Gibt jetzt ein alter Kunde sein Passwort ein, wäre es falsch, weil der MD5 Code als Passwort verwendet wurde beim Import. Deswegen möchte ich bei einem alten Kunden die Eingabe des Passworts mit MD5 verschlüsseln. Bei der Überprüfung ob das Passwort stimmt, werden dann die MD5 Codes verglichen. Stimmen diese überein, war das Passwort richtig.

Link to comment
Share on other sites

  • 0

Ich kann es morgen Mal testen, geht ja schnell ein PW verschlüsseln mit md5() und dann den String abfragen.

 

Um sicher zu gehen: kann mir jemand ein Passwort geben welches in md5 sein soll und zb "hallo" heißt?

Der Hash müsste dann ja der gleiche sein, wenn ich es verschlüssel

Link to comment
Share on other sites

  • 0

@DRMasterChief, wir haben das schon erfolgreich realisiert. Die Passwörter von modified-shop Kunden werden wie beschrieben in einer md5 Verschlüsselung an die Presta Verschlüsselungs-Routine übergeben und entsprechend weiter verschlüsselt. Deswegen muss beim Login einfach nur geprüft werden ob es sich um einen modified-shop Kunden handelt, oder nicht. Ist das der Fall, muss die Eingabe seines Passworts mit md5 verschlüsselt werden. In einem anderen Post habe ich das schon ausführlich erklärt. 

 

@Lausli: "hallo" ->md5() = 598d4c200461b81522a3328565c25f7c

(ohne Anführungszeichen.)

  • Like 1
Link to comment
Share on other sites

  • 0

Prinzipiell sollte das gehen, wenn das o.g. alles so zutrifft sähe der Ablauf wie folgt aus:

  1. Anmeldung
  2. Prüfen, ist E-Mail vorhanden, wenn ja
    1. Eingabe des Passworts per php md5() verschlüsseln > md5($user_password)
    2. Den Wert mit dem Wert abgleichen, der in Tabelle X liegt und die aus Punkt 2 eingetragene E-Mail Adresse hat
    3. Bei Übereinstimmung: Neues PW verlangen und das mit Prestashops Funktion normal weiter verarbeiten
      1. Wenn keine Übereinstimmung -> Passwort oder E-Mail Adresse falsch. Bitte versuchen Sie es erneut.
  3. Wenn E-Mail nicht vorhanden
    1. Neu anmelden wie üblich

Das aber wie gesagt nur dann, wenn du eine Datenbank hast

emails | passwords

 

und das Passwort nur md5() ohne salt hat. Wird also die crypt() Funktion verwendet sollte das vorhaben scheitern.

Link to comment
Share on other sites

  • 0

Ich würde dir das ganze gerne als Modul zur Verfügung stellen. Gibt nur leider ein paar Probleme dabei:

 

-Ich weiß nicht wie man ein Modul erstellt.

-Ich weiß gar nicht ob es überhaupt möglich ist, die Änderungen mit einem Modul einzuspielen, da in einer .php Datei von PrestaShop einfach nur etwas ergänzt werden muss.

 

 

 

3. Bei Übereinstimmung: Neues PW verlangen und das mit Prestashops Funktion normal weiter verarbeiten

 

An dieser Stelle habe ich kein neues Passwort verlangt, sondern die Passwort Eingabe des Kunden direkt mit der PrestaShop Funktion verschlüsselt.

Die Kunden werden natürlich per E-Mail informiert, dass es einen neuen Shop gibt und auch das Design weißt darauf hin. Und dann überlasse ich jedem selbst ob er / sie das Passwort ändern möchten. Denn der Sicherheitsstandard von PrestaShop wird ab dem ersten Login angewendet.

Link to comment
Share on other sites

  • 0

Theoretisch müsste sich das per Override lösen lassen. Aber ich änder auch gern direkt an den Dateien. Wär ja nicht das erste mal.

 

Ich habe keine Ahnung wie Presta selbst bisher verschlüsselt hat, müsste der Weg denn auch möglich sein um in unserem Fall die Kunden von 1.5 zu 1.7 zu importieren ohne das die Kunden jedesmal ein neues PW vergeben müssen?

Ich teste auch gern, müsste dann nur wissen in welcher Datei ich was ergänzen muss.

Link to comment
Share on other sites

  • 0

Genau, man müsste wissen, wie die Passwörter in 1.5 verschlüsselt sind. Dazu kannst du ja einfach mal 2 Test-Kunden mit gleichem Passwort in deinem 1.5 Shop anlegen. Danach schaust du dir die verschlüsselten Passwörter in der Datenbank an und vergleichst den Code.

 

Stimmen beide Codes überein, sollte es möglich sein, die Kunden, inklusive Passwörter zu importieren.

Link to comment
Share on other sites

  • 0

Ich hatte mal was gelesen, dass Prestashop den __COOKIE_KEY__ verwendet der als salt dient.

UPDATE employee SET passwd = md5(“<_COOKIE_KEY_value><yourNewPassword>”) WHERE email = “<youremailaddress>”;

Zumindest wäre es so, wenn man das Admin Passwort ändert.

 

Bleibt der Cookie Key gleich denn könnte das hier helfen:

https://www.prestashop.com/forums/topic/214874-moving-customers-passwords-to-new-site-149-1531/?do=findComment&comment=1062466

 

Aber da bin ich nicht so versiert.

Link to comment
Share on other sites

  • 0

Also ich habe im 1.5er Shop jetzt zwei Kunden angelegt. Beide haben das Passwort "hallo" bekommen und in der Datenbank steht bei beiden folgendes Passwort:

 

a158af1d5ea1648696069b369472496a

 

lässt sich jetzt noch irgendwo nachvollziehen ob das eine md5 verschlüsselung ist?

Identisch scheinen die beiden ja auf jeden Fall zu sein. Große Frage ob ich einen Cookie habe der als Key dient. Aber könnte ja vom Handy noch einen Kunden nalegen der ja dann das selbe Passwort haben müsste.

 

EDIT:

 

Auch der dritte, vom Handy angelegte hat das selbe Passwort

 

EDIT Nr. 2:

 

Habe gerade folgendes gefunden, also hat sich das anscheinend sowieso erledigt oder?

https://www.prestashop.com/blog/de/wie-man-25-000-kundendaten-nach-prestashop-migriert/

Edited by Shad86 (see edit history)
Link to comment
Share on other sites

  • 0

Also, ich habe das eben nochmal geprüft. Von der länge her, ist dein Rückgabewert so lang wie ein md5 Code.

Aber wir wissen bereits, dass es nicht der einfach md5 Hash ist. Solange der Wert in der Datenbank aber immer gleich bleibt, wird wahrscheinlich einfach der COOKIE_KEY als Salt zum Verschlüsseln verwendet.

 

PHP kann das so einfach umsetzten:

$password = "hallo";
$salt = "cookiey_key";
echo md5($password.$salt);

Du kannst mal schauen, ob du deinen COOKIE_KEY findest und das Passwort aus der Datenbank damit reproduzieren kannst.

Link to comment
Share on other sites

  • 0

Das wird dich nicht weiter bringen, weil ein Salt zufällig generiert ist.

 

So wie in der verlinkten Seite.

Das wird so also wirklich schwierig.

 

pass=PASSWORT

 

kann ja auch zu $salt_part_one.$pass.$salt_part_two werden etc. wobei salt  1 und 2 jeweils unterschiedlich lang sein kann.

Das müsste man dazu erst mal genau wissen, was recht schwer wird, wenn das alles random ist. wie und wo das Slaz verteilt ist.

 

Ich hatte mal was gelesen, dass man auch das userpasswort splitten kann in verschiedene Teile, die salszt und in 2 Tabellen packt.

Ob das so stimmt oder genutzt wird: Keine Ahnung.

 

Alles über salt ist eh sha als Beispiel

Edited by Lausli (see edit history)
Link to comment
Share on other sites

  • 0

Naja man kann das ja wenn gar nix geht gut verpacken: Da uns ihre Sicherheit am Herzen liegt, haben wir keinen Zugriff auf die Passwörter die Sie gewählt haben. Um die Sicherheit ihrer Daten auch weiterhin optimal zu gewährleisten bitten wir Sie ein neues Passwort zu generieren / sich mit ihrem neuen Passwort anzumelden.

 

Keine Ahnung, irgendwie so. Allerdings gibt es ja mit dem thirty bees migrator eine Funktion die man ggf nutzen kann. Das übersteigt aber meine Fertigkeiten ebenso.

Link to comment
Share on other sites

  • 0

Und da hab ich zu wenig Ahnung von. Ich versuche was ich kann aber hab die Salt Funktion versucht mit allem aus der settings.ini zu definieren. Aber davon scheint es nichts zu sein. Wer weiß wo sich das wieder her geholt wird.

Link to comment
Share on other sites

  • 0

Wird auf jeden Fall einen Newsletter geben bezüglich neuer Shop und evtl. neues Passwort und auch den Hinweis beim Login.

Wie genau der dann aussieht muss ich mir zum Glück erstmal keine Gedanken drum machen.

Ich habe nur gehofft man kan es etwas professioneller lösen und die Passwörter bleiben bestehen.

Verstehen ja wieder nur die wenigstens das es positiv ist das wir deren Passwörter nicht haben.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...