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 相关文章推荐
JAVA/JSP学习系列之六
Oct 09 PHP
Oracle 常见问题解答
Oct 09 PHP
坏狼php学习 计数器实例代码
Jun 15 PHP
非常好用的两个PHP函数 serialize()和unserialize()
Feb 04 PHP
redis 队列操作的例子(php)
Apr 12 PHP
VIM中设置php自动缩进为4个空格的方法详解
Jun 14 PHP
简单介绍PHP的责任链编程模式
Aug 11 PHP
Symfony2联合查询实现方法
Mar 18 PHP
PHP简单获取多个checkbox值的方法
Jun 13 PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 PHP
mac pecl 安装php7.1扩展教程
Oct 17 PHP
让whoops帮我们告别ThinkPHP6的异常页面
Mar 02 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
各种战术和打法的原创者
2020/03/04 星际争霸
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
使用淘宝IP库获取用户ip地理位置
2013/10/27 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
优秀js开源框架-jQuery使用手册(1)
2007/03/10 Javascript
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
jquery.Ajax()方法调用Asp.Net后台的方法解析
2014/02/13 Javascript
一个简单的Node.js异步操作管理器分享
2014/04/29 Javascript
使用原生JS实现弹出层特效
2014/12/22 Javascript
jQuery深拷贝Json对象简单示例
2016/07/06 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
解决angularjs WdatePicker ng-model的问题
2018/09/13 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
node.js实现简单的压缩/解压缩功能示例
2019/11/05 Javascript
python实现一次创建多级目录的方法
2015/05/15 Python
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
Python获取当前路径实现代码
2017/05/08 Python
基于Python的XSS测试工具XSStrike使用方法
2017/07/29 Python
python实现闹钟定时播放音乐功能
2018/01/25 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
Python利用pandas计算多个CSV文件数据值的实例
2018/04/19 Python
python使用webdriver爬取微信公众号
2018/08/31 Python
Django之提交表单与前后端交互的方法
2019/07/19 Python
Python OpenCV去除字母后面的杂线操作
2020/07/05 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
2020/09/03 Python
css3截图_动力节点Java学院整理
2017/07/11 HTML / CSS
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
使用HTML5原生对话框元素并轻松创建模态框组件
2019/03/06 HTML / CSS
澳大利亚手表品牌:Time IV Change
2018/10/06 全球购物
2014大学生党员评议个人总结
2014/09/22 职场文书
高校师德师风自我剖析材料
2014/09/29 职场文书
2014报到证办理个人委托书
2014/10/08 职场文书
解除劳动关系协议书2篇
2014/11/28 职场文书
暑期辅导班宣传单
2015/07/14 职场文书
安全生产感想
2015/08/07 职场文书