前言:此篇关于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. Python运维开发基础05-语法基础

    上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python # -*- coding:utf-8 -*- # author:Mr.chen import os,time Tag = ...

  2. LevelDB Log文件

    [LevelDB Log文件] log文件在LevelDb中的主要作用是系统故障恢复时,能够保证不会丢失数据.因为在将记录写入内存的Memtable之前,会先写入Log文件,这样即使系统发生故障,Me ...

  3. sql中从指定位置截取指定长度字符串

    1. 字符串函数应用 --从指定索引截取指定长度的字符串 ,) --获取字符串中指定字符的索引(从1开始) select charindex(',','ab,cdefg') --实际应用中的语句 , ...

  4. [Selenium]点击下拉框之后,从下拉列表选择元素进行点击很容易失败

    点击下拉框之后,下拉列表会显示出来,但是有时候下拉列表会很快就消失掉,导致后面选择元素的时候会失败. 像这种情况,需要将鼠标移动到下拉列表上,使下拉列表维持显示,然后才选择元素进行点击. 将鼠标移动到 ...

  5. yum 系列(一) yum 和 rpm 常用命令

    yum 系列(一) yum 和 rpm 常用命令 一.yum 常用命令 yum 命令:http://man.linuxde.net/yum yum 是在 Fedora 和 RedHat 以及 SUSE ...

  6. 自旋构造(更新)c#

    int x; void MultiplyXBy (int factor) { var spinWait = new SpinWait(); while (true) { int snapshot1 = ...

  7. jQuery框架-3.jQuery自定义封装插件和第三方插件

    一.jQuery的封装扩展 1.jQuery中extend方法使用 (挂在到jQuery和jQuery.fn两对象身上的使用) 1.1.官方文档定义: jQuery.extend   Merge th ...

  8. 20155334 2016-2017-2 《Java程序设计》第六周学习总结

    20155334 2016-2017-2 <Java程序设计>第六周学习总结 教材学习内容总结 第十章:输入/输出 InputStream与OutputStream java将输入/输出抽 ...

  9. POJ2031 Building a Space Station 2017-04-13 11:38 48人阅读 评论(0) 收藏

    Building a Space Station Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 8572   Accepte ...

  10. Android-HttpsURLConnectionHelp-工具类

    HttpsURLConnectionHelp-工具类 是专门把javax.net.ssl.HttpsURLConnection类的使用,进行了封装,提供了常用的公共方法: package common ...