За последние 24 часа нас посетил 50051 программист и 1689 роботов. Сейчас ищут 1113 программистов ...

Узнать шифр пароля

Тема в разделе "PHP для новичков", создана пользователем Sasha55555, 26 июл 2018.

  1. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    Здравствуйте, вот так пароль отображается шифрованным если я ввожу его в поле ввода при авторизации
    123456 ввел = получаю ae61659669fb981e0b3ce06bb600e407
    Как узнать, что это за шифр и как его можно применить или убрать
    Вот строка пароля
    $password = Packet::$Data['body']['login']['pword'];
    И сами Packet
    Код (Text):
    1. <?php
    2.  
    3. namespace Kitsune\ClubPenguin\Packets;
    4. use Kitsune\ClubPenguin\Packets\Parsers;
    5.  
    6. class Packet {
    7.  
    8.     public static $IsXML;
    9.     public static $Extension;
    10.     public static $Handler;
    11.     public static $Data;
    12.     public static $RawData;
    13.    
    14.     private static $Instance;
    15.    
    16.     public static function GetInstance() {
    17.         if(self::$Instance == null) {
    18.             self::$Instance = new Packet();
    19.             Packet::Parse(self::$RawData);
    20.         }
    21.        
    22.         return self::$Instance;
    23.     }
    24.    
    25.     public static function Parse($rawData) {
    26.         $firstCharacter = substr($rawData, 0, 1);
    27.         self::$IsXML = $firstCharacter == '<';
    28.        
    29.         if(self::$IsXML) {
    30.             $xmlArray = Parsers\XMLParser::Parse($rawData);
    31.             if(!$xmlArray) {
    32.                 self::$Handler = "policy";
    33.             } else {
    34.                 self::$Handler = $xmlArray["body"]["@attributes"]["action"];
    35.                 self::$Data = $xmlArray;
    36.             }
    37.             self::$RawData = $rawData;
    38.         } else {
    39.             $xtArray = Parsers\XTParser::Parse($rawData);
    40.            
    41.             self::$Extension = $xtArray[0];
    42.             self::$Handler = $xtArray[1];
    43.             array_shift($xtArray);
    44.            
    45.             self::$Data = $xtArray;
    46.             self::$RawData = $rawData;
    47.         }
    48.     }
    49.    
    50. }
    51.  
    52. ?>
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    на обычный MD5 похож, с солью
    а приведенный кусок вообще к методу шифрования не относится
     
  3. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    Вот
    Код (Text):
    1. <?php
    2.  
    3. namespace Kitsune\ClubPenguin;
    4.  
    5. use Kitsune\Logging\Logger;
    6. use Kitsune\DatabaseManager;
    7. use Kitsune\ClubPenguin\Packets\Packet;
    8.  
    9. final class Login extends ClubPenguin {
    10.  
    11.     public function __construct() {  
    12.         parent::__construct();
    13.        
    14.         Logger::Fine("Login server is online");
    15.     }
    16.  
    17.     protected function handleLogin($socket) {
    18.         $penguin = $this->penguins[$socket];
    19.  
    20.         if($penguin->handshakeStep !== "randomKey") {
    21.             return $this->removePenguin($penguin);
    22.         }
    23.  
    24.         $this->databaseManager->add($penguin);
    25.  
    26.         $username = Packet::$Data['body']['login']['nick'];
    27.         $password = Packet::$Data['body']['login']['pword'];
    28.         Logger::Fine("$password");
    29.         if($penguin->database->usernameExists($username) === false) {
    30.             password_verify('KitsuneTimingAttack', '$2y$12$5hf7vOtBjsNJf6oZSsnyXOlcLTRblTwSg550SR0ohxVUkItmXhMM6'); //Mitigate timing attacks
    31.             $penguin->send("%xt%e%-1%101%");
    32.             return $this->removePenguin($penguin);
    33.         }
    34.        
    35.         $penguinData = $penguin->database->getColumnsByName($username, array("ID", "Username", "Password", "SWID", "Email", "Banned"));
    36.         $con = mysqli_connect('localhost', 'root', '', 'kitsune');
    37.         $query = mysqli_query($con, "SELECT * FROM penguins WHERE Username='".$username."'");
    38.         $data = mysqli_fetch_assoc($query);
    39.         $encryptedPassword = $data['Password'];
    40.        
    41.         if (password_needs_rehash($encryptedPassword, PASSWORD_DEFAULT)) {
    42.         //перехешируем и сохраняем новый хеш
    43.         $encryptedPassword = password_hash($password, PASSWORD_DEFAULT);
    44.         mysqli_query($con, "UPDATE penguins SET Password = '".$encryptedPassword."' WHERE Username = '".$username."'");
    45.     }
    46.        
    47.         if(password_verify($password, $encryptedPassword) !== true) {
    48.             $penguin->send("%xt%e%-1%101%");
    49.             return $this->removePenguin($penguin);
    50.         } elseif($penguinData["Banned"] > strtotime("now") || $penguinData["Banned"] == "perm") {
    51.             if(is_numeric($penguinData["Banned"])) {
    52.                 $hours = round(($penguinData["Banned"] - strtotime("now")) / ( 60 * 60 ));
    53.                 $penguin->send("%xt%e%-1%601%$hours%");
    54.                 $this->removePenguin($penguin);
    55.             } else {
    56.                 $penguin->send("%xt%e%-1%603%");
    57.                 $this->removePenguin($penguin);
    58.             }
    59.         } else {          
    60.             $confirmationHash = md5($penguin->randomKey);
    61.             $friendsKey = md5($penguinData["ID"]); // May need to change this later!
    62.             $loginTime = time();
    63.            
    64.             $penguin->database->updateColumnById($penguinData["ID"], "ConfirmationHash", $confirmationHash);
    65.             $penguin->database->updateColumnById($penguinData["ID"], "LoginKey", $encryptedPassword);
    66.  
    67.             $penguin->handshakeStep = "login";
    68.            
    69.             $penguin->send("%xt%l%-1%{$penguinData["ID"]}|{$penguinData["SWID"]}|{$penguinData["Username"]}|$encryptedPassword|1|45|2|false|true|$loginTime%$confirmationHash%$friendsKey%101,1%{$penguinData["Email"]}%");
    70.         }
    71.     }
    72.  
    73.     protected function handleDisconnect($socket) {
    74.         $penguin = $this->penguins[$socket];
    75.         $this->removePenguin($penguin);
    76.     }
    77.  
    78.     public function removePenguin($penguin) {
    79.         $this->removeClient($penguin->socket);
    80.  
    81.         $this->databaseManager->remove($penguin);
    82.  
    83.         unset($this->penguins[$penguin->socket]);
    84.  
    85.         Logger::Notice("Player disconnected");
    86.     }
    87.    
    88. }
    89.  
    90. ?>
    Можно ли как-то убрать MD5 переменной $password?
     
  4. rishard

    rishard Новичок

    С нами с:
    20 сен 2016
    Сообщения:
    228
    Симпатии:
    27
    если правильно понял, хочешь вытащить пароль из хеша? это априори невозможно.
     
  5. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    Нет, чтобы не кодировался, например я написал 12345 так и будет
     
  6. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @Sasha55555, хочешь не заходированный пароль хранить в бд?
     
  7. rishard

    rishard Новичок

    С нами с:
    20 сен 2016
    Сообщения:
    228
    Симпатии:
    27
    будет проблема безопасности high level.
     
  8. villiwalla

    villiwalla Активный пользователь

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Прогресс но в обратном порядке
     
  9. Sasha55555

    Sasha55555 Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    152
    Симпатии:
    0
    Нет, у меня пароль в базе зашифрован password_hash
    Мне нужно сделать password_verify, но вводимый пароль сразу же шифруется
     
  10. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Проследи всю цепочку, где он хэшируется. В чем проблема?. Обычно данные запроса хранятсья в неизменном виде, наверняка в твоем движке тоже к ним можно получить доступ.