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 mysql Errcode: 28 终极解决方法
Jul 01 PHP
php批量缩放图片的代码[ini参数控制]
Feb 11 PHP
php中判断文件存在是用file_exists还是is_file的整理
Sep 12 PHP
基于curl数据采集之正则处理函数get_matches的使用
Apr 28 PHP
PHP的curl实现get,post和cookie(实例介绍)
Jun 17 PHP
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
Aug 05 PHP
php header功能的使用
Oct 28 PHP
PHP获得数组交集与差集的方法
Jun 10 PHP
PHP比较运算符的详细介绍
Sep 29 PHP
PHP静态延迟绑定和普通静态效率的对比
Oct 20 PHP
php基于环形链表解决约瑟夫环问题示例
Nov 07 PHP
PHP实现负载均衡的加权轮询方法分析
Aug 22 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
WAR3重制版DOTA 5V5初体验
2020/04/09 DOTA
Uchome1.2 1.5 代码学习 common.php
2009/04/24 PHP
Session保存到数据库的php类分享
2011/10/24 PHP
thinkPHP实现瀑布流的方法
2014/11/29 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
2016/03/21 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
Laravel实现搜索的时候分页并携带参数
2019/10/15 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
DeviceOne 让你一见钟情的App快速开发平台
2016/02/17 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
2016/03/03 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
再谈javascript常见错误及解决方法
2016/09/16 Javascript
node.js-v6新版安装具体步骤(分享)
2017/09/06 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
2020/02/16 Javascript
vue项目实现减少app.js和vender.js的体积操作
2020/11/12 Javascript
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
Python文件及目录操作实例详解
2015/06/04 Python
Python实现简单截取中文字符串的方法
2015/06/15 Python
Python中对元组和列表按条件进行排序的方法示例
2015/11/10 Python
Python制作词云的方法
2018/01/03 Python
解决Spyder中图片显示太小的问题
2018/04/27 Python
python随机数分布random测试
2018/08/27 Python
python实现简单登陆系统
2018/10/18 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
稀有和绝版书籍:Biblio.com
2017/02/02 全球购物
英国和爱尔兰最大的地毯零售商:Kukoon
2018/12/17 全球购物
国际奢侈品品牌童装购物网站:Designer Childrenswear
2019/05/08 全球购物
公司建议书怎么写
2014/05/15 职场文书
通信工程专业求职信
2014/06/04 职场文书
环境工程专业自荐信范文
2014/06/24 职场文书
2014年四风问题个人对照自查剖析材料
2014/09/15 职场文书
2014年班组工作总结
2014/11/20 职场文书
客户经理岗位职责
2015/01/31 职场文书
大学生自我推荐信范文
2015/03/24 职场文书
CSS中em的正确打开方式详解
2021/04/08 HTML / CSS