Вопрос по php, api – API md5decrypter [закрыто]

1

Таким образом, существует этот веб-сайт (http://md5decrypter.co.uk), который, учитывая хэш md5, попытается вернуть исходную строку.

Есть ли API или кто-то создал класс PHP для работы с ним? Я не могу найти один ...

Прежде чем вы спросите, позвольте мне заверить вас, что у меня нет злых намерений.

Заранее спасибо.

@KingCrunch, но в то же время, с помощью "piggy-backing" Вне md5decryptor, я бы сэкономил место и вычислительную мощность. citruspi
Ха,let me assure you, Классический. Josh
@KristianAntonsen Пространство не дорого, и с силой вы можете оценить несколько (частичных) таблиц одновременно. Я не думаю, что они бесполезны. Немного зависит от того, есть ли у вас какие-то столы или нет. Если вам нужно сначала их создать, то, возможно, действительно более полезно его опустить. KingCrunch
@ KingCrunch Благодаря сегодняшним вычислительным возможностям радужные таблицы устарели. Они занимают слишком много места, и взлом паролей может выполняться довольно быстро в облаках Amazon или аналогичных. kba
MD5- & Quot; расшифровщиков & Quot; сравнивает входные строки с радужными таблицами. Просто создайте такую таблицу и сравните вашу строку с предварительно вычисленными md5-хэшами. Однако попытка расшифровать хэши делает вас немного подозрительным ... KingCrunch

Ваш Ответ

3   ответа
0

Вы всегда можете сделать свой собственный:

<?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)."')";
    ...
}
?>
Я понимаю это, но я ограничен пространством и силой. Кроме того, в md5decryptor уже есть так много хэшей ... Я не могу придумать или найти так много слов .... citruspi
4

Несмотря на то, что парень из md5decryptor хорош, он не сделает свой ресурс доступным для вас через HTTP только потому, что вы спрашиваете. Как и любой другой, вы можете использовать общедоступный веб-интерфейс, для которого требуется капча, которая говорит все.

Или вкратце: нет никакого PHP API там.

Однако, почему вы не управляете своим? Это довольно тривиально:

$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';
}
К сожалению, похоже, это так ... :( citruspi
"Вы можете назначить награду за 5 часов" ... Ну, тогда увидимся ... citruspi
И я не могу ввести их вручную, потому что это часть приложения, которое я пишу ... citruspi
Хммм, я знаю, что вы имеете в виду, что он делает это доступным для меня только потому, что я спрашиваю ... Это простоhe had one два или три месяца назад, но, похоже, полностью исчезли .... citruspi
@MihirSingh: Очевидно, что кто-то больше не в сети. И даже этот сайт не дал бы вам все хеш-коды, поэтому в любом случае у вас есть остаток, так что держите его отдельно и храните для последующего взлома вручную. или скормить его в hashcat с правилами и т.д., работает довольно хорошо.
1

BozoCrack это простой, простой рубиновый скрипт, который использует Google в качестве радуги и страшно хорош в взломе несоленных паролей MD5. Глядя на код, не должно быть слишком сложно перенести его на PHP.

PS: каждый, кто использует несоленый MD5 в качестве алгоритма хеширования паролей, должен взламывать свои пароли, один за другим ... не используйте md5,использовать bcrypt!

Похожие вопросы