隨着無線網絡的不斷發展,幾乎所有場合都會覆蓋WIFI信號,無論是公共地點還是家庭之中。眾所周知,目前WIFI普遍的認證方式為wpa2,這種認證方式安全性相當不錯,但由於人們設置密碼時的隨意性和固有思維,使得我們可以利用字典暴力破解。
普通的字典大多是全覆蓋的、總結性的,針對部分弱口令或許有用,不過1g的字典就算跑也要跑幾個小時。那么如何利用已知目標wifi用戶的信息生成一個不錯的字典呢?
尋找wifi及具體信息
首先,生成字典的目的是為了破解密碼,而想要破解密碼,得先尋找一個wifi,假設找到了你鄰居的wifi,那么接下來要做的就是收集信息。譬如:鄰居的名字,生日,工作,老婆叫什么,兒子叫什么,生日是哪天。我們獲得的信息越多,生成的密碼字典就越豐富,破解可能性就越大。
填寫信息文件
收集信息后,要做的是創建一個文件。
如圖,首先創建一個名為information的文件,無后綴。格式如下,以“:”為分界線(英文冒號),左側為信息名稱,右側為信息的具體內容,內容不清楚則填no,由於代碼關系,不要少於20行。
生成字典
信息文件創建完畢后,便可以生成字典。這里我使用python來完成這一工作。生成的算法策略如下。
1. 大於8位的直接保留,小於8位的舍棄。
2. 信息相互組合,小於8位舍棄。
3. 生日提取年份、日月與其他信息組合,小於8位舍棄。
4. 所有小於8位的信息與短數字(0-9的全排列)進行組合,生成8位密碼。
5. 所有信息與的9位以內短數字進行組合如(1233456789,000000000)。
6. 所有組合與特殊符號相結合,如“#”、“%”等。特殊字符的位置可以是開頭中間和結尾。
接下來,使用python根據以上策略對信息進行結合處理。首先將信息存入一個list中。

f = open('information','r') lines = f.read().split(' ') name = lines[0].split(':')[1] list.append(name) simple_name = lines[1].split(':')[1] list.append(simple_name) family_name = lines[2].split(':')[1] list.append(family_name) phone_number = lines[3].split(':')[1] list.append(phone_number) study_number = lines[4].split(':')[1] list.append(study_number) birthday = lines[5].split(':')[1] list.append(birthday) if birthday!='no' and birthday!= 'NO': birthday_month_day = birthday[4:] birthday_year = birthday[0:4] list.append(birthday_month_day) list.append(birthday_year) else: birthday_month_day = 'no' birthday_year = 'no' list.append(birthday_month_day) list.append(birthday_year) idol_name = lines[6].split(':')[1] list.append(idol_name) idol_simple_name = lines[7].split(':')[1] list.append(idol_simple_name) father_name = lines[8].split(':')[1] list.append(family_name) father_simple_name = lines[9].split(':')[1] list.append(father_simple_name) mather_name = lines[10].split(':')[1] list.append(mather_name) mather_simple_name = lines[11].split(':')[1] list.append(mather_simple_name) son_name = lines[12].split(':')[1] list.append(son_name) son_simple_name = lines[13].split(':')[1] list.append(son_simple_name) father_birthday = lines[14].split(':')[1] list.append(father_birthday) if father_birthday!='no' and father_birthday!= 'NO': father_birthday_month_day = father_birthday[4:] father_birthday_year = father_birthday[0:4] list.append(father_birthday_month_day) list.append(father_birthday_year) else: father_birthday_month_day = 'no' father_birthday_year = 'no' list.append(father_birthday_month_day) list.append(father_birthday_year) mather_birthday = lines[15].split(':')[1] list.append(mather_birthday) if mather_birthday!='no' and mather_birthday!= 'NO': mather_birthday_month_day = mather_birthday[4:] mather_birthday_year = mather_birthday[0:4] list.append(mather_birthday_month_day) list.append(mather_birthday_year) else: mather_birthday_month_day = 'no' mather_birthday_year = 'no' list.append(mather_birthday_month_day) list.append(mather_birthday_year) son_birthday = lines[16].split(':')[1] list.append(son_birthday) if son_birthday !='no' and son_birthday != 'NO': son_birthday_month_day = son_birthday[4:] son_birthday_year = son_birthday[0:4] list.append(son_birthday_month_day) list.append(son_birthday_year) else: son_birthday_month_day = 'no' son_birthday_year = 'no' list.append(son_birthday_month_day) list.append(son_birthday_year) address = lines[17].split(':')[1] list.append(address) university_name = lines[18].split(':')[1] list.append(university_name) university_simple_name = lines[19].split(':')[1] list.append(university_simple_name) for i in range(20,len(lines)): list.append(lines[i].split(':')[1]) f.close()
為了閱讀方便,information文件中前20個信息寫的很具體。最后三行則是對20行之后的補充。
隨后,將短數字與特殊符號放入其他兩個list中,代碼見最后。並根據策略進行相互組合。最后生成符合我們心意的字典。最后附上代碼~

#coding:utf-8 import itertools def read_file(): try: f = open('information','r') lines = f.read().split(' ') name = lines[0].split(':')[1] list.append(name) simple_name = lines[1].split(':')[1] list.append(simple_name) family_name = lines[2].split(':')[1] list.append(family_name) phone_number = lines[3].split(':')[1] list.append(phone_number) study_number = lines[4].split(':')[1] list.append(study_number) birthday = lines[5].split(':')[1] list.append(birthday) if birthday!='no' and birthday!= 'NO': birthday_month_day = birthday[4:] birthday_year = birthday[0:4] list.append(birthday_month_day) list.append(birthday_year) else: birthday_month_day = 'no' birthday_year = 'no' list.append(birthday_month_day) list.append(birthday_year) idol_name = lines[6].split(':')[1] list.append(idol_name) idol_simple_name = lines[7].split(':')[1] list.append(idol_simple_name) father_name = lines[8].split(':')[1] list.append(family_name) father_simple_name = lines[9].split(':')[1] list.append(father_simple_name) mather_name = lines[10].split(':')[1] list.append(mather_name) mather_simple_name = lines[11].split(':')[1] list.append(mather_simple_name) son_name = lines[12].split(':')[1] list.append(son_name) son_simple_name = lines[13].split(':')[1] list.append(son_simple_name) father_birthday = lines[14].split(':')[1] list.append(father_birthday) if father_birthday!='no' and father_birthday!= 'NO': father_birthday_month_day = father_birthday[4:] father_birthday_year = father_birthday[0:4] list.append(father_birthday_month_day) list.append(father_birthday_year) else: father_birthday_month_day = 'no' father_birthday_year = 'no' list.append(father_birthday_month_day) list.append(father_birthday_year) mather_birthday = lines[15].split(':')[1] list.append(mather_birthday) if mather_birthday!='no' and mather_birthday!= 'NO': mather_birthday_month_day = mather_birthday[4:] mather_birthday_year = mather_birthday[0:4] list.append(mather_birthday_month_day) list.append(mather_birthday_year) else: mather_birthday_month_day = 'no' mather_birthday_year = 'no' list.append(mather_birthday_month_day) list.append(mather_birthday_year) son_birthday = lines[16].split(':')[1] list.append(son_birthday) if son_birthday !='no' and son_birthday != 'NO': son_birthday_month_day = son_birthday[4:] son_birthday_year = son_birthday[0:4] list.append(son_birthday_month_day) list.append(son_birthday_year) else: son_birthday_month_day = 'no' son_birthday_year = 'no' list.append(son_birthday_month_day) list.append(son_birthday_year) address = lines[17].split(':')[1] list.append(address) university_name = lines[18].split(':')[1] list.append(university_name) university_simple_name = lines[19].split(':')[1] list.append(university_simple_name) for i in range(20,len(lines)): list.append(lines[i].split(':')[1]) f.close() except: pass def combination(): f = open('create_key','w') for i in range(len(list)): if list[i]!='no': if len(list[i]) >= 8: f.write(list[i]+' ') elif len(list[i])<8: n = 8 - len(list[i]) for j in itertools.permutations('1234567890',n): f.write(list[i]+''.join(j)+' ') for j in range(0,len(list)): if len(list[i]+list[j])>=8 and list[i]!='no' and list[j]!='no' and list[i]!=list[j]: f.write(list[i]+list[j]+' ') for m in range(0,len(list_special)): f.write(list_special[m]+list[i] + list[j] + ' ') f.write(list[i] + list_special[m] + list[j] + ' ') f.write(list[i] + list[j] + list_special[m] + ' ') for k in range(0,12): for l in range(10): if len(list[i]+list_number[k][0:l])>=8: f.write(list[i]+list_number[k][0:l]+' ') f.write(list_number[k][0:l]+list[i]+' ') for m in range(0, len(list_special)): f.write(list_special[m] + list[i] + list_number[k][0:l] + ' ') f.write(list[i] + list_special[m] + list_number[k][0:l] + ' ') f.write(list[i] + list_number[k][0:l] + list_special[m] + ' ') f.write(list_special[m] + list_number[k][0:l] + list[i] + ' ') f.write(list_number[k][0:l] +list_special[m] + list[i] + ' ') f.write(list_number[k][0:l] + list[i] + list_special[m]+' ') f.write(list[i]+list_number[k]+' ') for m in range(0, len(list_special)): f.write(list_special[m]+list[i] + list_number[k] + ' ') f.write(list[i]+list_special[m]+list_number[k]+' ') f.write(list[i]+list_number[k]+list_special[m]+' ') f.write(list_number[k]+list[i]+' ') for m in range(0, len(list_special)): f.write(list_special[m]+list_number[k] + list[i] + ' ') f.write(list_number[k]+list_special[m]+list[i]+' ') f.write(list_number[k]+list[i]+list_special[m]+' ') f.close() def create_list_number(): simple_number1 = '123456789' list_number.append(simple_number1) simple_number2 = '000000000' list_number.append(simple_number2) simple_number3 = '111111111' list_number.append(simple_number3) simple_number4 = '222222222' list_number.append(simple_number4) simple_number5 = '333333333' list_number.append(simple_number5) simple_number6 = '444444444' list_number.append(simple_number6) simple_number7 = '555555555' list_number.append(simple_number7) simple_number8 = '666666666' list_number.append(simple_number8) simple_number9 = '777777777' list_number.append(simple_number9) simple_number10 = '888888888' list_number.append(simple_number10) simple_number11 = '999999999' list_number.append(simple_number11) simple_number12 = '987654321' list_number.append(simple_number12) def create_list_special(): list_special.append(',') list_special.append('.') list_special.append('?') list_special.append('#') list_special.append('/') list_special.append(';') list_special.append(':') list_special.append('!') list_special.append('@') list_special.append('$') list_special.append('%') list_special.append('^') list_special.append('&') list_special.append('*') def main(): global list list = [] global list_number list_number = [] global list_special list_special = [] create_list_special() create_list_number() read_file() combination() if __name__ == '__main__': main()
原文:https://blog.csdn.net/qq_41841569/article/details/83959309