本类共有 2230 篇文章,今日更新 0

经典算法之黑色应用(穷举法)

[ 来源:http://www.91now.com/down/ | 作者: | 时间:2007-5-21 11:56:42 | 浏览: 人次 ]

一、穷举法理论
  穷举算法有点像数学上说的"完全归纳法",在问题答案可能的全部解集内逐一查询(测试)直到找出答案为止,这种算法在密码破解中得到了广泛的应用,但该算法的缺点是运算规模比较大,算法的"最好情况时间复杂度!"为1,"最坏情况时间复杂度"是n,"平均时间复杂度"是(((1+n)*n)/2)/n,另外在网络环境里进行远程破解还要考虑连接到远程机器所需花费的时间。

使用穷举法进行密码破解的伪C代码算法大致的模型是这样的:
设:flag和done为BOOL型变量,pass为存放当前口令字串的char型数组变量,当flag为TRUE时为找到密码,done为TRUE时为使用完了全部字典口令单词。

void docrackpassword(void *para)
{
char pass[MAX_PASSLEN];
do{
生成或从文件读取一个口令字串放入pass;
进行一次本地或远程密码测试(使用pass里的口令字串);
if(密码正确)flag=TURE;
if(口令字典中的字串全部用完或已经生成完了全部口令字串) done=TRUE;
}while(!flag&&!done)
if(flag) printf("Yeah! Password is %s\n",pass);
else
printf("Password Not Found\n");
}//end docrackpassword

在一些国家有专门的高速破译设备来运行这些程序,这些机器大都有x个处理芯片、超大容量内存,一些常用的指令如:mov,inc,sub,add等都使用硬件实现,而非普通PC机器上使用!的"微指令"技术,如IBM为美军方设计的"飓风"破!译机就是一个典型的破译机器。

广告位