打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
php版密码字典生成[原创]
2009-12-31 15:07

php版密码字典生成[原创]

现在越来越发现高数的重要了.高数中的排列与组合正是密码字典生成的原理,当初要是把高数学好了.把它们的推理过程搞明白了.现在一定写的东西更高效!
ini_set('max_execution_time','0');
ini_set('memory_limit','512M');

function make_book($n){
$tempArr = array();//字典数组
$source='abc';
$len=strlen($source);//得到源字串的长度
$count=1;
for($i=0;$i<$n;$i++){//通过循环先得到词典总词数和一个以字长度为下标的数组,数组初始化为(0,…,0)
$count*=$len;//总词数等于源字串长度的n次方,奶奶的,php没有幂运算。
$series[]=0;
}
for($i=0;$i<$count;$i++){//开始循环造词,一次循环造一个词,称为“大循环”
$word='';//词初始化为空字符串
$tonext_value=1;//小循环前设好给末位进位
for($no=$n-1;$no>=0;$no--){//循环遍历数组每次从源字串中取一个字符,为便于进位运算,取字符是从后往前取
$word=$source{$series[$no]}.$word; //先取出一个字符
$series[$no]+=$tonext_value;
if($no>0){
if($series[$no]==$len){
$series[$no]=0;
$tonext_value=1;
}else{
$tonext_value=0;
}
}
}
$tempArr[] = "$word ";
}
return $tempArr;
}
echo '<pre>';
print_r(make_book(4));

真吓人.
一个4位的密码,我将如下就能猜到你的密码
如果全是数字的话:10,000次 echo pow(10, 4);
如果是a-z字符的话:456,976次echo pow(26, 4);
如果是a-z,A-Z的话:7,311,616次echo pow(52, 4);
如果是字符(52),数字(10),特殊符号(按20个符号)组合:45,212,176次echo pow(82, 4);

可以用它来生成域名的所有可能.然后看看哪个域名没有注册.呵呵.
@set_time_limit(0);
include_once('com_1.php');
$temp = array_chunk($a, 500);unset($a);//echo '<pre>';print_r($temp);exit;
$j = count($temp);
for($i=0;$i<$j;$i++){
foreach($temp[$i] as $value){
$value = $value.'.net';
$cmd = "echo `whois -r $value`";    
exec($cmd,$out);    
if(!strpos($out[0],'No match for')){
//$s = "{$value}已注册";    
continue;
}else{        
$s = "{$value}未注册";    
}    
$cmd = "echo $s >> /var/www/xing/out";    
exec($cmd);
}
}
 
 
 

php实现排列组合中的全排列,并实现简单的密码字典生成

<?php?

$arrStr="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.";
$arr=str_split($arrStr);
$strMin=1;
$strMax=2;
$results=array();
//makeDic('',$arr,$strMin,0,$results);
for($i=$strMin;$i<=$strMax;$i++){
 makeDic('',$arr,$i,0,$results);
 print_r($results);
 unset($results);
} function makeDic($strFirst,$arr,$strMin,$tmp,&$results = array()){
 $len=count($arr);
 for($i=0;$i<$len;$i++){
  if($tmp==($strMin-1)){
//   echo $strFirst.$arr[$i]."\n\r<br />";
   $results[]=$strFirst.$arr[$i];
  } else {
   $tmpResult=$strFirst.$arr[$i];
   $tmp+=1;
//   echo $tmpResult."\n\r<br />".$tmp."\n\r<br />";
   makeDic($tmpResult, $arr,$strMin,$tmp, $results);
   $tmp-=1;
//   echo $tmp."\n\r<br />";
  }
 }
}?>
 
 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
PHP中each与list用法分析
破解php代码混淆加密的程序
php生成多个不重复的随机数实例程序
php多文件上传解析和代码示例
简单的php文件上传(实例)
php生成随机数的三种方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服