前言:此篇关于1、wpa2协议漏洞的产生原因;2、scapy这个数据包库的基础;3、最后讲解代码思路,让你们从伪代码可以直接写成代码展开介绍分享~

本文作者:i春秋签约作家——kaikaix

1、大家可以先看看官方文档

// 如果不是很熟悉scapy,推荐看一下我这篇文章的代码https://bbs.ichunqiu.com/thread-18592-1-1.html

http://pan.baidu.com/s/1boVAf63  //

ps:要会wireshark和Python基础 这很重要

 

2、wpa2漏洞

当用户要连接AP(WIFI)将会和AP有四次握手:

前2次不需要关注主要是后2次

(3)AP向用户发送一个密钥,用来加密用户数据的密钥

(4)用户发送ack,表示自己接受到了

那么漏洞是怎么产生的,那就要了解一下wpa2的mitm了(中间人攻击)

1、先创建一个一模一样的AP(ssid一样),而且信号要好过真正的AP(应该也可以用mdk3,强制一直断网)

2、用mdk3或者其他工具,断了用户的网络(mdk3的用法就不讲了,你们可以自行百度,当然待会会用到fluxion,那里自带断网功能)

3、用户会重新连接,因为伪造AP信号强,所以连到伪造AP,向他发送四次握手

请看示意图

好,接下来说一下wpa2的漏洞

1、AP向用户发送一个密钥,用来加密用户数据的密钥

2、用户安装密钥,然后从内存把密钥清0,发送ack数据包

3、拦截ack数据包

4、AP没有收到ACK数据包,重新发送密钥

5、用户接收到密钥,从清0的内存重新安装了一个为0的密钥

这样真正AP就会重发密钥,这里可以看看360发的,比我讲的好,或者直接看文档


3、介绍一些关于scapy的用法

kali自带scapy

Linux安装:

https://github.com/secdev/scapy/archive/v2.3.2.zip

解压后进入文件夹,输入Python setup.py install

剩下的可以看看我的这篇文章

https://bbs.ichunqiu.com/thread-18592-1-1.html

要知道2个重要的函数

(1)sniff(prn=fun)

用于嗅探,把嗅探到的每个数据包都放入fun这个函数进行处理

(2)sendp(packet,iface=’你的网卡名’)

这个函数工作在osi第二层,wpa协议也是第二层的协议

packet是要发送的数据包

iface是网卡,网卡名就是类似wlan0那种

在Python解释器导入库

from scapy.all import

如果要查看有的数据包,可以用

ls()

这里用到的数据包一般都是Dot的

如果要看数据包的有的参数,可以使用ls(名字)

比如:ls(TCP)

创建数据包可以看看我那篇WIFIDOS的代码


4、创建热点

我觉得用fluxion就可以了

https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=17554&highlight=fluxion

可以看这篇文章,来创建伪造AP。当你创建了热点,有一些窗口是要关闭的,因为这会妨碍到程序的正常工作

如果fluxion不可以,那就用其他方法创建wifi,不知道hostapd行不行,我试不了,不知道在那种模式下能不能启动网卡监听模式,只能你们实验了

如果也不可以

可以试一下http://xiao106347.blog.163.com/blog/static/215992078201463597381/

这篇文章

记住,wifi名字要和真正的wifi名字相同

5、拦截ack数据包
拦截ack数据包只要不让真正AP接受到ack数据包就可以了

我们需要用到scapy,如果对scapy不是很了解还是看一下我这篇文章https://bbs.ichunqiu.com/thread-18592-1-1.html比较好

导入库

from scapy.all import *

因为你用fluxion创建热点的时候已经启动了监听模式,这里就不用开启了

直接嗅探

sniff(prn=catch_4,iface=’wlan0′)

把抓取的每个数据都丢进catch_4进行处理

这里需要你们用wireshark进行分析数据包的结构,这样才能判断是不是ack数据包

def sniff(pkt):
    if i==0:
        if pkt.haslayer(EAPOL) and pkt.type ==2:
            #还需要进一步进行判断是不是第四个ack数据包,这就需要你们抓到包自己分析了
            i=i+1

pkt.haslayer(EAPOL)意思是是否存在EAPOL

eapol=pkt.getlayer(EAPOL)就是取这一层的内容,也就是这一层的上面信息全部不取,比如

udp=pkt.getlayer(UDP)可以获得udp的信息

http=udp.getlayer(HTTP)又从udp中读取http的信息

分析数据包的思路就是wireshark肯定有标识是不是ack的,或者抓包直接分析最后一个eapol数据包

还要判断准确性,也就是判断他们目的地是不是那个真实AP

如果不满足上面那些条件(i=0 and 是ack数据包),就把这个数据包调用sendp发送

sendp(pkt,iface=’wlan0′)

如果满足上面那些条件就不发送数据包,相当于劫持下了ack数据包,而且i+=1

这样可以防止第二次发送ack数据包的时候又被拦截下来,如果你想标识用户的话可以用字典

{‘用户mac’:次数}这样就可以记录是不是同一个用户的ack请求了,提取mac的方法没代码和数据包不好说,所以还是你们自己分析吧


6、结语

密钥就变成0了应该,我也不敢确定我的理解对不对,大致代码思路就是这样,如果我错了,求指出我的错误

http://pan.baidu.com/s/1qYHmK5u最后送上一本书,我从里面学的scapy

wpa2破解代码思路(教你写poc)的更多相关文章

  1. 只有20行Javascript代码!手把手教你写一个页面模板引擎

    http://www.toobug.net/article/how_to_design_front_end_template_engine.html http://barretlee.com/webs ...

  2. 手把手教你写电商爬虫-第三课 实战尚妆网AJAX请求处理和内容提取

    版权声明:本文为博主原创文章,未经博主允许不得转载. 系列教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 看完两篇,相信大家已经从开始的 ...

  3. [原创]手把手教你写网络爬虫(7):URL去重

    手把手教你写网络爬虫(7) 作者:拓海 摘要:从零开始写爬虫,初学者的速成指南! 封面: 本期我们来聊聊URL去重那些事儿.以前我们曾使用Python的字典来保存抓取过的URL,目的是将重复抓取的UR ...

  4. iOS动画进阶 - 教你写 Slack 的 Loading 动画

    (转载自:http://blog.csdn.net/wang631106979/article/details/52473985) 如果移动端访问不佳,可以访问我的个人博客 前几天看了一篇关于动画的博 ...

  5. iOS动画进阶 - 手摸手教你写 Slack 的 Loading 动画

    如果移动端访问不佳,可以访问我的个人博客 前几天看了一篇关于动画的博客叫手摸手教你写 Slack 的 Loading 动画,看着挺炫,但是是安卓版的,寻思的着仿造着写一篇iOS版的,下面是我写这个动画 ...

  6. 手把手教你写Sublime中的Snippet

    手把手教你写Sublime中的Snippet Sublime Text号称最性感的编辑器, 并且越来越多人使用, 美观, 高效 关于如何使用Sublime text可以参考我的另一篇文章, 相信你会喜 ...

  7. Android应用反破解的思路

    一个Android应用要被破解,要经历:反编译->分析代码->重新编译打包的过程,反破解的思路也是从在这三个步骤上做文章: 1, 寻找反编译工具的缺陷,通过阅读其源码或者对其进行压力测试找 ...

  8. 看过《大湿教我写.net通用权限框架(1)之菜单导航篇》之后发生的事(续)——主界面

    引言 在UML系列学习中的小插曲:看过<大湿教我写.net通用权限框架(1)之菜单导航篇>之后发生的事 在上篇中只拿登录界面练练手,不把主界面抠出来,实在难受,严重的强迫症啊.之前一直在总 ...

  9. 手把手教你写电商爬虫-第四课 淘宝网商品爬虫自动JS渲染

    版权声明:本文为博主原创文章,未经博主允许不得转载. 系列教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 手把手教你写电商爬虫-第三课 ...

随机推荐

  1. XP系统下 VS2010 选中行崩溃

  2. ConcurrentDictionary内部机制粗解

    ConcurrentDictionary是线程安全类,是什么在保证? 内部类 private class Tables { internal readonly Node[] m_buckets; // ...

  3. JQuery常用函数及功能

    JQuery常用函数及功能小结 来源:http://blog.csdn.net/screensky/article/details/7831000 1.文档加载完成执行函数 $(document).r ...

  4. leetcode 235 236 二叉树两个节点的最近公共祖先

    描述: 给定二叉树两个节点,求其最近公共祖先.最近即所有公共祖先中深度最深的. ps:自身也算自身的祖先. 235题解决: 这是二叉搜索树,有序的,左边小右边大. TreeNode* lowestCo ...

  5. POJ2533 最长递增子序列

    描述: 7 1 7 3 5 9 4 8 输出4 最长递增子序列为1 3 5 9,不必连续. 解法: 三种思路: 转化为最长公共子序列(n^2),动态规划(n^2),不知叫什么解法(nlogn). 解法 ...

  6. 最大正方形 · Maximal Square

    [抄题]: 在一个二维01矩阵中找到全为1的最大正方形 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 返回 4 [暴力解法]: 时间分析: 空间分析:i j 中保留一 ...

  7. SSM整合中每一框架需要做的基本操作简述

    1.dao层的工作 pojo和映射文件以及接口(使用逆向工程) SqlMapConfig.xml(Mybaits核心配置文件) ApplicationContext-dao.xml  整合后Sprin ...

  8. Qt的安装和使用中的常见问题(简略版)

    对于喜欢研究细节的朋友,可参考Qt的安装和使用中的常见问题(详细版). 目录 1.引入 2.Qt简介 3.Qt版本 3.1 查看安装的Qt版本 3.2 查看当前项目使用的Qt版本 3.3 查看当前项目 ...

  9. Java Thread系列(十)Future 模式

    Java Thread系列(十)Future 模式 Future 模式适合在处理很耗时的业务逻辑时进行使用,可以有效的减少系统的响应时间,提高系统的吞吐量. 一.Future 模式核心思想 如下的请求 ...

  10. SLAM拾萃(1):octomap

    前言 大家好,时隔多年之后,我又开始了博客旅程.经历了很多事情之后呢,我发现自己的想法真的很简单:好好读书做课题,闲下来时写写博客,服务大家.所以我会继续写SLAM相关的博客.如果你觉得它对你有帮助, ...