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 09 PHP
php include,include_once,require,require_once
Sep 05 PHP
PHP常用代码大全(新手入门必备)
Jun 29 PHP
php4与php5的区别小结(配置异同)
Dec 20 PHP
php中的一些数组排序方法分享
Jul 20 PHP
PHP封装分页函数实现文本分页和数字分页
Oct 23 PHP
php自动获取关键字的方法
Jan 06 PHP
Symfony2实现从数据库获取数据的方法小结
Mar 18 PHP
微信JSSDK分享功能图文实例详解
Apr 08 PHP
PHP使用phpunit进行单元测试示例
Sep 23 PHP
php更新cookie内容的详细方法
Sep 30 PHP
thinkphp诸多限制条件下如何getshell详解
Dec 09 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
用ADODB来让PHP操作ACCESS数据库的方法
2006/12/31 PHP
PHP中使用SimpleXML检查XML文件结构实例
2015/01/07 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
jQuery使用一个按钮控制图片的伸缩实现思路
2013/04/19 Javascript
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
深入理解Ajax的get和post请求
2016/06/02 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
2016/11/21 Javascript
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
2017/03/09 Javascript
ES6学习笔记之map、set与数组、对象的对比
2018/03/01 Javascript
vue利用axios来完成数据的交互
2018/03/23 Javascript
vue 表单输入格式化中文输入法异常问题
2018/05/30 Javascript
Vue函数式组件-你值得拥有
2019/05/09 Javascript
[39:07]LGD vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
用python分割TXT文件成4K的TXT文件
2009/05/23 Python
python单链表实现代码实例
2013/11/21 Python
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
浅谈Python 字符串格式化输出(format/printf)
2016/07/21 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
Python3.5常见内置方法参数用法实例详解
2019/04/29 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
2019/06/04 Python
简单的命令查看安装的python版本号
2020/08/28 Python
python dir函数快速掌握用法技巧
2020/12/09 Python
Python Spyder 调出缩进对齐线的操作
2021/02/26 Python
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
2014/05/07 HTML / CSS
Android本地应用打开方法——通过html5写连接
2016/03/11 HTML / CSS
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
美国独家设计师眼镜在线光学商店:Glasses Gallery
2017/12/28 全球购物
服务口号大全
2014/06/11 职场文书
三方股东合作协议书
2014/10/28 职场文书
2014年银行个人工作总结
2014/12/05 职场文书
给老婆道歉的话
2015/01/20 职场文书
个人年终总结怎么写
2015/03/09 职场文书
教你怎么用Python实现GIF动图的提取及合成
2021/06/15 Python
MySQL中正则表达式(REGEXP)使用详解
2022/07/07 MySQL