Recovering Drupal administrator password from UI

Warning message

JQuery Cycle must be installed in order to run the slideshow. Please go to Status Report for instructions.

There are many methods to recover admin password described here https://www.drupal.org/node/44164 but this method gives you a admin panel to recover admin username and password.

Please copy and paste the below code in a file and name it whatever you like or download the attachment in this post, remove .txt extension and drop it in root of your website[in same place where you find robots.txt]. In my case i named it as "generate_drupal_admin_pwd.php".

and then access your website like: http://YOUR_WEBSITE_NAME/generate_drupal_admin_pwd.php

Warning: Putting .php files in root directory have many security concerns, its recommended after changing password you should delete the file.

<html>
<head>
<title>Recover Password</title>

<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.3.min.js"></script>
<script type="text/javascript">

function checkPasswordMatch() {
    var password = $("#txtNewPassword").val();
    var confirmPassword = $("#txtConfirmPassword").val();
    if(password != '' && confirmPassword != '') {
        if (password != confirmPassword)
                $("#divCheckPasswordMatch").html("<div class='pass_dont_match'>Passwords do not match!</div>");
        else
                $("#divCheckPasswordMatch").html("<div class='pass_match'>Passwords match.</div>");
    }
}

$(document).ready(function () {
   $("#txtConfirmPassword").focusout(checkPasswordMatch);
});

</script>
<style>
html { height: 100% }
::-moz-selection { background: #fe57a1; color: #fff; text-shadow: none; }
::selection { background: #fe57a1; color: #fff; text-shadow: none; }
body { background-image: radial-gradient( cover, rgba(92,100,111,1) 0%,rgba(31,35,40,1) 100%), url('http://i.minus.com/io97fW9I0NqJq.png') }
.login {
  background: #eceeee;
  border: 1px solid #42464b;
  border-radius: 6px;
  height: 330px;
  margin: 20px auto 0;
  width: 298px;
  margin-top: 50px;
}
.login h1 {
  background-image: linear-gradient(top, #f1f3f3, #d4dae0);
  border-bottom: 1px solid #a6abaf;
  border-radius: 6px 6px 0 0;
  box-sizing: border-box;
  color: #727678;
  display: block;
  height: 43px;
  font: 600 14px/1 'Open Sans', sans-serif;
  padding-top: 14px;
  margin: 0;
  text-align: center;
  text-shadow: 0 -1px 0 rgba(0,0,0,0.2), 0 1px 0 #fff;
}
input[type="password"], input[type="text"] {
  background: url('http://i.minus.com/ibhqW9Buanohx2.png') center left no-repeat, linear-gradient(top, #d6d7d7, #dee0e0);
  border: 1px solid #a1a3a3;
  border-radius: 4px;
  box-shadow: 0 1px #fff;
  box-sizing: border-box;
  color: #696969;
  height: 39px;
  margin: 9px 0 9px 29px;
  padding-left: 37px;
  transition: box-shadow 0.3s;
  width: 240px;
}
.admin_username{
    padding-left: 33px;
}

form{
  margin-top: 53px;
}
input[type="password"]:focus, input[type="text"]:focus {
  box-shadow: 0 0 4px 1px rgba(55, 166, 155, 0.3);
  outline: 0;
}
.show-password {
  display: block;
  height: 16px;
  margin: 26px 0 0 28px;
  width: 87px;
}
input[type="checkbox"] {
  cursor: pointer;
  height: 16px;
  opacity: 0;
  position: relative;
  width: 64px;
}
input[type="checkbox"]:checked {
  left: 29px;
  width: 58px;
}
.toggle {
  background: url(http://i.minus.com/ibitS19pe8PVX6.png) no-repeat;
  display: block;
  height: 16px;
  margin-top: -20px;
  width: 87px;
  z-index: -1;
}
input[type="checkbox"]:checked + .toggle { background-position: 0 -16px }
.forgot {
  color: #7f7f7f;
  display: inline-block;
  float: right;
  font: 12px/1 sans-serif;
  left: -19px;
  position: relative;
  text-decoration: none;
  top: 5px;
  transition: color .4s;
}
.forgot:hover { color: #3b3b3b }
input[type="submit"] {
  width:240px;
  height:35px;
  display:block;
  font-family:Arial, "Helvetica", sans-serif;
  font-size:16px;
  font-weight:bold;
  color:#fff;
  text-decoration:none;
  text-transform:uppercase;
  text-align:center;
  text-shadow:1px 1px 0px #37a69b;
  padding-top:6px;
  margin: 29px 0 0 29px;
  position:relative;
  cursor:pointer;
  border: none;
  background-color: #37a69b;
  background-image: linear-gradient(top,#3db0a6,#3111);
  border-top-left-radius: 5px;
  border-top-right-radius: 5px;
  border-bottom-right-radius: 5px;
  border-bottom-left-radius:5px;
  box-shadow: inset 0px 1px 0px #2ab7ec, 0px 5px 0px 0px #497a78, 0px 10px 5px #999;
}

.shadow {
  background: #000;
  border-radius: 12px 12px 4px 4px;
  box-shadow: 0 0 20px 10px #000;
  height: 12px;
  margin: 30px auto;
  opacity: 0.2;
  width: 270px;
}

input[type="submit"]:active {
  top:3px;
  box-shadow: inset 0px 1px 0px #2ab7ec, 0px 2px 0px 0px #31524d, 0px 5px 3px #999;
}

.pass_match {
  padding-left: 96px;
  padding-top: 8px;
  color: darkgreen;
}

.pass_dont_match {
  padding-left: 65px;
  padding-top: 8px;
  color: red;
}

.pass_changed {
  margin-left: 777px;
  color: green;
}
.mainloginarea {
margin-top: 250px;
}
</style>
   </HEAD>
   <BODY>

<?php

 define('DRUPAL_ROOT', getcwd()); //the most important line
 
require_once './includes/bootstrap.inc';
 
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
 require_once
DRUPAL_ROOT . '/includes/password.inc';
$admin_name = db_query("SELECT name from {users} WHERE uid = :uid", array(":uid" => 1))->fetchField();

if((!empty($_POST['txtNewPassword'])) && (!empty($_POST['txtConfirmPassword']))) {
        if(
$_POST['txtNewPassword'] === $_POST['txtConfirmPassword']) {
           
               
$newpwd = $_POST['txtNewPassword'];
                global
$base_url;
               
$hashed_pass user_hash_password($newpwd);
               
$updated = db_update('users') // Table name no longer needs {}
               
->fields(array(
                       
'pass' => $hashed_pass,
                ))
                ->
condition('uid', 1, '=')
                ->
execute();
                               
               
watchdog('drupal_admin_pass_change',
                        
'Admin password changed',
                        
WATCHDOG_NOTICE);                               
                               
}

}
?>
<div class = "mainloginarea">
<h1 align = "center">Drupal Admin Password Changer</h1>
      <div class="login">
           <form method = "POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
        <div class = "admin_username"> Admin Username:<b><?php echo $admin_name ?></b></div><br />
        <input placeholder= "Enter Password" name="txtNewPassword" type="password" id="txtNewPassword">
        <input placeholder = "Re-Enter Password" name="txtConfirmPassword"  type="password" id="txtConfirmPassword">

                <div class="registrationFormAlert" id="divCheckPasswordMatch">
        </div>
        <input type="submit" value="Submit">
        </form>
</div>
<div class="shadow"></div>
</div>
<?php if($updated) print "<div class=pass_changed>Thank You! Password Changed. <a href= $base_url/user>Click Here<a/> to login</div>"; ?>

Drupal admin password changer panel