vladiii Posted May 9, 2008 Report Posted May 9, 2008 *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<?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:<?phpinclude ("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";}else{echo "Tabelul nu a fost creat";} ?>Urmeaza culoare.php, fisier care poate fi sters dupa ce este rulat o singura data (acesta preia culoarea pixelilor si o baga in bd):<?phpinclude ("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:<FORM ENCTYPE="multipart/form-data" ACTION="" METHOD=POST>Imagine: <INPUT NAME="file_up" TYPE="file"><INPUT TYPE="submit" name="submit" VALUE="Upload"></FORM><?phpinclude ("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/jpegif (!($_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 ! Quote
loki Posted May 9, 2008 Report Posted May 9, 2008 scuze ca sunt pe fuga si m-am uitat ff putin, sper sa nu intreb aiurea:Nu merge mai simplu cu analiza pozei prin comparare cod binar? fara pixel/pixel? Quote
loki Posted May 9, 2008 Report Posted May 9, 2008 Nu MD5. Ma refeream la faptu ca poza e verificata pixel cu pixel. Se poate verifica byte cu byte ca fisier. Si atunci o semnatura poate fi si un wav. Hmm gandindu-ma mai departe... se poate aproxima un wav pt o parola vocala...la o imagine de 150x150 obtinem 22500 culori150*150*3*256=17280000 (jpg/png 24bit) Quote
vladiii Posted May 9, 2008 Author Report Posted May 9, 2008 ^ Ma refeream ca pentru o imagine de 150x150 obtin 22500 pixeli, fiecare cu o anumita culoare. As fi putut compara si bit cu bit, insa mi s-a parut mai marfa pixel cu pixel. Plus de asta e mai educativ. Quote
Vhaerun Posted May 9, 2008 Report Posted May 9, 2008 vladiii , is that your way of saying : "i haven't thought about that" ? Quote
moubik Posted May 9, 2008 Report Posted May 9, 2008 am discutat cu vladii pe privat.astept sa-si spuna el parerea aici.va recomand sa va interesati putin de cum se foloseste criptarea PGPcheie publica/cheie privata. si chiar sa incercati sa folositi PGP la criptarea mailurile. eu o sa trec cat se poate de mult pe asa ceva. Quote
amprenta Posted May 9, 2008 Report Posted May 9, 2008 Probabil la asta te referi http://robyte.tripod.com/pgp.htmEu am folosit si soft pentru criptarea datelor de pe hard de la http://www.pgp.com/solutions/index.html .Mi-a luat cam 2 ore si ceva criptarea unui hard de 120 .Si apoi era simplu inainte sa booteze de pe hard iti cerea sa introduci key phrase sau cum se numea ,deci cuvantul care ti l-ai ales ca parola .Daca introduceai un Live Cd sau ceva si incercai sa accesezi vreo partitie zicea ca ii corupt sau neaccesibil etc .Faza buna era ca decriptarea se petrecea in timp ce foloseai , adica nu trebuia sa astepti alte 2 ore decriptarea .Deci daca aveai informatii ceva pe hard si venea politaiu sa-ti ia hardu , era de ajuns un restart al pc-ului si hardu era in siguranta Quote
puskin Posted May 10, 2008 Report Posted May 10, 2008 treaba e beton nu am ce zice......bv...dar hai sa elaboram putin....sa zicem ca avem un scanner pe care scanam amprenta mainii unui user sau a degetelor, a ochilor a fetei..s.a.m.dfacem un program in vb6(sa nu ne complicam cu alte limbaje ca sa fie facut rapid), preia imaginile de la scanner si le trimite catre modulele php ale tale pentru comparatie.Astfel raspunsul dat de baza de date si modulele facute de tine ori permit accesul catre WWW ori se intorc la programul vb6 care actioneaza o instructiune logica catre o usa de acces, catre deschiderea usei locuintei, masinii..etc posibilitati nelimitateCa risc exista posibilitati de interpretare sql cu factor de risc dar care se pot elimina usor...atceva mai poate fi facut un decodor de pixeli, pixelul avand o harta exacta RGB dar e destul de complicat asa ca esti pe drumul cel bun.Nu mai zic ca un soft de genul poate trece lejer de 10000 $ Quote
tw8 Posted May 11, 2008 Report Posted May 11, 2008 treaba e beton nu am ce zice......bv...dar hai sa elaboram putin....sa zicem ca avem un scanner pe care scanam amprenta mainii unui user sau a degetelor, a ochilor a fetei..s.a.m.dfacem un program in vb6(sa nu ne complicam cu alte limbaje ca sa fie facut rapid), preia imaginile de la scanner si le trimite catre modulele php ale tale pentru comparatie.Astfel raspunsul dat de baza de date si modulele facute de tine ori permit accesul catre WWW ori se intorc la programul vb6 care actioneaza o instructiune logica catre o usa de acces, catre deschiderea usei locuintei, masinii..etc posibilitati nelimitateCa risc exista posibilitati de interpretare sql cu factor de risc dar care se pot elimina usor...atceva mai poate fi facut un decodor de pixeli, pixelul avand o harta exacta RGB dar e destul de complicat asa ca esti pe drumul cel bun.Nu mai zic ca un soft de genul poate trece lejer de 10000 $Take it easy .In primul rand, de cate ori ti se intampla sa iti scanezi amprenta astfel incal fiecare pixel sa coincida, adica sa o suprapui perfect peste amprenta initiala ca sa poti compara ?Sau ce se intampla daca rezolutia ii diferita (presupunand ca vrei sa accesezi site-ul si de altundeva, nu doar de pe calculatorul tau)?Un soft care sa foloseasca recunoasterea formelor ca sa redimensioneaze si roteasca amprenta scanata astfel incat sa se suprapuna perfect peste cea salvata ar fi intradevar ceva foarte interesant si care ar face banii.Softul asta nu poate ramane decat autentificare pe baza de imagine (care poate fi, desigur, si o amprenta) dar care trebuie sa fie mereu aceeasi .@vladiii: Sper sa nu intelegi gresit ce am vrut sa spun, stii foarte bine ca iti respect munca . Quote
dranaxum Posted May 11, 2008 Report Posted May 11, 2008 Exista 2 metode viabile pentru a face asa ceva: pattern matching sau minutia (care este momentan standardul).Ambele algoritme insa necesita foarte foarte multa matematica si algoritmica: feature extraction, edge detection etc.In primul rand, de cate ori ti se intampla sa iti scanezi amprenta astfel incal fiecare pixel sa coincida, adica sa o suprapui perfect peste amprenta initiala ca sa poti compara ?Sau ce se intampla daca rezolutia ii diferita (presupunand ca vrei sa accesezi site-ul si de altundeva, nu doar de pe calculatorul tau)?Un soft care sa foloseasca recunoasterea formelor ca sa redimensioneaze si roteasca amprenta scanata astfel incat sa se suprapuna perfect peste cea salvata ar fi intradevar ceva foarte interesant si care ar face banii. Nu te poti baza pe asa ceva, trebuie sa gasesti in poza originala un centru de interes (daca folosesti pattern matching).Minutia insa nu merge pe ideea de a lua in considerare toata curba, ci doar anumite coordonate din poza amprentei (spre exemplu: bifurcatiile).PS: RSA (folosit de PGP) a fost spart prin Lenstra attack, din cate vad insa nu au fost facute publice detaliile despre atac. Mai nou exista Eliptic Curve pentru criptare pe baza de cheie publica. Quote
puskin Posted May 11, 2008 Report Posted May 11, 2008 *Pe baza de imagine, insa "amprenta" sunt mai bine.......Daca vrei sa realizezi un astfel de soft eu ma bag sa te ajut....Numai bine! Quote
moubik Posted May 11, 2008 Report Posted May 11, 2008 va credeti experti in retele neuronale ? ) Quote
RealitySucks Posted May 29, 2008 Report Posted May 29, 2008 mi s-a parut interesanta chestia, chiar foarte... si ma gandeam un pic mai departe la ce a zis lokipaki, daca faci aceeasi chestie, dar pentru un fisier wav/mp3... audio in general si setezi pentru fiecare byte o marja de eroare, nu s-ar putea face deja soft de voice recognition? Quote