破解Wifi密码的时候

破解wpa/wpa2的密码是一件简单的事情但不是一件容易的事情。

遇到的第一个问题就是密码库,鉴于很多人喜欢把生日作为密码,那么我就从生日开始猜测了。

先写一个生成密码的小程序:

#include <iostream>
#include <iomanip>
using namespace std;
int main(){
    int y = 1970;
    for(; y < 2016; y ++)
		for(int m = 1; m < 13; m ++)
		if(m == 2)
			for(int d = 1; d < 30; d ++)
			cout<<y<<setw(2)<<setfill('0')<<m<<setw(2)<<setfill('0')<<d<<endl;
		else if(m == 4|| m == 6|| m == 9|| m == 11)
			for(int d = 1; d < 31; d ++)
			cout<<y<<setw(2)<<setfill('0')<<m<<setw(2)<<setfill('0')<<d<<endl;
		else
			for(int d = 1; d < 32; d ++)
			cout<<y<<setw(2)<<setfill('0')<<m<<setw(2)<<setfill('0')<<d<<endl;
    return 0;
}

生成的密码文件在这儿

其中遇到的几个小问题:

1、数字补全两位,用setw()函数和setfill()函数,包含头文件iomanip;其中setw是用来设置位宽,即str有多少位,setfill则是用来设置补全的字符。特别需要注意的是setw只对其后第一个str有效。

2、月份天数,在最后输出的时候添加一个月份判断,从而决定每个月的天数。由于2月份很蛋疼,平年闰年的,我就一律设置成了29天。

3、你问我为什么不直接输出到文件里,其实我是这样做的./number > numbers.txt 嗯,就酱。

4、还有一个小的细节,判断月份的时候,我第一次先判断的31天的月份,看了看,那么多月份,代码真的很丑,于是乎,从少的开始,先是2月份,然后是30天的月份,然后再是else。我也不是一开始就想到要先写二月份的。QAQ


更新于 2016-12-11

这篇文章写了都快两年了,发现,我tm竟然不会C++了。。。

不过这程序看起来还是蛮精简的哈。

可是呢,还有更简单的方法:

for y in {1990..1996};do for m in {01..12};do for d in {01..31};do echo $y$m$d;done; done; done

每个月就按31天来,多出的十几天也不碍事:)

comments powered by Disqus