したがって、このWebサイト(http://md5decrypter.co.uk)があり、md5ハッシュが与えられると、元の文字列を返そうとします。
APIはありますか、それとも誰かがそれを操作するためのPHPクラスを作成しましたか?見つかりません...
前に、あなたは尋ねます、私が悪意を持っていないことをあなたに保証させてください。
前もって感謝します。
md5decryptorの人はいい人ですが、あなたが求めているという理由だけで、HTTP経由で自分のアセットにアクセスできるようにすることはありません。他の人と同じように、キャプチャを必要とする公開されているWebインターフェイスを使用できます。
つまり、PHPAPIはありません。
でも、自分で走ってみませんか?それはかなり些細なことです:
$decryptors = array('Google', 'Gromweb');
foreach ($hashes as $hash) {
echo "$hash";
foreach($decryptors as $decrytor)
{
if (NULL !== ($plain = MD5Decryptor::plain($hash, $decrytor))) {
echo " - found: $plain ($decrytor)";
break;
}
}
echo "\n";
}
出力:
fcf1eed8596699624167416a1e7e122e - found: octopus (Google)
bed128365216c019988915ed3add75fb - found: passw0rd (Google)
d0763edaa9d9bd2a9516280e9044d885 - found: monkey (Google)
dfd8c10c1b9b58c8bf102225ae3be9eb - found: 12081977 (Google)
ede6b50e7b5826fe48fc1f0fe772c48f - found: 1q2w3e4r5t6y (Google)
直接検索できない場合は、そのサイトに手動で貼り付けることができます。より多くの人々があなたのように考える場合、ますます多くのサイトがダウンすることを覚えておいてください(それらのほとんどはすでにダウンしています)。
abstract class MD5Decryptor
{
abstract public function probe($hash);
public static function plain($hash, $class = NULL)
{
if ($class === NULL) {
$class = get_called_class();
} else {
$class = sprintf('MD5Decryptor%s', $class);
}
$decryptor = new $class();
if (count($hash) > 1) {
foreach ($hash as &$one) {
$one = $decryptor->probe($one);
}
} else {
$hash = $decryptor->probe($hash);
}
return $hash;
}
public function dictionaryAttack($hash, array $wordlist)
{
$hash = strtolower($hash);
foreach ($wordlist as $word) {
if (md5($word) === $hash)
return $word;
}
}
}
abstract class MD5DecryptorWeb extends MD5Decryptor
{
protected $url;
public function getWordlist($hash)
{
$list = FALSE;
$url = sprintf($this->url, $hash);
if ($response = file_get_contents($url)) {
$list[$response] = 1;
$list += array_flip(preg_split('/\s+/', $response));
$list += array_flip(preg_split('/(?:\s|\.)+/', $response));
$list = array_keys($list);
}
return $list;
}
public function probe($hash)
{
$hash = strtolower($hash);
return $this->dictionaryAttack($hash, $this->getWordlist($hash));
}
}
class MD5DecryptorGoogle extends MD5DecryptorWeb
{
protected $url = 'http://www.google.com/search?q=%s';
}
class MD5DecryptorGromweb extends MD5DecryptorWeb
{
protected $url = 'http://md5.gromweb.com/query/%s';
}
BozoCrackは、グーグルをレインボーテーブルとして使用し、無塩のMD5パスワードを解読するのに恐ろしく優れている非常に単純なルビースクリプトです。コードを見ると、PHPに移行するのはそれほど難しいことではありません。
PS:パスワードハッシュアルゴリズムとして無塩のMD5を使用するすべての人は、パスワードを1対1で解読する必要があります... md5を使用せず、bcryptを使用してください!
あなたはいつでもあなた自身のものを作ることができます:
<?php
//From file or some John the ripper piped input
$wordlist=file('some_word_list.lst');
foreach ($wordlist as $word){
$sql="INSERT INTO table (plain_word,hashed_word)values('$word','".md5($word)."')";
...
}
?>