Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] Раскодировать обратно php (http://forum.oszone.net/showthread.php?t=227631)

zion87 12-02-2012 02:38 1856686

Раскодировать обратно php
 
Доброго времени суток, вот такая вот задачка: есть кусок кода
Код:

# reg 
  function create_url()
  {
  $arr = array('a','b','c','d','e','f',
                'g','h','i','j','k','l',
                'm','n','o','p','r','s',
                't','u','v','w','x','y',
                'z',
                'A','B','C','D','E','F',
                'G','H','I','J','K','L',
                'M','N','O','P','R','S',
                'T','U','V','W','X','Y',
                'Z',
                '1','2','3','4','5','6',
                '7','8','9','0');
    $url = "";
    for($i = 0; $i < 6; $i++) {
      $random = rand(0, count($arr) - 1);
      $url .= $arr[$random];
    } return $url;
  }
if(@$_GET['do']=='reg')

я так понимаю что это кодирует символы - у мну из 12345 получилось 827ccb0eea8a706c4c34a16891f84e7b, так вот мне надо обратно - как ???

Coutty 12-02-2012 08:41 1856720

Цитата:

Цитата zion87
из 12345 получилось 827ccb0eea8a706c4c34a16891f84e7b »

Это в результате md5("12345") получается такая строка. К вышеприведённой функции не имеет никакого отношения.

zion87 12-02-2012 19:25 1857172

Да ? странно.. а что делает эта функция??

Coutty 12-02-2012 20:55 1857235

http://ru.wikipedia.org/wiki/Md5 - это про md5.
А если вы о вышеприведённой, то она просто генерирует случайную приставку к URL'у.

zion87 13-02-2012 12:00 1857564

Немного уточню ситуевину, есть многопользовательский сниффер (работает с бд mysql) вот выдержка из кода регистрации:
Код:

<font color="#6495ED">&nbsp;Заполните все окна рагистрации<br><br></font>
  <tr><td><font color="#6495ED" size="2">Логин:</font></td><td><input type="text" name="user" style="width:150px; height:22px; background:#000000; border:1px solid #00cc99; color:#ffffff;"></td></tr>
  <tr><td><font color="#6495ED" size="2">Пароль:</font></td><td><input type="password" name="pass" style="width:150px; height:22px; background:#000000; border:1px solid #00cc99; color:#ffffff;"></td></tr>
  <tr><td><font color="#6495ED" size="2">Повтор:</font></td><td><input type="password" name="pass2" style="width:150px; height:22px; background:#000000; border:1px solid #00cc99; color:#ffffff;"></td></tr>
  <tr><td><a title="" onclick="javascript:document.images.cap.src='captcha.php'">
  <img id="cap" src='captcha.php'></a></td><td><input type="text" name="cap" style="width:150px; height:22px; background:#000000; border:1px solid #00cc99; color:#ffffff;"></th></td></tr>
  <tr><td><input type="submit" value="ок" id="reg" style="width:56px; height:25px;"></td></tr>
  </form>
<? 
    if(isset($_POST['user']) && isset($_POST['pass']) && isset($_POST['pass2']) && isset($_POST['cap'])) {
    if($_POST['user']!=='')
      if($_POST['pass']==$_POST['pass2']) {
      if($_SESSION['cap_code']==null) {
                echo '<meta http-equiv="Refresh" content="1; url=index.php?do=reg "/>';
        } elseif($_POST['cap']=="") {
                echo 'Введите код';
        }
        elseif($_POST['cap'] == $_SESSION['cap_code']) {         
              $user=mysqli_real_escape_string($c,htmlspecialchars($_POST['user']));
              $q=mysqli_query($c,"SELECT * FROM `sniffuser` where user='$user'");
              if(mysqli_num_rows($q)>0) {
                echo 'Пользователь с таким именем <br>уже зарегистрирован';
              } else { 
                $pass=md5($_POST['pass']);
                $url=create_url();
                do {
                  $q = mysqli_query($c,"SELECT * FROM `sniffuser` WHERE url = '$url'");         
                }
                while(mysqli_num_rows($q)>0);
                  mysqli_query($c,"INSERT INTO sniffuser(url,user,pass) VALUES('$url','$user','$pass')");
                  echo 'Registration complete. Now you please be moved ..';
                  echo '<meta http-equiv="Refresh" content="1; url=index.php "/>';
              }
          }
        } else {
                echo 'Пароли не совпадают';             
        }
        }   
  }

вот что в базе на выходе
Код:

-- Дамп данных таблицы `sniffuser`
--

INSERT INTO `sniffuser` (`id`, `url`, `user`, `pass`, `email`, `emailon`, `image`, `header`, `headeron`) VALUES
(2, 'POfpg4', 'user', '827ccb0eea8a706c4c34a16891f84e7b', '', 0, '', '', 0);

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

2-номер п\п
POfpg4-
Цитата:

Цитата Coutty
случайная приставка к URL'у »

user-логин
827ccb0eea8a706c4c34a16891f84e7b-подозреваю что пароль ....(но в нормальном виде пароль = 12345)

где тут пароль или как сделать что бы он тут отображался(нормально)???

а вот авторизации
Код:

<a href="index.php?do=reg"><font color="#6495ED">Регистрация</font></a><br><br>
<form action="" method="post">
<input type="text" name="user" style="width:150px; height:22px; background:#000000; border:1px solid #00cc99; color:#ffffff;" value="<?=htmlspecialchars(strip_tags($_POST['user']))?>"><br><br>
<input type="password" style="width:150px; height:22px; background:#000000; border:1px solid #00cc99; color:#ffffff;" name="pass"><br><br>
<input type="submit" value="войти" style="width:150px; height:25px; border:1px solid #00cc99; color:#ffffff;">
</form>
<?
  if (isset($_POST['user']) && isset($_POST['pass'])) {
    $user = mysqli_real_escape_string($c,$_POST['user']);
    $pass = md5($_POST['pass']);
    $query = "SELECT * FROM `sniffuser` WHERE `user`='{$user}' AND `pass`='{$pass}' LIMIT 1";
    $sql = mysqli_query($c,$query) or die(mysql_error());
    if (mysqli_num_rows($sql) == 1) {     
        $row = mysqli_fetch_array($sql);
        $_SESSION['hash'] = $row['url'];
        $_SESSION['user']= $row['user'];
        echo '<meta http-equiv="Refresh" content="1; url=index.php?do=set "/>';
    } else {
        echo 'Проверте правильность запонения полей';
    }


Coutty 13-02-2012 17:41 1857841

Ну очевидно, что в поле pass хранится пароль. Обычно его и хэшируют в md5. Поскольку md5 - односторонняя функция, восстановить можно либо перебором, либо с использованием готовых таблиц паролей, где хранятся пары "пароль" - "хэш" (собственно, из такой онлайновой таблицы я и взял обратное восстановление).

zion87 13-02-2012 20:39 1857979

можно по подробнее
Цитата:

Цитата Coutty
восстановить можно либо перебором, либо с использованием готовых таблиц паролей »

где хранятся пары ?
Цитата:

Цитата Coutty
"пароль" - "хэш" »

что такое
Цитата:

Цитата Coutty
онлайновой таблицы я и взял обратное восстановление »


Coutty 13-02-2012 21:15 1858001

Перебор: ставите скрипт что-то в духе
PHP код:

for ($i 0; ; $i++) {
  if (
md5($i) == "827ccb0eea8a706c4c34a16891f84e7b")
     die(
"Эврика! Пароль: $i");


Естественно, это примитивный вариант перебора и только по числам (не найдёт то, что начинается с нуля). Нужно добавить ещё буквы и т.д.
Пароль длиной до 6 символов вполне реально восстановить. Больше - вряд ли. Можно использовать словари паролей (текстовые файлы, где в строке содержится 1 пароль). Их можно найти на всяких хакерских сайтах. Но, в общем-то, это подходит только для простых паролей.
Если известна длина пароля, можно попробовать метод Монте-Карло (загуглите сами) - должно немного ускорить перебор, хотя математически это выглядит замедлением (но статистически работает).
Но вообще, перебор - бесперспективное дело.

Таблицы пароль-хэш - это по сути те же словари, только для каждого пароля рядом приводится его хэш md5, но поиск на порядки быстрее, чем перебором по словарю. Такие таблицы можно составить самому по словарю, либо воспользоваться онлайновой службой.
Опять же, сработает только для простых и распространённых паролей.

И вообще, нехорошо взламывать чужие пароли. А всё, что я рассказал выше, рассказано лишь из-за малой эффективности этих методов:) Хороший пароль этим не вскрыть.

zion87 13-02-2012 21:35 1858018

понял просто перебор, а можно что то изменить в коде чтобы пароль сохранялся в нормальном виде(чтобы сильно не коверкать то помимо хешированного еще нормальный сохранялся) ну или сделать чтобы просто в отдельном текстовике сохранялся логин и пароль???
Код:

(2, 'POfpg4', 'user', '827ccb0eea8a706c4c34a16891f84e7b', нормальный пароль, '', 0, '', '', 0);

zion87 14-02-2012 19:50 1858800

всем спасибо вроде сам разобрался (теперь сохраняется просто без хеш) :)


Время: 21:45.

Время: 21:45.
© OSzone.net 2001-