Gå til innhold

random passord, sende mail, oppdatere mysql db?


Anbefalte innlegg

Hei

Går det ann å dekryptere et md5 kryptert passord.

I så fall hvordan.

Holder på å lage en "glemt passord" side. Den skal enten lage et random passord, oppdatere bruker og sende mail med passord til brukeren,,, Eller hente nåverende passord fra databasen dekryptere det og sende det til brukeren.

Er takknemmelig for alle svar. :thumbup:

Endret av Filip_KickAss
Lenke til kommentar
Videoannonse
Annonse

Det er nok meeeeeeget vanskelig. For vanskelig. Du må vel bruke ren makt og gjette deg frem, eller svært avanserte algorimter. Uansett krever det masse power og tar alt for lang tid. md5-kryptering er *sikkert*, så du må nok gå for den første løsningen din. Et spørsmål&svar-greie for å få utlevert passord på mail er også populært om dagen :)

Endret av Blib
Lenke til kommentar

md5 gjør om hvilken som helst streng til en 32-bokstavers alfanumerisk streng. Til og med en tekst på tredve sider blir til 32 bokstaver. Ergo representerer ikke md5-strengen (etter kryptering) noen deler av den opprinnelige strengen. Den følger bare et par algoritmer til å gjøre strengen om til en kortere "checksum".

 

md5 kan derfor ikke dekrypteres, men det kan brute-forces. Å brute-force en full md5-streng tar dog altfor lang tid. Min gjetning vil være at det vil ta ca. 5 timer å brute-force en md5-streng på en gjennomsnittlig webserver, hvis ikke man har flaks.

Lenke til kommentar
Det er fint mulig og knekke dem, folk her på forumet har lagt ut slike koder før men nei, de kodene skal ikke bli lagt ut her, ei heller linker til slike koder da cracking er cracking.

Hva mener du med det? :ermm:

 

EDIT: Forstod hva du mente med det etter postingen min...

Jeg trodde du mente random password tingen, men du mente så klart dekryptering av md5 :p

Endret av Filip_KickAss
Lenke til kommentar

Under er ein kodesnutt eg skreiv når eg begynte med php, sjølve php scriptinga er ikkje så bra som den burde være. Men den er vel eit godt eksempel.

 

Scriptet, virker slikt at bruker skriver inn emailen sin, deretter sender skriptet ein fårespørsel email til bruker, og spør om han virkeleg vil skifte passordet sitt. Vist bruker vil det så trykker han på ein link i emailen. Så lenge bruker gjør dette innen 24 timer vil han få mulighet til å velge eit nytt passord. Vist han gjør det etter 24 timer så vil han få ein error beskjed.

 

Du kan sjekke det ut vist du ennå ikkje er sikker på korleis du skal gjør.

 

Har lagt alle filene som blir brukt her:

http://www.myllclan.com/Test/passord.zip

 

<?php
$url = "url til siden/password.php?id=Password&action=pwdrequest";
$url2 = "url til siden/password.php?id=Password&action=changepwd";
if ($lostpwd == "yes") {
include("Inc/Vheader.inc.php");
include("Inc/Lostpwd.inc.php");
include("Inc/Vfooter.inc.php");
}
elseif ($submit AND $lostpwd == "yes2") {
$sql = "SELECT * FROM $userdatabase2 WHERE email='$email'";
 $result = mysql_query($sql);
 if (!$result) {
 include("Inc/Vheader.inc.php");
 include("Inc/Error2.inc.php");
 include("Inc/Vfooter.inc.php");exit;
 }
 $sql = "SELECT * FROM $userdatabase3 WHERE email='$email'";
 $result2 = mysql_query($sql);
 if (!$result2) {
 include("Inc/Vheader.inc.php");
 include("Inc/Error2.inc.php");
 include("Inc/Vfooter.inc.php");exit;
 }

 $number = mysql_num_rows($result);
 $number2 = mysql_num_rows($result2);

if (($number == 0) && ($number2 == 0)) {
 $Errormsg = "Error1"; 
 include("Inc/Vheader.inc.php");
 include("Inc/Lostpwd.inc.php");
 include("Inc/Vfooter.inc.php");
 }
else {
 if (!empty($number)) $lostpwddatabase = $userdatabase2;
 else $lostpwddatabase = $userdatabase3; 
 
 $randomhash = sprintf('%c%c%c%c%c%c%c%c', mt_rand(97,122), mt_rand(65,90), mt_rand(48,57), mt_rand(97,122), mt_rand(48,57), mt_rand(65,90), mt_rand(97,122), mt_rand(48,57));
 $encryptedhash = md5($randomhash);

 if (!empty($number)) {
 	$usernr = mysql_result($result,0,"uid");
 	$username = mysql_result($result,0,"username");
 	$contact = mysql_result($result,0,"contact");
 	}
 else {
 	$usernr = mysql_result($result2,0,"uid");
 	$username = mysql_result($result2,0,"username");
 	$name = mysql_result($result2,0,"name");
 	$surname = mysql_result($result2,0,"surname");
 	}

 $sql = "UPDATE $lostpwddatabase SET pwdrequest='$encryptedhash', pwddaterequest=UNIX_TIMESTAMP() WHERE email='$email'";
 if (@mysql_query($sql)) {
 echo("");
 } else {
 include("Inc/Vheader.inc.php");
 include("Inc/Error2.inc.php");
 include("Inc/Vfooter.inc.php");exit;
 }
 
 if (!empty($number)) $email_content4 = "$email_content41 $contact $email_content44 $url&u=$usernr&hash=$encryptedhash$email_content42 $username $email_content43";
 else $email_content4 = "$email_content41 $name, $surname $email_content44$url&u=$usernr&hash=$encryptedhash&sub=yes$email_content42 $username $email_content43";

 mail("$email", "$email_subject4", "$email_content4", "From: $email_sender2\r\nBounce-to: $email");
 include("Inc/Vheader.inc.php");
 include("Inc/Lostpwd2.inc.php");
 include("Inc/Vfooter.inc.php");
 ?>
 <meta http-equiv ="refresh" content = "<?php print("$refreshtime");?>; URL=upload.php">
 <?php
 }
}
elseif ($action == "pwdrequest" AND $u AND $hash) {

if (isset($sub) && $sub == "yes") { $info=mysql_query("SELECT username,email,name,surname,disabled,pwdrequest,pwddaterequest FROM $userdatabase3 WHERE uid='$u'");
}
else {$info=mysql_query("SELECT username,email,contact,disabled,pwdrequest,pwddaterequest FROM $userdatabase2 WHERE uid='$u'");}

if ($info && isset($sub) && $sub == "yes") {
$result2 = mysql_fetch_array($info);
$user = $result2["username"];
$email = $result2["email"];
$name = $result2["name"];
$surname = $result2["surname"];
$userbanned = $result2["disabled"];
$realhash = $result2["pwdrequest"];
$datehash = $result2["pwddaterequest"];
 }
elseif ($info) {
$result2 = mysql_fetch_array($info);
$user = $result2["username"];
$email = $result2["email"];
$contact = $result2["contact"];
$userbanned = $result2["disabled"];
$realhash = $result2["pwdrequest"];
$datehash = $result2["pwddaterequest"];
 }

$datehash2 = $datehash + 86400;

if (!$info OR $userbanned == 1) {
 $Errormsg = "Error1"; 
 include("Inc/Vheader.inc.php");
 include("Inc/Pwdrequest.inc.php"); 
 include("Inc/Vfooter.inc.php");
 }

elseif ($hash != $realhash) {
 $Errormsg = "Error2"; 
 include("Inc/Vheader.inc.php");
 include("Inc/Pwdrequest.inc.php"); 
 include("Inc/Vfooter.inc.php");
 }

elseif ($datehash > $datehash2) { 
 $Errormsg = "Error3"; 
 include("Inc/Vheader.inc.php");
 include("Inc/Pwdrequest.inc.php"); 
 include("Inc/Vfooter.inc.php");
 }
else {
 if (isset($sub) && $sub == "yes") $lostpwddatabase = $userdatabase3;
 else $lostpwddatabase = $userdatabase2;
 $randompass = sprintf('%c%c%c%c%c%c%c%c', mt_rand(97,122), mt_rand(65,90), mt_rand(48,57), mt_rand(97,122), mt_rand(48,57), mt_rand(65,90), mt_rand(97,122), mt_rand(48,57));
 $encryptpw = md5($randompass);

 $sql = "UPDATE $lostpwddatabase SET password='$encryptpw' WHERE uid='$u'";
 if (@mysql_query($sql)) {
 echo("");
 } else {
 include("Inc/Vheader.inc.php");
 include("Inc/Error2.inc.php");
 include("Inc/Vfooter.inc.php");exit;
 }
 
 if (isset($sub) && $sub == "yes") $names = "$name, $surname";
 else $names = "$contact";

 $email_content2 = "$email_content51 $names$email_content55 $user$email_content52 $randompass$email_content53 $url2 $email_content54";
 mail("$email", "$email_subject5", "$email_content2", "From: $email_sender2\r\nBounce-to: $email");
 include("Inc/Vheader.inc.php");
 include("Inc/Pwdrequest.inc.php");
 include("Inc/Vfooter.inc.php");
 ?>
 <meta http-equiv ="refresh" content = "60; URL=upload.php">
 <?php
 }
}
elseif ($action == "changepwd") {
include("Inc/Vheader.inc.php");
include("Inc/Changepwd.inc.php");
include("Inc/Vfooter.inc.php");
}
elseif ($submit AND $action == "changepwd2") {
//Checking if the username field is filled out
if (!$user) {
 $Errormsg = "Error1";
 include("Inc/Vheader.inc.php");
 include("Inc/Changepwd.inc.php");
 include("Inc/Vfooter.inc.php");
    }
//Checking if old password field is filled out
elseif (!$oldpass) {
 $Errormsg = "Error2";
 include("Inc/Vheader.inc.php");
 include("Inc/Changepwd.inc.php");
 include("Inc/Vfooter.inc.php");
    }
//Checking if password field is filled out
elseif (!$pass) {
 $Errormsg = "Error3";
 include("Inc/Vheader.inc.php");
 include("Inc/Changepwd.inc.php");
 include("Inc/Vfooter.inc.php");
    }
//Checking if password2 field is filled out
elseif (!$pass2) {
 $Errormsg = "Error4";
 include("Inc/Vheader.inc.php");
 include("Inc/Changepwd.inc.php");
 include("Inc/Vfooter.inc.php");
    }
//Checking if the passwords is identical
elseif ($pass != $pass2) {
 $Errormsg = "Error5";
 include("Inc/Vheader.inc.php");
 include("Inc/Changepwd.inc.php");
 include("Inc/Vfooter.inc.php");
 }
else {
 $encryptoldpw = md5($oldpass);

 $sql=mysql_query("SELECT * FROM $userdatabase2 WHERE username='$user' AND password='$encryptoldpw'");
 $result = mysql_query($sql);
 $sql2=mysql_query("SELECT * FROM $userdatabase3 WHERE username='$user' AND password='$encryptoldpw'");
 $result2 = mysql_query($sql2);

 $number = @mysql_num_rows($result);
 $number2 = @mysql_num_rows($result2);

 if (($number == 0) && ($number2 == 0)) {
 	$Errormsg = "Error6"; 
 	include("Inc/Vheader.inc.php");
 	include("Inc/Changepwd.inc.php");
 	include("Inc/Vfooter.inc.php");
 	}
 else {
 	$encryptpw = md5($pass);
 	
 	if (!empty($number)) $changepwddatabase = $userdatabase2;
 	else $changepwddatabase = $userdatabase3;

 	$sql = "UPDATE $changepwddatabase SET password='$encryptpw' WHERE username='$user'";
   if (@mysql_query($sql)) {
   echo("");
   } else {
   include("Inc/Vheader.inc.php");
   include("Inc/Error2.inc.php");
   include("Inc/Vfooter.inc.php");
   exit;
   }
 	include("Inc/Vheader.inc.php");
 	include("Inc/Changepwd2.inc.php");
 	include("Inc/Vfooter.inc.php");
 	?>
 	<meta http-equiv ="refresh" content = "<?php print("$refreshtime");?>; URL=upload.php">
 	<?php
 	}
 }
}
?>

Lenke til kommentar

lag en php fil som sender en mail til brukeren som vil endre sitt passord med en link som har en random id med i den, denne iden kan du jo f.eks lagre i en egen database e.l.

 

Brukeren må trykke på denne linken for å komme til en ny php fil som endrer

passordet til en ny random streng som sendes til brukeren via epost igjen. i det scriptet sender mailen får du det også til å endre passordet i databasen (UPDATE e.l.), dog hvis den tilfeldige id'en som du inkluderte i den første mailen ikke er over 24timer gammel.

 

Kommer ikke på noen enklere metode :\

Lenke til kommentar
Det er nok meeeeeeget vanskelig. For vanskelig. Du må vel bruke ren makt og gjette deg frem, eller svært avanserte algorimter. Uansett krever det masse power og tar alt for lang tid. md5-kryptering er *sikkert*, så du må nok gå for den første løsningen din. Et spørsmål&svar-greie for å få utlevert passord på mail er også populært om dagen :)

andre burkere her på forumet sier at md5 er forholdsvis lett å knekke...

 

http://forum.programmer.no/index.php?showtopic=270927&st=20

 

kun sekunder for a knekke et 4 bokstavers md5 kryptert passord...

Lenke til kommentar

Alt kan være lett igrunnen. Ein lang tekst omformert til md5 er mye vanskeligere å decryptere enn 4 bokstaver.

 

Lurer på om eg skal legge til ein fil, og inkludere den som salt. Det vil iallefall gjøre det mye vanskelegere å "force brute" ein md5 hash.

 

Det at nokon kansje har ein måte å "dekryptere" md5 hashs utenom brute force har eg liten tru på, siden dei då kunne solgt den løysningen for millioner av kroner. Tenk å laste ned ein film ved å kopiere md5 hashen og deretter decryptere den... Det ville vært saker hehe.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...