Здравствуйте, вот так пароль отображается шифрованным если я ввожу его в поле ввода при авторизации 123456 ввел = получаю ae61659669fb981e0b3ce06bb600e407 Как узнать, что это за шифр и как его можно применить или убрать Вот строка пароля $password = Packet::$Data['body']['login']['pword']; И сами Packet Код (Text): <?php namespace Kitsune\ClubPenguin\Packets; use Kitsune\ClubPenguin\Packets\Parsers; class Packet { public static $IsXML; public static $Extension; public static $Handler; public static $Data; public static $RawData; private static $Instance; public static function GetInstance() { if(self::$Instance == null) { self::$Instance = new Packet(); Packet::Parse(self::$RawData); } return self::$Instance; } public static function Parse($rawData) { $firstCharacter = substr($rawData, 0, 1); self::$IsXML = $firstCharacter == '<'; if(self::$IsXML) { $xmlArray = Parsers\XMLParser::Parse($rawData); if(!$xmlArray) { self::$Handler = "policy"; } else { self::$Handler = $xmlArray["body"]["@attributes"]["action"]; self::$Data = $xmlArray; } self::$RawData = $rawData; } else { $xtArray = Parsers\XTParser::Parse($rawData); self::$Extension = $xtArray[0]; self::$Handler = $xtArray[1]; array_shift($xtArray); self::$Data = $xtArray; self::$RawData = $rawData; } } } ?>
Вот Код (Text): <?php namespace Kitsune\ClubPenguin; use Kitsune\Logging\Logger; use Kitsune\DatabaseManager; use Kitsune\ClubPenguin\Packets\Packet; final class Login extends ClubPenguin { public function __construct() { parent::__construct(); Logger::Fine("Login server is online"); } protected function handleLogin($socket) { $penguin = $this->penguins[$socket]; if($penguin->handshakeStep !== "randomKey") { return $this->removePenguin($penguin); } $this->databaseManager->add($penguin); $username = Packet::$Data['body']['login']['nick']; $password = Packet::$Data['body']['login']['pword']; Logger::Fine("$password"); if($penguin->database->usernameExists($username) === false) { password_verify('KitsuneTimingAttack', '$2y$12$5hf7vOtBjsNJf6oZSsnyXOlcLTRblTwSg550SR0ohxVUkItmXhMM6'); //Mitigate timing attacks $penguin->send("%xt%e%-1%101%"); return $this->removePenguin($penguin); } $penguinData = $penguin->database->getColumnsByName($username, array("ID", "Username", "Password", "SWID", "Email", "Banned")); $con = mysqli_connect('localhost', 'root', '', 'kitsune'); $query = mysqli_query($con, "SELECT * FROM penguins WHERE Username='".$username."'"); $data = mysqli_fetch_assoc($query); $encryptedPassword = $data['Password']; if (password_needs_rehash($encryptedPassword, PASSWORD_DEFAULT)) { //перехешируем и сохраняем новый хеш $encryptedPassword = password_hash($password, PASSWORD_DEFAULT); mysqli_query($con, "UPDATE penguins SET Password = '".$encryptedPassword."' WHERE Username = '".$username."'"); } if(password_verify($password, $encryptedPassword) !== true) { $penguin->send("%xt%e%-1%101%"); return $this->removePenguin($penguin); } elseif($penguinData["Banned"] > strtotime("now") || $penguinData["Banned"] == "perm") { if(is_numeric($penguinData["Banned"])) { $hours = round(($penguinData["Banned"] - strtotime("now")) / ( 60 * 60 )); $penguin->send("%xt%e%-1%601%$hours%"); $this->removePenguin($penguin); } else { $penguin->send("%xt%e%-1%603%"); $this->removePenguin($penguin); } } else { $confirmationHash = md5($penguin->randomKey); $friendsKey = md5($penguinData["ID"]); // May need to change this later! $loginTime = time(); $penguin->database->updateColumnById($penguinData["ID"], "ConfirmationHash", $confirmationHash); $penguin->database->updateColumnById($penguinData["ID"], "LoginKey", $encryptedPassword); $penguin->handshakeStep = "login"; $penguin->send("%xt%l%-1%{$penguinData["ID"]}|{$penguinData["SWID"]}|{$penguinData["Username"]}|$encryptedPassword|1|45|2|false|true|$loginTime%$confirmationHash%$friendsKey%101,1%{$penguinData["Email"]}%"); } } protected function handleDisconnect($socket) { $penguin = $this->penguins[$socket]; $this->removePenguin($penguin); } public function removePenguin($penguin) { $this->removeClient($penguin->socket); $this->databaseManager->remove($penguin); unset($this->penguins[$penguin->socket]); Logger::Notice("Player disconnected"); } } ?> Можно ли как-то убрать MD5 переменной $password?
Нет, у меня пароль в базе зашифрован password_hash Мне нужно сделать password_verify, но вводимый пароль сразу же шифруется
Проследи всю цепочку, где он хэшируется. В чем проблема?. Обычно данные запроса хранятсья в неизменном виде, наверняка в твоем движке тоже к ним можно получить доступ.