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(视频)Http下载
Dec 12 PHP
php抓取页面与代码解析 推荐
Jul 23 PHP
php连接mssql数据库的几种方法
Feb 21 PHP
php权重计算方法代码分享
Jan 09 PHP
php实现四舍五入的方法小结
Mar 03 PHP
PHP中实现crontab代码分享
Mar 26 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
Mar 23 PHP
php实现博客,论坛图片防盗链的方法
Oct 15 PHP
PHP操作redis实现的分页列表,新增,删除功能封装类与用法示例
Aug 04 PHP
PDO::setAttribute讲解
Jan 29 PHP
php5与php7的区别点总结
Oct 11 PHP
PHP多进程简单实例小结
Nov 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
声音就能俘获人心,蕾姆,是哪个漂亮小姐姐配音呢?
2020/03/03 日漫
PHP中PDO基础教程 入门级
2011/09/04 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
JS实现标签页效果(配合css)
2013/04/03 Javascript
巧用局部变量提升javascript性能
2014/02/24 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
使用jQuery实现input数值增量和减量的方法
2015/01/24 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
2015/11/30 Javascript
JavaScript代码生成PDF文件的方法
2016/02/26 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
2016/12/26 Javascript
JavaScript用200行代码制作打飞机小游戏实例
2017/06/21 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
React Native 真机断点调试+跨域资源加载出错问题的解决方法
2018/01/18 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
2018/08/10 Javascript
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
js String.prototype.trim字符去前后空格的扩展
2020/08/23 Javascript
vue路由跳转传递参数的方式总结
2020/05/10 Javascript
jQuery 实现DOM元素拖拽交换位置的实例代码
2020/07/14 jQuery
解决await在forEach中不起作用的问题
2021/02/25 Javascript
[57:55]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第二场 12.12
2020/12/16 DOTA
Python调用SQLPlus来操作和解析Oracle数据库的方法
2016/04/09 Python
Python之lambda匿名函数及map和filter的用法
2019/03/05 Python
意大利珠宝店:Luxury Zone
2019/01/05 全球购物
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
简历中自我评价分享
2013/10/09 职场文书
中秋节超市促销方案
2014/01/30 职场文书
学前班评语大全
2014/05/04 职场文书
警示教育活动总结
2014/05/05 职场文书
瘦西湖导游词
2015/02/03 职场文书
2016学校先进党组织事迹材料
2016/02/29 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书
Java字符串逆序方法详情
2022/03/21 Java/Android
搭建Yolov5服务器
2022/04/30 Servers
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
2022/05/25 SQL Server