WordPress密码哈希破解

// wp_hash_test.php

<?php

class PasswordHash {
    var $itoa64;

    function PasswordHash()
    {
        $this->itoa64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
    }

    function encode64($input, $count)
    {
        $output = '';
        $i = 0;
        do {
            $value = ord($input[$i++]);
            $output .= $this->itoa64[$value & 0x3f];
            if ($i < $count)
                $value |= ord($input[$i]) << 8;
            $output .= $this->itoa64[($value >> 6) & 0x3f];
            if ($i++ >= $count)
                break;
            if ($i < $count)
                $value |= ord($input[$i]) << 16;
            $output .= $this->itoa64[($value >> 12) & 0x3f];
            if ($i++ >= $count)
                break;
            $output .= $this->itoa64[($value >> 18) & 0x3f];
        } while ($i < $count);

        return $output;
    }

    function crypt_private($password, $salt)
    {
        $count = 8192;

        $hash = md5($salt . $password, TRUE);
        do {
            $tmp = $hash . $password;
            $hash = md5($tmp, TRUE);
        } while (--$count);

        $output = '$P$B';
        $output .= $salt;
        $output .= $this->encode64($hash, 16);

        return $output;
    }

    function HashPassword($password, $salt)
    {
        $hash = $this->crypt_private($password, $salt);
        return $hash;
    }
}

//for test from WordPress v4.1
//$P$BYEYcHEj3vDhV1lwGBv6rpxurKOEWY/

$passwordValue = "123123";
$saltValue = "YEYcHEj3";

$wp_hasher = new PasswordHash();
$sigPassword = $wp_hasher->HashPassword($passwordValue, $saltValue);

echo "生成的密码hash为:".$sigPassword."\n";
echo '正确的密码hash为:$P$BYEYcHEj3vDhV1lwGBv6rpxurKOEWY/'."\n";

?>

// main.c

#include <stdio.h>
#include <string.h>

/* build.sh
 * gcc -c md5.c -o md5.o
 * gcc -c wordpress.c -o wordpress.o
 * gcc -c main.c -o main.o
 * gcc -o wp_hash main.o md5.o wordpress.o
 */

/* wordpress.c */
extern int wordpress( unsigned char * salt, unsigned char *passwd, int count, unsigned char *code );

int main(int argc, char* argv[])
{
    if (3 != argc)
    {
        printf("usage: ./wp_hash DICFILE 'WORDPRESS_HASH'\n");
        printf("example: ./wp_hash pwd.txt '$P$BYEYcHEj3vDhV1lwGBv6rpxurKOEWY/'\n");
        return -1;
    }

    char* filename = argv[1];
    char* hash = argv[2];

    char salt[9];
    memcpy(salt, hash+4, 8);
    salt[8] = '\0';

    printf("hash = [%s]\n", hash);
    printf("salt = [%s]\n", salt);

    const int MAX_LINE_LEN = 512;  // 单行所允许的最大长度
    char szLineBuf[MAX_LINE_LEN];
    FILE *fp = fopen(filename, "rb");
    if (fp)
    {
        while ( NULL != fgets(szLineBuf, sizeof(szLineBuf), fp) )
        {
            szLineBuf[strlen(szLineBuf)-1] = '\0';
            if ( '\r' == szLineBuf[strlen(szLineBuf)-1] )
            {
                szLineBuf[strlen(szLi
### 如何在WordPress中修改用户密码 #### 使用WordPress后台修改密码WordPress网站管理后台,为用户提供一个方便的方式来修改他们的密码是很重要的。这不仅可以帮助确保网站的安全性,还能够提供更好的用户体验[^2]。 要通过WordPress后台修改密码: 1. 登录到WordPress管理仪表盘。 2. 转至左侧菜单中的“用户”,再点击子菜单下的“个人资料”选项。 3. 找到页面中部的“新密码”字段并输入新的密码。 4. 点击底部的“更新个人信息”按钮保存更改。 这种方法适用于已经知道当前登录凭证的情况。 #### 通过MySQL数据库直接修改密码 如果忘记了管理员账户的访问权限,则可以通过直接编辑MySQL数据库来完成密码重置工作。此过程涉及几个具体步骤[^1]。 首先,需要获得对托管服务提供商所提供的phpMyAdmin工具或其他形式SQL客户端程序的访问权。一旦获得了适当级别的访问权限之后,按照如下方式操作: - 进入对应的`wp_users`表格,在这里可以看到所有注册用户的记录; - 定位到希望变更密码的那个特定条目; - 更新该行数据里的`user_pass`列值;注意这里的密码应当经过哈希处理而不是明文存储。为了简化这一流程,可采用内置于某些版本phpMyAdmin内的MD5转换器或将未加密字符串传递给MySQL命令行释器时利用CONCAT()与SHA1()函数组合实现相同效果[^5]。 另外一种更安全的做法是在PHP脚本内部调用WordPress API提供的专用方法来进行这项任务,例如使用 `wp_set_password('newpassword', $user_id)` 函数,其中 `$user_id` 是目标用户的ID编号而 `'newpassword'` 则是要设置的新密码[^4]。 ```sql UPDATE wp_users SET user_pass=MD5('your_new_password') WHERE user_login='admin'; ``` 上述SQL语句展示了如何手动构建一条用于更新指定用户名(`user_login`)对应项下密钥(`user_pass`)内容的指令。不过建议尽可能依赖官方API接口而非自行编写此类底层逻辑以减少潜在风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值