前言:此篇关于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

转载于:https://www.cnblogs.com/ichunqiu/p/7688205.html

wpa2破解代码思路(教你写poc)相关推荐

  1. C# 用真实需求,手把手教你写面向对象的代码

    好久没写过文章了,这里工作很忙. 今天继续给大家讲解下,怎么写面向对象的代码.之前也写过类似的文章,但那都是随便举的例子,不是活生生的现实案例. 今天使用我刚写的项目来举例子,它是真实存在的需求案例, ...

  2. 19 条法则,教你写出火爆 GitHub 的烂代码!

    古人云:好代码万里挑一,烂代码千篇一律. 作为一名开发者,除了我自己写的,别人的代码在我眼里大部分都是「烂代码」.但苦于资历尚欠,所以烂代码见得并不是很多,也没总结出来什么规律.但 GitHub 上的 ...

  3. 猛男教你写代码_猛男程序员,鼓存储器和1960年代机器代码的取证分析

    猛男教你写代码 真正的程序员不使用PASCAL (Real programmers don't use PASCAL) Programmers today build distributed appl ...

  4. 教机器写代码:增强拓扑进化网络(NEAT)

    教机器写代码:增强拓扑进化网络(NEAT) 在这篇文章中,我将向大家介绍一种名为增强拓扑进化网络(NEAT)的机器学习方法. 介绍 我喜欢学习.每当遇到从未接触过的书籍或论文,并开始阅读的时候,我都会 ...

  5. 手牵手教你写代码,从入门到精通

    如果说到什么是好代码,我们肯定都能说出一堆规则,例如使用一致的格式和缩进.使用清晰的变量名和方法名.在必要时提供文档与注释.不要过度精简代码等等. 但是对于什么是烂代码,你有比较清晰的认识吗? 在 G ...

  6. 从教女友写代码中学到的,教人写代码在一定程度上是硬件问题

    从今年四月一直到七月,我在教我女友写代码.我最大的收获是认识到了教人写代码在一定程度上是个硬件问题.虽然 codecademy.可 汗学 院.Scratch 和其他机构为了教学优化了代码编辑器,但代码 ...

  7. 手把手教你写需求之代码实现pdf转jpg

    前言 初入公司,很多朋友如果碰到一些莫名其妙的需求,没有做过就会很慌张.不要慌张,本文通过一个小案例手把手教你写需求. 场景 一个阳光明媚的下午,需求小姐姐向你款款走来,娇滴滴的寻求你帮忙,她需要你把 ...

  8. linux批量删除后门的代码,Linux_用批处理写的后门 永不被杀,代码思路是影子鹰DESERT朋友的 - phpStudy...

    用批处理写的后门 永不被杀 代码思路是影子鹰DESERT朋友的,原代码比较麻烦,我做了改进,这个后门优点就是小而且不会被杀,放到SYSTEM32目录下就可以了 ,代码如下: @echo off @at ...

  9. java 拼 变量名_你还用拼音为变量命名?新人OIer别傻了,教你写出优质代码

    本篇文章适用语言:python,c++,Java.(其实我就是随便bb) 我们在编辑代码的时候,不免拿其他人的代码进行学习,或者将自己的代码拿给别人修改.这个时候,如何让别人快速读懂你的代码,是提升效 ...

最新文章

  1. Blender与UE5完美结合全流程创作游戏资产视频教程
  2. 一文综述OpenCV基础+计算机视觉基础
  3. html加javascript和canvas类似超级玛丽游戏
  4. pythonsklearn多元回归回归_用sklearn进行多元线性回归
  5. Magicodes.IE 2.5.6.2发布
  6. Effective C++阅读笔记
  7. HWSD土壤数据集下载及打开方法
  8. token干什么用_什么是Token?Token有什么用处?为什么使用它?Token认证又是什么?...
  9. 安卓ROOT全教程(测试机 红米Note7Pro)
  10. java常见面试题总结2
  11. integrate函数python_scipy.integrate Pseudo-Voigt函数,积分变为0
  12. 读文献——《ImageNet classification with deep convolutional neural networks》
  13. 秋招经验总结(私企,外企,国企)
  14. CEIWEI ParallelMonitor并口监控 v3.0 并口打印机监控, 并口打开印机, 并行端口过滤, 并行端口监控, 并口过滤, 并口监控
  15. 【STM32】详解RTC实时时钟的概念和配置示例代码
  16. 模板应用到多个主机 zabbix_玩转zabbix之快速入门,超全组件讲解
  17. 互联网时代颠覆的传统行业
  18. 一点就懂的经典十大排序算法
  19. 银行离岸汇款客户交易预测
  20. 基于链表的机票订购系统(C/C++)

热门文章

  1. html5页面滑入滑出效果,jQuery实现的淡入淡出与滑入滑出效果示例
  2. SpringBoot 集成第三方登录(微信、支付宝)
  3. 皮克斯开源_皮克斯的故事讲述规则适合网页设计师
  4. js中的event详解
  5. 三 定语从句(2021-11-04)
  6. 普通键盘和机械键盘的区别
  7. sqlmap百度爬虫
  8. 看完95后阿里p7的工资,觉得自己这两年工作了个寂寞
  9. C语言 可变参数函数 tcy
  10. google地图过期,出现此页面无法正确加载 Google 地图问题修改