php 字典初始化,php版密码字典生成[原创]

这篇博客探讨了如何使用PHP实现全排列算法,用于生成密码字典。作者指出高数中的排列与组合原理在密码学中的应用,并提供了一个PHP函数来生成不同长度的密码组合。示例代码展示了如何生成不同字符集(如数字、字母)的密码组合,以及如何利用这些生成的密码字典尝试猜测域名是否已注册。
摘要由CSDN通过智能技术生成

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

$count*=$len;//总词数等于源字串长度的n次方,奶奶的,php没有幂运算。

$series[]=0;

}

for($i=0;$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 '

';

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 '

';print_r($temp);exit;

$j = count($temp);

for($i=0;$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实现排列组合中的全排列,并实现简单的密码字典生成

$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

if($tmp==($strMin-1)){

//   echo $strFirst.$arr[$i]."\n\r
";

$results[]=$strFirst.$arr[$i];

} else {

$tmpResult=$strFirst.$arr[$i];

$tmp+=1;

//   echo $tmpResult."\n\r
".$tmp."\n\r
";

makeDic($tmpResult, $arr,$strMin,$tmp, $results);

$tmp-=1;

//   echo $tmp."\n\r
";

}

}

}?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值