Веб-сайт по декодированию хешей MD5, который отображает прогресс с использованием AJAX - PullRequest
1 голос
/ 09 июля 2011

Я создаю веб-сайт, который пытается декодировать хеши md5 (до 5 символов).

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

Сайт: http://webtools.pieterhordijk.com

Хэш в db: fbade9e36a3f36d3d676c1b808451dd7

Хэш не в БД: любая другая строка символов

Если хеша еще нет в базе данных, сайт попытается его расшифровать.

Я хотел бы сделать AJAX-вызов, чтобы проверить, есть ли хэш в БД. Если нет, я хочу отобразить счетчик хода выполнения во время его декодирования на сервере (PHP).

Код, который у меня сейчас есть:

$(document).ready(function() {
  $('form.decode').submit(function() {
    var form = $(this);
    var submit_button = $('input[name="submit"]', this);
    var submit_image = $(submit_button).attr('src');
    var action = $(this).attr('action');

    $('table.result tr').remove();

    var html = '';
    html+= '<tr>\n';
    html+= '  <td><img src="/style/information.png" alt="Information" title="Finding value"></td>\n';
    html+= '  <td>'+$('input[name="hash"]', form).val()+'</td>\n';
    html+= '</tr>\n';
    $('table.result').append(html);

    $(submit_button).attr('src', 'style/ajax-loader.gif');

    $.ajax({
      url: action+'/json',
      type: 'POST',
      data: ({hash : $('input[name="hash"]', form).val() }),
      dataType: 'json',
      success: function(data)
      {
        if (!data.result) {
          var html = '';
          html+= '<tr>\n';
          html+= '  <td><img src="/style/error.png" alt="Error" title="Hash not found in database"></td>\n';
          html+= '  <td>Couldn\'t find hash-value in our database!</td>\n';
          html+= '</tr>\n';
          html+= '<tr>\n';
          html+= '  <td><img src="/style/information.png" alt="Information" title="Decoding"></td>\n';
          html+= '  <td>Decoding hash (<span class="progress">0</span>%)</td>\n';
          html+= '</tr>\n';

          $('table.result').append(html);
        } else {
          var html = '';
          html+= '<tr>\n';
          html+= '  <td><img src="/style/accept.png" alt="Success" title="Decoded hash"></td>\n';
          html+= '  <td>'+data.value+'</td>\n';
          html+= '</tr>\n';

          $('table.result').append(html);
          $(submit_button).attr('src', submit_image);
        }
      }
    });

    return false;
  });
});

Код слишком длинный для чтения? -> Я просто выполняю AJAX-вызов, чтобы проверить, существует ли хеш, а если его нет, я добавляю строку в таблицу результатов с ходом процесса декодирования (по умолчанию 0%).

Что мне нужно сделать отсюда?

Я думал:

Если хеш не существует, запустите js-функцию, которая вызывает (AJAX) фоновый скрипт, который запускает процесс декодирования.

Фоновый процесс отслеживает свой прогресс, обновляя БД каждые x секунд (primary_key is hash).

js-функция, которая вызывает фоновый процесс, вызывает другую функцию, которая (AJAX) запрашивает прохождение каждые x секунд от сервера до 100%

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

1 Ответ

2 голосов
/ 09 июля 2011

Вместо того, чтобы пытаться переборщить хэш ,

Затем ваша программа просто проверяет радужную таблицу (которую вы можете хранить в SQL) вместо того, чтобы перебирать каждый ранее не взломанный хеш.

Если хэш не находится в радужной таблице, это означает, что он огромен / его нелегко взломать и не следует пытаться взломать сайт с риском использования слишком большого количества ЦП и сбоя ваш сайт.

...