Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Frage Entwicklung PHP

GELÖST

16 Byte Passwort ändern auf 41 Byte (1500 Einträge)

Mitglied: Bommel1302

Bommel1302 (Level 1) - Jetzt verbinden

14.12.2012 um 23:50 Uhr, 4383 Aufrufe, 10 Kommentare

Hallo zusammen,

ich hoffe Ihr könnt mir mal wieder helfen.
Ich möchte in einer MYSQL Tabel das die Passwörter der User von 16Byte auf 41 Byte ändern.
Leider habe ich keinen Ansatz wie diese Änderung möglich ist.
Jeder User hat ja ein anderes Passwort und soll dieses nach der Umstellung auch behalten.
Habe es mit dem SQL-Befehl versucht, jedoch ist danach bei allen Usern das Passwort gleich.
UPDATE mysql.user SET Password = PASSWORD('password') WHERE 1;

Wie kann ich die 1500 Datensätze per Script abarbeiten?

Gruß Marcel
Mitglied: Guenni
15.12.2012 um 12:57 Uhr
Hi Bommel1302,

Wie kann ich die 1500 Datensätze per Script abarbeiten?

Du könntest z.B. die Update-Anweisung, . . . set spalte = wert where . . ., spalte = wert where . . . usw.,

in einer Schleife zusammensetzen. Leider hat die Tabelle user keinen eindeutigen Index, z.B. eine ID, und

in den Spalten host und user können Hosts und User auch noch mehrfach unter gleichem Namen vorhanden sein.

Eine korrekte Anweisung wäre dann . . . password = PASSWORD(password) where host = 'host' and user = 'user'

für jede Zeile der Tabelle.


01.
<?php 
02.
$query = "select host, user, password from user"; 
03.
$result = mysql_query($query); 
04.
/* 
05.
* Update-Anweisung in Variable speichern 
06.
*/ 
07.
$update = "update user set "; 
08.
/* 
09.
* Die Änderungs-Anweisung, where-Klausel und ein Komma an die Anweisung anhängen 
10.
*/ 
11.
while($row = mysql_fetch_array($result, MYSQL_ASSOC)){ 
12.
	$update.=" password = PASSWORD(".$row['password'].") where host = ".$row['host']." and user = ".$row['user'].","; 
13.
14.
/* 
15.
* Das letzte Komma entfernen 
16.
*/ 
17.
$update = substr($update, 0, -1); 
18.
/* 
19.
* Ausgabe zum Prüfen 
20.
*/ 
21.
echo $update; 
22.
// mysql_query($update); 
23.
?>
Natürlich nicht selber getestet, da ich meine eigene user-Tabelle nicht verändern will

Gruß
Günni
Bitte warten ..
Mitglied: Bommel1302
15.12.2012, aktualisiert um 14:40 Uhr
Hallo Günni,

danke für die Unterstützung.

Ich haben das mal probiert und habe das Script von Dir angepasst. Ich habe eine eindutige ID der User und die User sind nur einmal in der Datenbank.

Jedoch bekomme ich einen Fehler beim ausführen.

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /XXXXXX/DBUpdate.php on line 23
update username set

Hier das Script
01.
<?  
02.
include("config/config.php"); 
03.
if ($dbhost=="") { 
04.
	echo"<meta http-equiv=\"refresh\" content=\"0; URL=install.php\">"; 
05.
}else{ 
06.
 
07.
08.
 
09.
@session_start(); 
10.
mysql_connect( "$dbhost", "$dbuser", "$dbpass")  or  die("$wort_konnte_datenbankverbindung_nicht_herstellen"); 
11.
mysql_select_db( "$dbname")  or  die("Datenbank nicht gefunden"); 
12.
 
13.
 
14.
$query = "select id, username, pwd from user";  
15.
$result = mysql_query($query);  
16.
/*  
17.
* Update-Anweisung in Variable speichern  
18.
*/  
19.
$update = "update username set ";  
20.
/*  
21.
* Die Änderungs-Anweisung, where-Klausel und ein Komma an die Anweisung anhängen  
22.
*/  
23.
while($row = mysql_fetch_array($result, MYSQL_ASSOC)){  
24.
$update.=" pwd = PASSWORD(".$row['pwd'].") where host = ".$row['id']." and username = ".$row['username'].",";  
25.
}  
26.
/*  
27.
* Das letzte Komma entfernen  
28.
*/  
29.
$update = substr($update, 0, -1);  
30.
/*  
31.
* Ausgabe zum Prüfen  
32.
*/  
33.
echo $update;  
34.
// mysql_query($update);  
35.
?> 
36.
 
Bitte warten ..
Mitglied: Guenni
15.12.2012 um 17:17 Uhr
Hi Bommel1302,


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource . . .


Das ist jetzt kein direkter Fehler im Script. mysql_fetch_array erwartet ein Abfrageergebnis,

das von mysql_query geliefert wurde. Der Fehler liegt dann in der Formulierung der Abfrage

und/oder in der Korrektheit der abgefragten Tabellen und Feldnamen.

01.
<?php 
02.
$result = mysql_query($query); 
03.
 
04.
if(!$result){ 
05.
 echo mysql_error(); 
06.
 exit; 
07.
08.
?>

Das Update würde eh' nicht funktionieren, da du die tabelle user abfragst . . .

$query = "select id, username, pwd from user";

. . . aber in der Update-Anweisung eine Tabelle namens username angibst . . .

$update = "update username set ";

Gruß
Günni
Bitte warten ..
Mitglied: Bommel1302
15.12.2012 um 19:42 Uhr
Hallo Günni,

habe das Script entsprechend angepasst.
Es läuft jetzt. Leider hat es nicht den gewünschten Effekt.
Bei der Ausführung wird das Passwort ja ausgelesen aber nur der Hash nicht in den Klartext.
Um das Passwort in ein 41Byte Hash zu wandeln muss es ja einmal im Klartext sein um es dann zu wandeln.
Gibt es hier eine Lösung für?

Gruß Marcel
Bitte warten ..
Mitglied: Pjordorf
15.12.2012 um 20:06 Uhr
Hallo,

Zitat von Bommel1302:
Bei der Ausführung wird das Passwort ja ausgelesen aber nur der Hash nicht in den Klartext.
Was denn sonst? Dachtest du das du so das Passwort in Klarschrift geliefert bekommst?

Um das Passwort in ein 41Byte Hash zu wandeln muss es ja einmal im Klartext sein um es dann zu wandeln.
Wie soll es denn anders gehen? Der 41 Byte lange Hasch ist doch neu berechnet und hat mit dem alten 16Byte langen Hadch doch nichts gemeinsam. Wenn du die Passwörter der 1500 Einträge nicht kennst, dann kann nur der Inhaber der Passwörter dies Ändern. Ist doch auch gut so, oder?

Das http://dev.mysql.com/doc/refman/5.1/de/password-hashing.html hast du verstanden welche Problme dir die Umstellung geben kann?

Gruß,
Peter
Bitte warten ..
Mitglied: Bommel1302
15.12.2012 um 20:15 Uhr
Ja ich habe das verstanden.
Leider hat wohl der Hoster etwas an seinen Einstellungen geändert, so das das Script was seit 2Jahren läuft plötzlich nicht mehr läuft und die 16Byte Hash nicht mehr akzeptiert.
Bei der Eingabe des Passworts durch den User wird ein 41Byte Hash erzeugt, welcher natürlich nicht zu dem Hash in der Datenbank passt.
Gibt es hier eine Lösung um das wieder zum laufen zu bekommen?

Gruß Marcel
Bitte warten ..
Mitglied: nxclass
16.12.2012, aktualisiert um 00:09 Uhr
Das klingt mir stark nach einem PHP update, welches das Standard verhalten des Befehls crypt() geändert hat - wenn Du crypt() verwendest, dann lies mal die Beschreibung auf http://php.net/manual/de/function.crypt.php durch und frag ggf deinen Provider nach den PHP Versionen welche verwendet wurden.

EDIT: .. oder gib uns mal einen Code Schnippsel - welcher zeigt wie bei Dir diese Hashes gebaut werden.
EDIT: der Link von Pjordorf ( http://dev.mysql.com/doc/refman/5.1/de/password-hashing.html ) zeigt eigentlich schon das Problem und die Lösung.
benutze OLD_PASSWORD() in der SQL Anweisung wenn der Hash 16 Zeichen lang ist - wenn dieser bei der Prüfung passt, sollte ggf gleich ein Hash mit der aktuellen PASSWORD() Funktion angelegt werden.
Bitte warten ..
Mitglied: Bommel1302
16.12.2012 um 09:56 Uhr
Laut dem Hoster hat sich die PHP Version 5.2 nicht geändert.
Leider bin ich nicht der Experte in PHP und Versuche die Anmeldung wieder zum laufen zu bringen.
Ich versuche mal ob ich den Code finde in dem der Hash gebaut wird.
Ferde ihn dann posten.

@nxclass

kannst du das mir etwas genauer erklären?

Zitat von nxclass:
benutze OLD_PASSWORD() in der SQL Anweisung wenn der Hash 16 Zeichen lang ist - wenn dieser bei der Prüfung passt, sollte
ggf gleich ein Hash mit der aktuellen PASSWORD() Funktion angelegt werden.

Gruß Marcel
Bitte warten ..
Mitglied: nxclass
16.12.2012 um 10:10 Uhr
suche im SQL nach PASSWORD() und ersetze es mit OLD_PASSWORD() - wenn dann die Anmeldung geht, kannst Du dir Gedanken machen wie Du in Zukunft deine Passwörter speicherst.
Bitte warten ..
Mitglied: Bommel1302
16.12.2012, aktualisiert um 21:54 Uhr
Hallo,

die anmeldung funktioniert wieder.
Habe die Querys angepasst und frage jetzt mit einem "or" nach PASSWORD() und OLD_PASSWORD().

Werde jetzt mich drum kümmern, das beim Ausloogen das Passwort im 41Byte Hash geschrieben wird.

Danke nochmal für eure Hilfe.


Gruß Marcel
Bitte warten ..
Ähnliche Inhalte
Windows Userverwaltung
Benutzer Passwort ändern und Exchange Passwort ändern
Frage von Abraham85Windows Userverwaltung2 Kommentare

Servus, ich habe mal eine blöde Frage, da ich zurzeit vor einem Problem stehe: Wir haben folgende Server im ...

Windows 10
Admin Passwort lässt sich nicht ändern
gelöst Frage von Caraboo75Windows 1017 Kommentare

Guten Tag . Habe Windows 10 heruntergeladen und ein Benutzerkonto mit Passwort festgelegt.Sobald ich ein Update mache, verlangt er ...

Microsoft
Maske für Passwort ändern erscheint nicht
Frage von steftsMicrosoft6 Kommentare

Morgen, wir haben in unserer SBS 2011 / Windows 7 Umgebung über die Gruppenrichtlinien eine Passwortänderung alle 40 Tage ...

Windows Server
Windows Kernel event ID 41
gelöst Frage von HeinrichMWindows Server1 Kommentar

Guten Morgen zusammen, ich habe einen Windows Kernel event ID 41 bei einer Hyper-V Maschine. Natürlich habe ich auch ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit29 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

SAN, NAS, DAS
Hilfe beim Einrichten eines Storages (SAN)
gelöst Frage von Vader666SAN, NAS, DAS15 Kommentare

Hallo Admins! Ich bin in einer kleineren Firma und hatte bisher mit dem Thema SAN nur in meiner Ausbildung ...

Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...