Filehost.ro - gazduire fisiere
Danutz
Bine ati venit !!! by Danutz Pe acest forum puteti gasi tot ce va intereseaza,aici putem vorbi despre orice !!!
Nou pe simpatie:
stephy_22 pe Simpatie.ro
Femeie
25 ani
Prahova
cauta Barbat
25 - 53 ani
DanutzReguliInregistrareLoginPozeNu sunteti logat. Lista Forumurilor Pe Tematici
Danutz / ---===Programe Securitate===--- /

Autentificare pe baza de "amprenta"

Pagini: 1  
#1
danutz25
Administrator
Postari: 653
*Pe baza de imagine, insa "amprenta" sunt mai bine.
Acesta e un cod PHP care permite autentificare pe un site web (admin panel & other shitz) folosind o imagine. Daca pixelii imaginii uploadate in acel moment corespund cu cei din baza de date, atunci se face autentificarea, altfel nu.
Folderul trebuie sa aiba chmod777 (deoarece imaginea se uploadeaza, i se preiau culorile pixelilor, apoi se sterge).
Nu este ceva extraordinar si iesit din comun, dar ma plictiseam aseara. Care ar fi avantajele ? In primul rand nu se poate ghici parola, deoarece la o imagine de 150x150 obtinem 22500 culori (8 caractere parca). Dezavantaje ? Nu stiu cat de fiabil este si partea care nu imi place mie este ca trebuie mereu uploadata imaginea.
         Cod:

<?php
$hostname="localhost";
$username="username";
$password="password";
$database="db";

$conexiune=mysql_connect($hostname, $username, $password)
or die ("eroare !";

$bazadate=mysql_select_db($database, $conexiune)
or die ("eroare !";
?>

Acum trebuie uploadata imaginea pe server, eu mi-am ales-o pe urmatoarea:



Apoi cream tabela in BD:
Cod:

<?php
include ("conexiune.php";

$delete="DROP TABLE IF EXISTS tabela";
mysql_query($delete, $conexiune);

$table="CREATE TABLE tabela (
id int(3) NOT NULL AUTO_INCREMENT,
culoare int(200) NOT NULL ,
PRIMARY KEY (id)) TYPE=MyISAM";
if(mysql_query($table)){
echo "Tabelul a fost creat<br/>";
}
else{
echo "Tabelul nu a fost creat<br/>";
}

?>

Urmeaza culoare.php, fisier care poate fi sters dupa ce este rulat o singura data (acesta preia culoarea pixelilor si o baga in bd):
Cod:

<?php
include ("conexiune.php";
$im = imagecreatefromjpeg("imagine.jpg";
for($i=0; $i<150; $i++)
    {
     for($j=0; $j<150; $j++)
         {
           //Extragem culoarea si o introducem in BD
           $rgb = imagecolorat($im, $i, $j);
           $sql = "INSERT INTO tabela (culoare) VALUES ('".$rgb."')";
           if(mysql_query($sql)) { echo "added"; }
           else { mysql_error(); }
         }
    }

mysql_close($conexiune);
?>

Si partea finala... index.php:
Cod:

<FORM ENCTYPE="multipart/form-data" ACTION="" METHOD=POST>
Imagine: <INPUT NAME="file_up" TYPE="file">
<INPUT TYPE="submit" name="submit" VALUE="Upload">
</FORM>

<?php
include ("conexiune.php";

if($_POST['submit'])
{
$file_upload="true";
$file_up_size=$_FILES['file_up'][size];
if ($_FILES[file_up][size]>17000)
    {
      die("dimensiune prea mare";
      $file_upload="false";
    }
//Lasam doar jpg/jpeg
if (!($_FILES[file_up][type] =="image/jpeg"
    {
      die ("nu e jpg/jpeg";
      $file_upload="false";
    }
$file_name=$_FILES[file_up][name];
//Generam un nume pt. imagine
$x[0]=rand(0, 10);
$x[1]=rand(0, 10);
$x[2]=rand(0, 10);
$x[3]=rand(0, 10);
$x[4]=rand(0, 10);
$add="$x[0]$x[1]$x[2]$x[3]$x[4]$file_name";
if($file_upload=="true"
   {
     if (file_exists($add))
        {
           die ("Fisierul ales exista deja pe server.";
        }
     else
        {
           if(move_uploaded_file ($_FILES[file_up][tmp_name], $add))
             {
                $link=$add;
                $hand=imagecreatefromjpeg($add);
                //Preluam dimensiunile
                $x=imagesx($hand);
                $y=imagesy($hand);
                if ($x!= 150 || $y!=150)
                    {
                       unlink($link);
                       die ("dimensiunile nu corespund";
                    }
                //Daca dimensiunile sunt cele bune...
                else
                    {
                       $count=0;
                       for ($i=0; $i<150; $i++)
                           {
                              for ($j=0; $j<150; $j++)
                                  {
                                     $pixel[$count]=imagecolorat($hand, $i, $j);
                                     $count++;
                                  }
                           }
                       unlink($link);
                       $count=0;
                       $asd="true";
                       //Extragem din DB
                       $sql="SELECT * FROM tabela";
                       $sql=mysql_query($sql);
                       while($row=mysql_fetch_row($sql))
                            {
                               if ($pixel[$count]!=$row[1])
                                  {
                                    $asd="false";
                                  }             
                               $count++;
                            }
                       if ($asd=="false" { echo "parola gresita !"; }
                       else if($asd=="true" { echo "asta e parola!"; }
                       else { die("eroare !"; }
         }
    } } } }
mysql_close($conexiune);
?>


Asta e tot.De mentionat ca nu merge pe IE, insa functioneaza pe Mozilla, Opera, Safari. Bafta !

Autentificare pe baza de "amprenta" - *Pe baza de imagine, insa "amprenta" - ---===Programe Securitate===---
Autentificare pe baza de "amprenta" – poza de danutz25, in ---===Programe Securitate===--- · 1.5KB


 
   
Pagini: 1  
Mergi la