GHL's Notes/

Typecho 1.1版本忘记密码如何重设

前言

其实这篇日记,本不应该出现。但有一天,我忘记了一个typecho博客的密码,但去搜索引擎找了很久,都是老版本Typecho重设办法。我在想,新版本能不能重设,一番折腾后,我整出来了。写了这日记留念。

背景

Typecho 1.1版本之后,用户密码验证采用了OpenWall的PHPass来加密用户密码,而不是MD5

Typecho 1.0版本以前用的是MD5简单加密,1.1以后,PHpass的启用,相对于以往弱鸡MD5来说,安全性拥有较大提升。
但这也引出一个问题。以往的密码重设方法将不可用。

折腾过程

开始

我锁定了Typecho的install.php文件,试图寻找用户密码生成的代码。
没想到一找就找到了。

$password = empty($config['userPassword']) ? substr(uniqid(), 7) : $config['userPassword'];
$hasher = new PasswordHash(8, true);
$installDb->query($installDb->insert('table.users')->rows(array('name' => $config['userName'], 'password' => $hasher->HashPassword($password), 'mail' => $config['userMail'],

非常清晰易懂,过程就是

  1. 判断用户有没有输入密码,没有就给他随机生成一个
  2. 然后就执行PHpass加密用户密码,放入数据库

高潮

既然我得到了Typecho处理用户密码的关键代码,接下来就可以嘿嘿嘿了。

经过一番查找,得到PHpass文件目录

Typecho目录下var目录中的PasswordHash.php文件

接下来就嘿嘿嘿了。

  1. 首先新建一个PHP文件
  2. 加载PHpass文件
  3. 模拟生成

PHP代码如下(在Typecho主目录):

<?php
require 'var/PasswordHash.php';
$a = new PasswordHash(8,true);
echo $a->HashPassword( **这里替换成你要重设的密码** );
?>

运行这个PHP程序,然后得到一串处理后的密文,然后打开phpMyAdmin,找到typecho_users表,然后把password那行update成你刚刚得到的密文。图如下:
typecho重设密码

完工。

后台登陆成功。

吐槽下Typecho。PHpass已经更新到0.5版本了,如今还在用着0.2老版本。。
typecho重设密码

留下一条评论

暂无评论