Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: błąd przy tworzeniu listy md5
Forum PHP.pl > Forum > PHP
siurek22
Napisałem oto taki skrypt:
  1. <?php
  2.     $alphabet = array(
  3.                 1=>'a',
  4.                 2=>'b',
  5.                 3=>'c',
  6.                 4=>'d',
  7.                 5=>'e',
  8.                 6=>'f',
  9.                 7=>'g',
  10.                 8=>'h',
  11.                 9=>'i',
  12.                 10=>'j',
  13.                 11=>'k',
  14.                 12=>'l',
  15.                 13=>'m',
  16.                 14=>'n',
  17.                 15=>'o',
  18.                 16=>'p',
  19.                 17=>'q',
  20.                 18=>'r',
  21.                 19=>'s',
  22.                 20=>'t',
  23.                 21=>'u',
  24.                 22=>'v',
  25.                 23=>'w',
  26.                 24=>'x',
  27.                 25=>'y',
  28.                 26=>'z',
  29.                 27=>'0',
  30.                 28=>'1',
  31.                 29=>'2',
  32.                 30=>'3',
  33.                 31=>'4',
  34.                 32=>'5',
  35.                 33=>'6',
  36.                 34=>'7',
  37.                 35=>'8',
  38.                 36=>'9',
  39.                 37=>'-',
  40.                 38=>'_'
  41.                 );
  42.         $num=1000;
  43. $z=0;
  44. $i=0;
  45.     while ($i < $num) {
  46.     $los=@mysql_query("SELECT * FROM ile");
  47.                 $logs=@mysql_result($los,$z,"ile");
  48.                 $logs2=@mysql_result($los,$z,"ile2");
  49.                 $logs3=@mysql_result($los,$z,"ile3");
  50.                 $logs4=@mysql_result($los,$z,"ile4");
  51.                 $logs5=@mysql_result($los,$z,"ile5");
  52.                 $logs6=@mysql_result($los,$z,"ile6");
  53.                 $logs7=@mysql_result($los,$z,"ile7");
  54.                 $logs8=@mysql_result($los,$z,"ile8");
  55.                 $logs9=@mysql_result($los,$z,"ile9");
  56.         $aza='1';
  57.         $aba='39';    
  58.                     if($logs9=='38')
  59.                 {
  60.                 mysql_query("UPDATE ile SET ile9=0, ile8=ile8+1 WHERE id=1");
  61.                 }    
  62.                 if($logs8==$aba)
  63.                 {
  64.                 mysql_query("UPDATE ile SET ile8='$aza', ile7=ile7+1 WHERE id=1");    
  65.                             }    
  66.                     if($logs7==$aba)
  67.                 {
  68.                 mysql_query("UPDATE ile SET ile7='$aza', ile6=ile6+1 WHERE id=1");
  69.                 }    
  70.                 if($logs6==$aba)
  71.                 {
  72.                 mysql_query("UPDATE ile SET ile6='$aza', ile5=ile5+1 WHERE id=1");
  73.                 }    
  74.                 if($logs5==$aba)
  75.                 {
  76.                 mysql_query("UPDATE ile SET ile5='$aza', ile4=ile4+1 WHERE id=1");
  77.                 }    
  78.                                 if($logs4==$aba)
  79.                 {
  80.                 mysql_query("UPDATE ile SET ile4='$aza', ile3=ile3+1 WHERE id=1");
  81.                 }    
  82.                                 if($logs3==$aba)
  83.                 {
  84.                 mysql_query("UPDATE ile SET ile3='$aza', ile2=ile2+1 WHERE id=1");
  85.                 }    
  86.                                 if($logs2==$aba)
  87.                 {
  88.                 mysql_query("UPDATE ile SET ile2='$aza', ile1=ile1+1 WHERE id=1");
  89.                 }    
  90.                                                 if($logs==0)
  91.                 {$logs='';}
  92.                 if($logs2==0)
  93.                 {$logs2='';}
  94.                 if($logs3==0)
  95.                 {$logs3='';}
  96.                 if($logs4==0)
  97.                 {$logs4='';}    
  98.                 if($logs5==0)
  99.                 {$logs5='';}
  100.                 if($logs6==0)
  101.                 {$logs6='';}
  102.                 if($logs7==0)
  103.                 {$logs7='';}    
  104.                             if($logs8==0)
  105.                 {$logs8='';}    
  106.                             if($logs9==0)
  107.                 {$logs9='';}
  108.                                     $litera=$alphabet[$logs];
  109.     $litera2=$alphabet[$logs2];
  110.     $litera3=$alphabet[$logs3];
  111.     $litera4=$alphabet[$logs4];
  112.     $litera5=$alphabet[$logs5];
  113.     $litera6=$alphabet[$logs6];
  114.     $litera7=$alphabet[$logs7];
  115.     $litera8=$alphabet[$logs8];
  116.     $litera9=$alphabet[$logs9];
  117.     $haslo=$litera.$litera2.$litera3.$litera4.$litera5.$litera6.$litera7.$litera8.$litera9;
  118.     $md5=md5($haslo);
  119.                 
  120.     @mysql_query("INSERT INTO md5 VALUES ('','$haslo','$md5')");    
  121.     @mysql_query("UPDATE ile SET ile9=ile9+1");
  122.         
  123.     $i++;
  124.     }
  125. ?>


ktory kozysta z tabel

  1. <?php
  2. $query1= "CREATE TABLE md5
  3. (id int(60) NOT NULL auto_increment,
  4. haslo varchar(15) NOT NULL, 
  5. pass varchar(34) NOT NULL, 
  6.  
  7. PRIMARY KEY (id))";
  8. mysql_query($query1);
  9.  
  10. $query2= "CREATE TABLE ile
  11. (id int(60) NOT NULL auto_increment,
  12. ile int(2) NOT NULL, 
  13. ile2 int(2) NOT NULL, 
  14. ile3 int(2) NOT NULL, 
  15. ile4 int(2) NOT NULL, 
  16. ile5 int(2) NOT NULL, 
  17. ile6 int(2) NOT NULL, 
  18. ile7 int(2) NOT NULL, 
  19. ile8 int(2) NOT NULL, 
  20. ile9 int(2) NOT NULL, 
  21.  
  22. PRIMARY KEY (id))";
  23. mysql_query($query2);
  24. ?>


skrypt niby działa poprawnie ale do czasu gdy zajrzy się zawartości tabeli md5

jak widać na obrazku przy rekordzie 1483 który powinien zawierać "aaa" mamy tylko "a" sytuacja powtarza się przy każdym wyrażeniu 3 znakowym i wyżej

siedzę nad tym już 3 dzień i nie mogę dojść dlaczego tak się dzieje sad.gif
webdice
Popraw bbcode na odpowiednie.
siurek22
ok juz poprawilem bbcode
DeyV
kilka pytań:
- czy w tabeli ile jest choć 1 rekord?
- dlaczego korzystasz z tabeli ile, zamiast przechowywać tą wartość w tablicy?
- co tak naprawdę chcesz osiągnąć? Generator kodów md5?
siurek22
1) tak jest rekord ktory przy starcie ma wartosci
id | ile | ile2 | ile3 | ile4 | ile5 | ile6 | ile7 | ile8 | ile9
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1

2) skrypt będzie uruchamiany wielokrotnie więc trzymam dane w mysql wiem że mogę zapisywać dane do mysql pod koniec wykonania skryptu ale gdy dam pętle na 100000 i akurat mi siądzie prąd to troche szkoda
3) chcę zrobić baze hashy md5 oczywiście planuje skończyć na hasłach 6 znakowych bo gdyby mój pc miałby listować dla np 9 znakowych to niewiem czy dożyłbym czasu kiedy by skończył to robić tongue.gif chyba że ktoś jest tak chojny i użyczy mi serwerowni :] (w co wątpie)
wert1
siurek22, niby w sql nie widac ale jak się wyciągnie przez php to jest winksmiley.jpg

  1. <?
  2. $_1 = $_GET['md5'];
  3.  
  4. $query="SELECT haslo FROM md5 WHERE pass='".$_1."'";
  5. $result=mysql_query($query);
  6.  
  7. list($md5) = mysql_fetch_array ($result, MYSQL_NUM);
  8. echo $md5;
  9. ?>


ps: mógłbys napisać na gg//6865186

bawiłem się tym skryptem i mam już wszyskie hache do aaaa tongue.gif
phpion
Skoro bawicie się w generowanie tabeli z hasłami md5 może przyda wam się moja funkcja, której zadaniem jest tworzenie różnych kombinacji na podstawie dostarczonej tablicy.
  1. <?php
  2. function array_combination(&$array, &$chars, $length, $startWith = '', $currentLength = 0) {
  3. if ($currentLength < $length) {
  4. foreach ($chars as $char) {
  5. array_push($array, $startWith.$char);
  6.  
  7. array_combination($array, $chars, $length, $startWith.$char, $currentLength+1);
  8. }
  9. }
  10. }
  11.  
  12. $array = array();
  13. $chars = array_merge(range('a', 'z'), range('A', 'Z'), range('0', '9'), array('-', '_'));
  14.  
  15. array_combination($array, $chars, 3);
  16.  
  17. print_r($array);
  18. ?>

Przyjemnej zabawy biggrin.gif
pyro
Cytat(wert1 @ 10.05.2008, 12:55:13 ) *
siurek22, niby w sql nie widac ale jak się wyciągnie przez php to jest winksmiley.jpg

  1. <?php
  2. $_1 = $_GET['md5'];
  3.  
  4. $query=&#092;"SELECT haslo FROM md5 WHERE pass='\".$_1.\"'\";
  5. $result=mysql_query($query);
  6.  
  7. list($md5) = mysql_fetch_array ($result, MYSQL_NUM);
  8. echo $md5;
  9. ?>


ps: mógłbys napisać na gg//6865186

bawiłem się tym skryptem i mam już wszyskie hache do aaaa tongue.gif


o ile dobrze pamietam nazwy zmiennych nie moge sie rozpoczynac od '_' poza superglobalnymi...
webdice
Cytat(pyro @ 10.05.2008, 14:34:19 ) *
o ile dobrze pamietam nazwy zmiennych nie moge sie rozpoczynac od '_' poza superglobalnymi...


To źle pamiętasz. Polecam lekturę.
wert1
ustawiłem sobie crona z tym skrypcikiem co minute na 3 godziny tongue.gif

wróciłem a tu patrze :


http://wert.waw.pl/wert/spam/php/123.PNG

normalnie <szok> ktoś wie dlaczego ?

phpion
Cytat(wert1 @ 10.05.2008, 19:42:41 ) *
normalnie <szok> ktoś wie dlaczego ?

Źle napisany skrypt?
wlamywacz
Ustaw w bazie pole tam gdzie masz niezakodowane hasło na unique i po kłopocie jeśli nie możesz sobie poradzić ze skryptem tongue.gif
pojas
Cytat
chcę zrobić baze hashy md5 oczywiście planuje skończyć na hasłach 6 znakowych

Nie wiem czy dobrze liczę, ale dochodzę do takiego wyniku :
(36^6 + 36^5 + 36^4 + 36^3 + 36^2 + 36^1) ciągów znakowych, każdy po 128 bitów daje ponad 33 GB, blinksmiley.gif a to tylko same skróty md5...
Przydałoby się z 50 GB, natomiast o całkowitym czasie pracy nawet nie myślę.

Przykładowo dla 10 znakowych ciągów wyliczam ok. 56 000 000 GB aaevil.gif


___
Jeśli się mylę, to mnie poprawcie
siurek22
Cytat(wert1 @ 10.05.2008, 12:55:13 ) *
siurek22, niby w sql nie widac ale jak się wyciągnie przez php to jest winksmiley.jpg

  1. <?php
  2. $_1 = $_GET['md5'];
  3.  
  4.       $query=&#092;"SELECT haslo FROM md5 WHERE pass='\".$_1.\"'\";
  5.       $result=mysql_query($query);
  6.  
  7.       list($md5) = mysql_fetch_array ($result, MYSQL_NUM);
  8. echo $md5;
  9. ?>


ps: mógłbys napisać na gg//6865186

bawiłem się tym skryptem i mam już wszyskie hache do aaaa tongue.gif

niestety mylisz sie testowalem i hasha niema...
Cytat
Przydałoby się z 50 GB, natomiast o całkowitym czasie pracy nawet nie myślę.

O oto sie akurat niemart wszystko mam wyliczone...
rav1989
Witam

A ja mam taką sugestię. Lepiej do tego celu wykorzystać rainbowtables. Co prawda generowanie "tęczowych tablic" trochę trwa ale zajmuje dużo mniej miejsca np.
tablica wygenerowana
Kod
rtgen md5 loweralpha-numeric 1 7 0 2400 40000000 all

czyli hasła od 1 do 7 znaków małe litery i cyfry zajmuje 610MB.
oczywiście trzeba mieć kilka takich tablic ja mam 5
sam takie coś robię i jestem na etapie generowania ostatniej tablicy, potem już tylko odpowiedni skrypt php. Samo wyszukanie hashu md5 trwa parę sekund.

jak by ktoś chciał sobie wygenerować takie tablice to podaję kod:

Kod
rtgen md5 loweralpha-numeric 1 7 1 2400 40000000 all
rtgen md5 loweralpha-numeric 1 7 2 2400 40000000 all
rtgen md5 loweralpha-numeric 1 7 3 2400 40000000 all
rtgen md5 loweralpha-numeric 1 7 4 2400 40000000 all



i po wygenerowaniu trzeba je posortować

Kod
rtsort md5_loweralpha-numeric#1-7_0_2400x40000000_all.rt
rtsort md5_loweralpha-numeric#1-7_1_2400x40000000_all.rt
rtsort md5_loweralpha-numeric#1-7_2_2400x40000000_all.rt
rtsort md5_loweralpha-numeric#1-7_3_2400x40000000_all.rt
rtsort md5_loweralpha-numeric#1-7_4_2400x40000000_all.rt


Mam nadzieję, że pomogłem smile.gif

Pozdrawiam
Rav
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.