Tutoriale Linux, Tutoriale Programare, Tutoriale retele, tutoriale photoshop

*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.
conexiune.php

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:
http://i31.tinypic.com/hvphck.jpg
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. Daca descoperiti buguri postati-le aici. De mentionat ca nu merge pe IE, insa functioneaza pe Mozilla, Opera, Safari. Bafta !
AUTOR: Vladiii

Ethical hacking and programming community