Autor Zpráva
Darker
Profil
Zkoušel jsem udělat plně primitivní skript na zjištění dvoupísmeného hesla HTTP serveru. Udělal jsem si na localhostu složku, zahesloval jí a skript který se přes socketovací funkce zkouší přihlásit:
for($i=$ID; $i<$ID+$steps;$i++){
  $fp = fsockopen($host, $port);     //127.0.0.1,80
  $pw=genPw($i,$znaky);              //Vygeneruje heslo podle ID a dostupných znaků
  $head=$headers."Authorization: Basic ".base64_encode("$username:$pw")."\r\n\r\n";  //Zbytek hlaviček je fixní a uložený v promenné
  fputs($fp,$head);       //Odesílání
  $result="";
  while(!feof($fp)) {
      $result .= fgets($fp, 128);  //Přijímání
  }
  
  echo $pw.":".$result.PHP_EOL.PHP_EOL; //Debug
  fclose($fp);
}
Problém je v tom, že za 30 sekund skript vyzkouší tak 6 hesel:
b:failed
c:failed
d:failed
e:failed
Když jsem totéž zkoušel na domácí router skript vzládl bez potíží 1000 hesel za méně než 30s. Nechápu v čem je problém, zdá se mi to pomalejší než kdybych se snažil nabourat na opravdový server.

Další věc je, že, narozdíl od routeru, localhost docela ignoruje odeslané údaje (jméno a heslo a hlásí 401 - Authentication required).
Odeslaná data:
POST /zaheslovana HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.14) Gecko/20110218 Firefox/3.6.14 ( .NET CLR
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-gb,en-us;q=0.7,en;q=0.3
Accept-Encoding: none
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Authorization: Basic YWRtaW46Yw==
Davex
Profil
Tvůj skript ukončuje spojení, tak nepoužívej Connection: keep-alive.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: