postfixadmin忘记密码后的修改密码方法详解


Posted in PHP onJuly 20, 2016

本文实例讲述了postfixadmin忘记密码后的修改密码方法。分享给大家供大家参考,具体如下:

Postfix Admin 是一个基于Web的 Postfix 邮件发送服务器的管理工具,可以直接管理 Postfix 的虚拟域名和用户。

由于有一段时间没使用postfixadmin增删用户了, 突然需使用时忘记了管理密码,  使用老外的方式直接在数据库里修改密码, 后登录成功

php源码:

<?php
echo md5crypt("新密码");
// md5crypt
// Action: Creates MD5 encrypted password
// Call: md5crypt (string cleartextpassword)
function md5crypt($pw, $salt = "", $magic = "")
{
  $MAGIC = "$1$";
  if ($magic == "")
  {
    $magic = $MAGIC;
  }
  if ($salt == "")
  {
    $salt = create_salt();
  }
  $slist = explode("$", $salt);
  if (isset($slist[0]) && $slist[0] == "1")
  {
    $salt = $slist[1];
  }
  $salt = substr($salt, 0, 8);
  $ctx = $pw.$magic.$salt;
  $final = hex2bin(md5($pw.$salt.$pw));
  for ($i = strlen($pw); $i > 0; $i -= 16)
  {
    if ($i > 16)
    {
      $ctx .= substr($final,0,16);
    }
    else
    {
      $ctx .= substr($final,0,$i);
    }
  }
  $i = strlen($pw);
  while ($i > 0)
  {
    if ($i & 1)
    {
      $ctx .= chr(0);
    }
    else
    {
      $ctx .= $pw[0];
    }
    $i = $i >> 1;
  }
  $final = hex2bin(md5($ctx));
  for ($i=0; $i<1000; $i++)
  {
    $ctx1 = "";
    if ($i & 1)
    {
      $ctx1 .= $pw;
    }
    else
    {
      $ctx1 .= substr($final,0,16);
    }
    if ($i % 3)
    {
      $ctx1 .= $salt;
    }
    if ($i % 7)
    {
      $ctx1 .= $pw;
    }
    if ($i & 1)
    {
      $ctx1 .= substr($final, 0, 16);
    }
    else
    {
      $ctx1 .= $pw;
    }
    $final = hex2bin(md5($ctx1));
  }
  $passwd = "";
  $passwd .= to64(((ord($final[0]) << 16) | (ord($final[6]) << 8) | (ord($final[12]))), 4);
  $passwd .= to64(((ord($final[1]) << 16) | (ord($final[7]) << 8) | (ord($final[13]))), 4);
  $passwd .= to64(((ord($final[2]) << 16) | (ord($final[8]) << 8) | (ord($final[14]))), 4);
  $passwd .= to64(((ord($final[3]) << 16) | (ord($final[9]) << 8) | (ord($final[15]))), 4);
  $passwd .= to64(((ord($final[4]) << 16) | (ord($final[10]) << 8) | (ord($final[5]))), 4);
  $passwd .= to64(ord($final[11]), 2);
  return $magic.$salt.'$'.$passwd;
}
function create_salt()
{
  srand((double) microtime() * 1000000);
  return substr(md5(rand(0,9999999)), 0, 8);
}
// PHP around 5.3.8 includes hex2bin as native function - http://php.net/hex2bin
function hex2bin($str)
{
    $len = strlen($str);
    $nstr = "";
    for ($i = 0; $i < $len; $i += 2)
    {
      $num = sscanf(substr($str, $i, 2), "%x");
      $nstr .= chr($num[0]);
    }
    return $nstr;
}
function to64($v, $n)
{
  $ITOA64 = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  $ret = "";
  while (($n - 1) >= 0)
  {
    $n--;
    $ret .= $ITOA64[$v & 0x3f];
    $v = $v >> 6;
  }
  return $ret;
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
一些常用的php函数
Dec 06 PHP
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
Apr 18 PHP
php下实现伪 url 的超简单方法[转]
Sep 24 PHP
采用PHP函数memory_get_usage获取PHP内存清耗量的方法
Dec 06 PHP
使用php语句将数据库*.sql文件导入数据库
May 05 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
May 15 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
Jul 08 PHP
ThinkPHP中使用Ueditor富文本编辑器
Sep 02 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
Jan 07 PHP
Yii操作数据库实现动态获取表名的方法
Mar 29 PHP
laravel实现批量更新多条记录的方法示例
Oct 22 PHP
PHP连接MySQL数据库操作代码实例解析
Jul 11 PHP
PHP简单日历实现方法
Jul 20 #PHP
分析PHP中单双引号的误区和双引号小隐患
Jul 19 #PHP
PHP实现数组array转换成xml的方法
Jul 19 #PHP
smarty循环嵌套用法示例分析
Jul 19 #PHP
PHP中Socket连接及读写数据超时问题分析
Jul 19 #PHP
在PHP语言中使用JSON和将json还原成数组的方法
Jul 19 #PHP
JSON两种结构之对象和数组的理解
Jul 19 #PHP
You might like
dede3.1分页文字采集过滤规则详说(图文教程)
2007/04/03 PHP
从PHP的源码中深入了解stdClass类
2014/04/18 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
php实现用户注册密码的crypt加密
2017/06/08 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
利用PHP实现开心消消乐的算法示例
2017/10/12 PHP
在网页中使用document.write时遭遇的奇怪问题
2010/08/24 Javascript
jQuery 重复加载错误以及修复方法
2014/12/16 Javascript
JavaScript实现倒计时代码段Item1(非常实用)
2015/11/03 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件包装
2015/11/20 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
2017/02/05 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
JS打开摄像头并截图上传示例
2017/02/18 Javascript
jQuery:unbind方法的使用详解
2017/08/14 jQuery
ES6中Array.find()和findIndex()函数的用法详解
2017/09/16 Javascript
JavaScript设计模式之构造函数模式实例教程
2018/07/02 Javascript
VUE中使用MUI方法
2019/02/12 Javascript
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
微信小程序开发技巧汇总
2019/07/15 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
JavaScript 异步时序问题
2020/11/20 Javascript
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
Python的Tornado框架实现图片上传及图片大小修改功能
2016/06/30 Python
Python利用splinter实现浏览器自动化操作方法
2018/05/11 Python
对python指数、幂数拟合curve_fit详解
2018/12/29 Python
美国最古老的精致书写工具制造商:A.T. Cross(高仕)
2018/01/30 全球购物
空指针到底是什么
2012/08/07 面试题
什么是跨站脚本攻击
2014/12/11 面试题
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
保险公司早会主持词
2014/03/22 职场文书
超市开店计划书
2014/09/15 职场文书
继续教育个人总结
2015/03/03 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
超级实用的公文标题大全!
2019/07/19 职场文书
vue-router中hash模式与history模式的区别
2021/06/23 Vue.js