随着无线网络的不断发展,几乎所有场合都会覆盖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('',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 = ''
list_number.append(simple_number1)
simple_number2 = ''
list_number.append(simple_number2)
simple_number3 = ''
list_number.append(simple_number3)
simple_number4 = ''
list_number.append(simple_number4)
simple_number5 = ''
list_number.append(simple_number5)
simple_number6 = ''
list_number.append(simple_number6)
simple_number7 = ''
list_number.append(simple_number7)
simple_number8 = ''
list_number.append(simple_number8)
simple_number9 = ''
list_number.append(simple_number9)
simple_number10 = ''
list_number.append(simple_number10)
simple_number11 = ''
list_number.append(simple_number11)
simple_number12 = ''
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

用python进行wifi密码生成的更多相关文章

  1. Python破解Wifi密码思路

    一.前言说明 本机运行环境:系统环境Win10,运行环境Python3.6,运行工具Pycharm 需要Python的包有:pywifi 这是一种暴力破解wifi的模式,需要的时间比较长,本文主要提供 ...

  2. 用 Python 破解 WiFi 密码

    如今,WiFi 跟我们的生活息息相关,无处不在.没有 WiFi 的地方是没有灵魂的! ​ 然而,比没有WiFi更让人绝望的,是有满格WiFi信号却没有密码…… ​ 今天我们就来尝试下,如何利用pyth ...

  3. 牛逼了,用Python破解wifi密码

    Python真的是无所不能,原因就是因为Python有数目庞大的库,无数的现成的轮子,让你做很多很多应用都非常方便.wifi跟我们的生活息息相关,无处不在.今天从WiFi连接的原理,再结合代码为大家详 ...

  4. 用 Python 破解 WIFI 密码,走到哪里都能连 WIFI

    WIFI 破解,Python 程序员必学技能.WIFI 已经完全普及,现在 Python 程序员没网,走到哪里都不怕! 教你们一招,如何在图片中提取 Python 脚本代码.图片发送至手机 QQ 长按 ...

  5. python写一个密码生成器的类,要求有个类变量,统计一下一共生成过多少个密码。 要求有4个方法,1:构造方法 2 实例方法 3 类方法 4 静态方法

    生成指定长度的随机数字密码 生成指定长度的随机字母密码 生成指定长度的随机数字和字母的混合 #encoding=utf-8   import random import string class pa ...

  6. Python 查看本机WiFi密码

    http://www.lijiejie.com/python-get-all-saved-wifi-passwords/ 很早以前我写过一个,丢了.  今天偶然看到这篇文章 , 也是很久以前写的,他用 ...

  7. 分享一个撩妹、装13神技能,0基础用Python暴力破解WiFi密码

    WiFi密码Python暴力破解   Python密码破解部分截图 获取视频资料,转发此文+点击喜欢,然后获取资料请加Python交流群:580478401,就可以获取视频教程+源码 环境准备: py ...

  8. Python黑客泰斗利用aircrack-ng破解 wifi 密码,超详细教程!

    开始前,先连上无线网卡,因为虚拟机中的kali系统不用调用笔记本自带的无线网卡,所以需要一个外接无线网卡,然后接入kali系统. 输入 ifconfig -a 查看网卡,多了个 wlan0,说明网卡已 ...

  9. python暴力破解wifi密码程序

    import time # 破解wifi库 import pywifi from pywifi import const class PoJie(object): def __init__(self, ...

随机推荐

  1. Python开发【模块】:aiohttp(一)

    AIOHTTP 用于asyncio和Python的异步HTTP客户端/服务器 主要特点: 支持客户端和HTTP服务器. 支持服务器WebSockets和 客户端WebSockets开箱即用,没有回调地 ...

  2. tortoisegit 常见错误disconnected no supported authentication methods available(server sent: publickey)

    按如图操作 如果不能应用,Enable Proxy Server选中,再点击下面的应用及确定. 操作完上一部,用tortoisegit 下拉一次(git pull),即可解决

  3. 为什么要使用 Docker(二)

    作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势. 更高效的利用系统资源 由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高.无 ...

  4. mysql 内置功能目录

    mysql 内置功能 视图介绍 mysql 内置功能 视图 使用 mysql 内置功能 触发器介绍 mysql 内置功能 触发器 实验 mysql 内置功能 事务 介绍 mysql 内置功能 存储过程 ...

  5. 20190316 Python - Pandas

    1. python 安装3.7版本 2. 第三方包进行数据加工和呈现 需要注意的是,你安装过程中会有很多依赖包问题,如果网络异常,那么就使用https://pypi.org/   地址去找对应的包下载 ...

  6. Perfmon——为什么“% Disk Time”计数器的值会大于100%?

    最近在使用perfmon做性能测试时发现,“% Disk Time”计数器的值总是会大于100%.如下图所示. perfmon上对“% Disk Time”的中文描述为: % Disk Time 指所 ...

  7. .net core中常用的属性

    //IsNullOrWhiteSpace()判断字符串是否为空 指示指定的字符串是 null.空还是仅由空白字符组成,如果字符串的空白String a="  ";IsNullOrE ...

  8. vue-element分页

    <template> <card-layout :title="L('Users')" :actions="actions" @click=& ...

  9. python的mutable变量与immutable变量

    python的变量分为mutable(可变的)和immutable类型. mutable:dict, list immutable:int , string , float ,tuple..

  10. 在Linux直接运行安卓程序

    Linux上的软件少得可怜,要是能够直接运行安卓程序,那将是意见很酷的事情. 方法原理:首先这个方法不需要开启安卓虚拟机,是直接在Linux上运行的. 谷歌在很早之前提出了archon的方案,能够直接 ...