Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Myslin salasanojen algoritmi

KuinKala [01.08.2005 23:24:48]

#

Pituus 16, merkkiä. Millä algoritmillä salasanat siis on kryptattu (vai mitä se onkaan) mysql-palvelimelle? Siellähän ne ovat tallessa.. Ja saako salasanoja purettua selkokieliseen muotoon php:llä?

FooBat [02.08.2005 00:08:55]

#

Suora muunnos hashista selkokieliseksi ei taida onnistua, mutta kokeilemalla hashata PALJON erilaisia salasanoja saattaa löytää vastaavan hashin, jolloin kyseinen salasana on pätevä.

http://www.securiteam.com/tools/5YP0H0A40O.html

En tiedä toimiiko. Sanakirjahyökkäys olisi varmaan paljon nopeampi heikoille salasanoille. Tuosta koodissa taitaa kuitenkin olla se MySQL vanha salausalgoritmi, joka tuottaa noita 16 tavuisia hashejä, joita halusit.

Tiedäthän, että salasanojen purku on vähintäänkin arvelluttavaa ja usein myös rikollista puuhaa.

KuinKala [02.08.2005 00:46:26]

#

FooBat kirjoitti:

Tiedäthän, että salasanojen purku on vähintäänkin arvelluttavaa ja usein myös rikollista puuhaa.

Kyllä tiedän. Kiusallani sitä en aio tehdä, vaan tämä asia liittyy selainpohjaiseen autentikaatioon mysql-palvelimen kanssa. Ongelmakin ratkesi:

Mysql:llä on oma funktionsa joka toimii SELECT lauseessa, jolla salasanan voi testata:

Esim. testataan salasanaa 'seppo': SELECT PASSWORD('seppo'); ja palvelin palauttaa 16 merkkiäpitkän hashin.

Jos jotakuta kiinnostaa, niin näin voi verrata vaikkapa lomakkeelta lähetettyä salasanaa palvelimella olevaan:

<?php

$serverpass = @mysql_result(@mysql_query("SELECT Password FROM user WHERE User='kayttaja' AND Host='localhost'"),0,0); // salasana joka käyttäjällä on
$userpass = @mysql_result(@mysql_query("SELECT PASSWORD('$_POST[salasana]')"),0,0); // salasana jolla käyttäjä yrittää sisään

if($serverpass == $userpass){
      echo "Salasanat täsmäävät, tervetuloa";
}

?>

Edit: niin, olisi kyllä voinut sanoa vähä tarkemmin tuossa ensimmäisessä viestissä, että haluan vaina verrata salasanoja :) Mutta tulipahan ratkaistua.

ajv [02.08.2005 08:09:42]

#

Noita kyselyitä ei kannata ihan tieten tahtoen viljellä. Yleensä mitä vähemmän, sen parempi. Ja jos ihan tarkkoja ollaan, niin vielä LIMIT perään, niin tietokanta lopettaa hakemisen siihen ensimmäiseen osumaan, eikä käy jokaista riviä läpi.

<?php
$result = mysql_query("SELECT 1 FROM user WHERE user = Kayttaja AND PASSWORD('$_POST[salasana]') = Pasword LIMIT 0,1");
if(mysql_num_rows($result) == 1){
   echo "Salasanat täsmäävät, tervetuloa";
}
?>

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta