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 显示指定路径下的图片
Oct 29 PHP
PHP父类调用子类方法的代码例子
Apr 09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
Jun 23 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
Oct 13 PHP
php的GD库imagettftext函数解决中文乱码问题
Jan 24 PHP
WordPress中使主题支持小工具以及添加插件启用函数
Dec 22 PHP
PHP缩略图生成和图片水印制作
Jan 07 PHP
php7函数,声明,返回值等新特性介绍
May 25 PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 PHP
php提取微信账单的有效信息
Oct 01 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
Nov 10 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
Sep 26 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
php+oracle 分页类
2006/10/09 PHP
mysql5的sql文件导入到mysql4的方法
2008/10/19 PHP
php读取xml实例代码
2010/01/28 PHP
php生成excel列名超过26列大于Z时的解决方法
2014/12/29 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
PHP实现的支付宝支付功能示例
2019/03/26 PHP
js判断上传文件类型判断FileUpload文件类型代码
2014/05/20 Javascript
chrome下img加载对height()的影响示例探讨
2014/05/26 Javascript
script标签属性用type还是language
2015/01/21 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
Bootstrap选项卡动态切换效果
2016/11/28 Javascript
微信小程序左右滑动切换页面详解及实例代码
2017/02/28 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
微信小程序实现底部导航
2018/11/05 Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
2019/06/06 jQuery
mpvue微信小程序的接口请求fly全局拦截代码实例
2019/11/13 Javascript
深入了解JS之作用域和闭包
2020/06/16 Javascript
Python中用max()方法求最大值的介绍
2015/05/15 Python
Python爬虫信息输入及页面的切换方法
2018/05/11 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
Sanic框架蓝图用法实例分析
2018/07/17 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
Python图像滤波处理操作示例【基于ImageFilter类】
2019/01/03 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
2019/01/05 Python
Python数据可视化之画图
2019/01/15 Python
解决Python中pandas读取*.csv文件出现编码问题
2019/07/12 Python
Python3实现飞机大战游戏
2020/04/24 Python
巴塞罗那观光通票:Barcelona Pass
2019/10/30 全球购物
自动化系在校本科生求职信
2013/10/23 职场文书
远程研修随笔感言
2014/02/10 职场文书
《听鱼说话》教学反思
2014/02/15 职场文书
机关党员公开承诺书
2014/08/30 职场文书
紧急通知
2015/04/17 职场文书
嘉年华活动新闻稿
2015/07/17 职场文书
校运会广播稿
2015/08/19 职场文书
Python字符串的转义字符
2022/04/07 Python