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 之Section与Cookie使用总结
Sep 14 PHP
解析php安全性问题中的:Null 字符问题
Jun 21 PHP
浅谈PHP解析URL函数parse_url和parse_str
Nov 11 PHP
typecho插件编写教程(一):Hello World
May 28 PHP
php从文件夹随机读取文件的方法
Jun 01 PHP
php计算整个mysql数据库大小的方法
Jun 19 PHP
PHP使用逆波兰式计算工资的方法
Jul 29 PHP
PHP利用APC模块实现大文件上传进度条的方法
Oct 29 PHP
CI框架扩展系统核心类的方法分析
May 23 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
Apr 10 PHP
php转换上传word文件为PDF的方法【基于COM组件】
Jun 10 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 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
Admin generator, filters and I18n
2011/10/06 PHP
php获取给定日期相差天数的方法分析
2017/02/20 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
PHP lcfirst()函数定义与用法
2019/03/08 PHP
thinkphp5.1框架模板布局与模板继承用法分析
2019/07/19 PHP
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
JQuery从头学起第二讲
2010/07/04 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
2013/01/17 Javascript
jquery弹出关闭遮罩层实例
2013/08/06 Javascript
jQuery filter函数使用方法
2014/05/19 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
javascript实现简单加载随机色方块
2015/12/25 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
2016/02/27 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
2016/12/26 Javascript
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
Vue快速实现通用表单验证的示例代码
2020/01/09 Javascript
Python爬虫信息输入及页面的切换方法
2018/05/11 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
flask利用flask-wtf验证上传的文件的方法
2020/01/17 Python
Python模拟FTP文件服务器的操作方法
2020/02/18 Python
Django之富文本(获取内容,设置内容方式)
2020/05/21 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
植村秀美国官网:Shu Uemura美国
2019/03/19 全球购物
优秀员工自荐信范文
2013/10/05 职场文书
创业计划书六个要素
2013/12/26 职场文书
校园创业策划书
2014/01/14 职场文书
团日活动策划书
2014/02/01 职场文书
竞聘书模板
2014/03/31 职场文书
我的求职择业计划书
2014/04/04 职场文书
汽车维修专业自荐书
2014/05/26 职场文书
2015年入党决心书
2015/02/05 职场文书
业务员辞职信范文
2015/03/02 职场文书
通知函格式范文
2015/04/27 职场文书
阿里云日志过滤器配置日志服务
2022/04/09 Servers
Python测试框架pytest高阶用法全面详解
2022/06/01 Python