WPA2破解教程(详细步骤)

article/2025/9/23 16:38:37

本博客内容旨在技术学习交流,仅供学习参考之用,请勿用于任何非法用途,否则后果作者概不负责。

一、前言

        本人前段时间在研究WiFi破解(WPA2)的相关原理和具体步骤,期间在网上搜索了很多资料,也走了不少坑。最后发现网上大部分的资源都是利用Aircrack工具来破解的,其中某些具体的细节并没有提及,如抓包过程、比对过程等。用工具破解的方法和具体步骤直接百度就可以找到了,很多。下面主要讲手动破解的流程,即自己编程实现,不利用Aircrack工具。

        在这里本人将研究结果记录下来,一是为了方便以后回顾查阅,二是为了给有类似问题的同胞们提供一些资料和参考。由于本人水平有限,如发现有任何错漏之处,欢迎批评指出。


二、WPA2认证过程

        要想破解wpa2,就要先了解其认证过程,还有一些基础知识。

        首先要了解一种加密算法:哈希算法(hash),哈希是一类算法的统称,包括MD5,SHA-1等等,这是一种不可逆运算,即你不可能通过运算结果来反向推出原来的值。

        然后是握手过程,建议大家可以先网上搜索一些别人写的博客,了解下四次握手过程是怎样的,心里有个大概的框架,然后再详细研究《802.11-2012.pdf》这个官方文档的第11章“11. Security”,以官方文档为主,而且要非常仔细地研究官方文档,非常仔细,非常仔细! 当研究完这个文档的第11章,你就彻底明白握手过程的具体步骤了。这点很重要,否则后面破解过程会有很多地方不能理解,无法进行。


三、破解过程

实验环境:

        目标机操作系统:openwrt

        服务器操作系统:Ubantu 14.04

        终端:小米6 MIUI10

        在目标机上进行抓包、解析数据报、提取有用信息,然后通过Socket传给服务器,服务器上进行最后的破解工作。

        

        抓包,提取有用信息 ---> 计算pmk、ptk等值 ---> 计算mic,进行比对 ---> 比对成功,得出WiFi密码。

        使用密码字典破解wpa2的大概流程就如上面所示,比较难的部分应该是提取信息以及算法,下面将对流程进行详细的讲解。

1) 抓包

        首先将用于抓包的网卡设置为monitor模式(有些网卡是不支持monitor模式的,本人实验时用的是高通AR9331),然后用tcpdump命令或者libpcap库进行抓包,只要能抓到包就可以,具体通过什么方法并不重要。这一部要抓的其实只是4次握手包,其它包都不需要(用Aircrack工具抓包时会将所有的802.11的包都存到一个cap文件里,这个文件又是要传到服务器端进行破解用的,所以会导致流量很大,这也是我为什么不想利用工具,而要自己编程实现的原因)。

        一般为了尽快抓到握手包,采取主动发Death攻击包的方法,迫使终端断开连接后自动重连,这样就能很快抓到握手包了。发攻击包可以使用aireplay-ng命令:

aireplay-ng -0 2 -a AA:BB:CC:DD:EE:FF wlan1


2)提取信息

        这一步是比较难的,要对抓到的数据包进行解析,筛选出四次握手包,再从握手包中提取出这些信息,具体怎么解析和筛选,这里就不展开了,不是本文的重点。那四次握手包中有哪些我们需要的信息呢?看下面:


Handshake 1:

        AP将自己的随机数ANonce、AMac发给Station。

Handshake 2:

        Station收到了ANonce、AMac,然后将自己的随机数SNonce、SMac发给AP,同时该包的eapol frame还包含KEY DATAMIC

        注意:KEY DATA是后面计算MIC时需要用到的;该包里的MIC是明文,是用ptk中的TK和KEY DATA进行哈希运算后得到的,后面计算出来的MIC就是和这个MIC进行比对的。

Handshake 3:

        包含ANonce、AMac、KEY DATA、MIC。

        这里的KEY DATA、MIC与H2(Handshake 2)的不一样,H2的KEY DATA是没有加密的,这个是加密过后的(使用PTK中的KEK进行加密);MIC也是不一样,是分别进行哈希运算得到的。

Handshake 4:

        包含SNonce、MIC


        上面红色部分是我们需要的信息,KEY DATA和MIC是在eapol frame中的。原理上讲,eapol frame用H2或者H3的都是可以的,我用的是H2的,H3的没试验过。H4就没有有用的信息了,SNonce已经在H2拿到了。


3)计算pmk、ptk

        AMac + Password ----> pmk

        ANonce + SNonce + AMac + SMac + pmk ----> ptk

        第一、二步在目标机上实现,目标机将第二步提取到的参数发送给服务器,由服务器进行参数计算和比对。我这里是用VMware上的Ubantu做虚拟服务器的,你想都在目标机或虚拟机上实现也可以,只要你的flash够大就行(字典占空间很大,几个G的字典都算小的)。

        问题来了,计算时每一步分别使用什么算法?我在网上居然搜不到!最后无奈之下只好去看Aircrac-ng的源码。。下面直接把算法贴出来,需要用到openssl库,include一些头文件:

#include <openssl/hmac.h>
#include <openssl/evp.h>
#include <openssl/sha.h>
#include <openssl/aes.h>
#include <openssl/md5.h>
//计算pmk:
PKCS5_PBKDF2_HMAC_SHA1(pwd, strlen(pwd), ap_mac, strlen(ap_mac), 4096, LEN_PMK, pmk);//计算ptk:
HMAC(EVP_sha1(), pmk, 32, data, 100, result, &result_len);

        此时pmk、ptk已经算出来了,再提取ptk的前16字节,得到kck。kck用于后续mic的计算。


4)计算mic、比对

        这里就要用到eapol frame了,将上面得到的kck与整个eapol帧进行HMAC_SHA1运算,得到mic。这里不是用HMAC_MD5运算,网上有人说是HMAC_MD5,是错的。

HMAC(EVP_sha1(), kck, LEN_PTK_KCK, eapol_frame, len_eapol, mic, NULL);

        将计算出来的mic和握手包中的mic进行比对,如果一致,则说明用于计算pmk的Password是正确的,这个Password就是WiFi的密码,反之则Password错误,继续尝试下一个Password。上面说到eapol frame用H2或者H3的都可以,如果你计算mic时是用H2的eapol,那就将结果与H2中的mic比对,如果是用H3的,就和H3的mic比对。


四、结束语

         本人是刚入行Linux,对很多东西都是边学边用,研究这个花了3个星期左右的时间,包括前期的搜集资料、确定方案、制定软件框架、设计破解流程,中间的编程实现,以及后期的无数次软件优化与测试,中间确实遇到了很多问题,然后不停地查资料,咨询大神,最后终于是把整个破解过程都整完了。感谢那些给予了我帮助的人儿,谢谢!




http://chatgpt.dhexx.cn/article/5quYfGxq.shtml

相关文章

Ubuntu 下 Wine的安装与使用(以22.04为例)

安装 验证是否为64位架构 dpkg --print-architecture返回amd64 查看是否安装了32位架构 dpkg --print-foreign-architectures若显示i386则跳过此步&#xff0c;否则执行 sudo dpkg --add-architecture i386再次检查 dpkg --print-foreign-architectures下载并添加 WineHQ…

wine 的使用方法

wine中文乱码的终极解决方法 准备字体&#xff1a;simfang.ttc 是许多 Windows 应用默认使用 simfang.ttc 字体。下载simfang.ttc 字体 simsun.ttc复制到/home/user/.wine/drive_c/windows/fonts里面。 进入 Wine 的注册表 “/home/用户名/.wine/dosdevices/c:/windows/”&…

linux安装wine

wine安装过程记录 1 2 You will find documentation on https://www.winehq.org/documentation 3 For help with installing from a package or from source, please consult the Getting Wine chapter of the User’s guide. 4 5 https://wiki.winehq.org/Category:Di…

如何在CentOS上安装和使用Wine

转载&#xff1a;http://ghoulich.xninja.org/2016/08/09/install-and-use-wine-on-centos/ 最近想要把工作环境从Windows切换到Linux系统&#xff0c;但公司的IM软件&#xff08;豆芽&#xff09;只有Windows和MAC的版本&#xff0c;很多常用工具也只有Windows的版本&#xf…

wine 安装与使用(ubuntu中安装windows下软件)

转载自&#xff1a;https://blog.csdn.net/qq_34638161/article/details/81271977 https://m.linuxidc.com/Linux/2007-11/8759.htm https://blog.csdn.net/Gerald_Jones/article/details/80781378 一、安装 wine &#xff1a;能够在多种 POSIX-compliant 操作系统&#xff08…

WinEdt使用技巧

最近在使用WinEdt编辑论文&#xff0c;遇到了不少问题&#xff0c;接下来会慢慢更新&#xff0c;帮助大家避坑。 目录 1安装包 2公式 2.1行内公式 2.2显示公式或列表公式 2.3分数 1安装包 如果在编译时遇到错误&#xff1a;!LaTeX Error: File xxx.sty not found. 说明还…

Linux浅析之四——Wine

一、Wine的缘起 Wine——Wine Is Not an Emulator&#xff0c;这是和GNU一样的递归命名方式&#xff0c;Wine的目的就是让Windows软件可以不加修改的运行在Linux系统中&#xff0c;换句话说实现Linux对Windows的“兼容性”。在Red Hat&#xff08;包括Fedora和CentOS&#xff…

wine学习笔记

目前 wine 版本为较为稳定的 8.0 版本&#xff0c;本文也是重点围绕 wine 8.0 安装、使用以及 wine 工具介绍等方面进行了学习和整理。 一、安装 wine 1. 如果你使用的是 64 位系统&#xff0c;需要先开启 32 bit 架构支持&#xff1a; $ sudo dpkg --add-architecture i386…

【如何在Ubuntu 20.04系统上安装和使用Wine教程】

文章目录 在Ubuntu上安装Wine 5.0在Ubuntu上安装Wine 6.0配置Wine在Ubuntu上安装Notepad ubuntu 下安装caj Wine是一个开源兼容层&#xff0c;允许您在诸如Linux&#xff0c;FreeBSD和MacOS等UNIX的操作系统上运行Windows应用程序。 Wine是“Wine Is Not an Emulator”的首字母…

wine使用技巧

wine使用技巧 一&#xff1a;常用软件使用技巧1.1&#xff1a;给安装的软件添加快捷方式到桌面方便下次打开 一&#xff1a;常用软件使用技巧 在网上看到有人问wine安装软件后下次不知道怎么打开&#xff0c;打开不方便&#xff0c;于是就写了这个帖子 1.1&#xff1a;给安装…

wine安装及使用

首先说明下系统环境&#xff0c;我系统使用的是deepin15.11&#xff0c;其他基于debain的发行版&#xff0c;安装及使用方法应该也是差不多的。 一、Wine安装 这里引用deepin论坛上的一个帖子&#xff1a;https://bbs.deepin.org/forum.php?modviewthread&tid176555 Ste…

[Linux] 使用 Wine

Wine 是一个在 x86、x86-64 上允许类 Unix 操作系统在 X Windows System 下运行 Microsoft WIndows 程序的软件。Wine 通过提供一个兼容层来将 Windows 的系统调用转换成对 POSIX 标准的调用。 Wine 最早是“Windows Emulator”&#xff0c;即 Windows 模拟器的所写&#xff0c…

Windows 之dos命令

1.应用场景 知道并且熟练掌握常用[有用]的dos命令, 提高工作和生活效率. 2.学习/操作 1.介绍 百度百科&#xff1a; https://baike.baidu.com/item/DOS命令/5143255?fraladdin 简单讲&#xff1a; DOS命令&#xff0c;计算机术语&#xff0c;是指DOS操作系统的命令&#xff…

如何运用dos命令进入C盘?Dos常用命令大全

如何运用dos命令进入C盘?Dos常用命令大全 在开始界面找到运行,快捷键Win+R,输入命令cmd,点击确定 现在我们已经进入以下界面 在Administrator>后面输入c: dir 列文件名 deltree 删除目录树 cls 清屏 cd 改变当前录

dos常用基础命令

目录 dir 查看指定目录 通配符匹配 运行可执行文件 运行其他目录的可执行文件 cd 进入当前盘符的根目录 进入其他盘符根目录 md 和 rd deltree move copy xcopy del diskcopy ren type memory netstat dir 查看当前目录中的文件 /p 分屏显示 /w 简略同行模…

基本DOS命令用法

一.常用的DOS命令&#xff1a; 1.查看目录内容 dir 2.创建目录文件 md 3.打开指定目录命令 cd 4.删除当前指定的子目录 rd 5.改变当前盘符 盘符冒号 6.文件复制拷贝 copy 7.显示文本文件内容命令 type 8.更改文件名 ren 9.删除文件命令 del 10.清楚屏幕命令 cls 11.…

1、常用DOS命令大全

一、DOS(DiskOperatingSystem)&#xff0c;磁盘操作系统 特点&#xff1a;单任务、单用户系统使用命令行方式 控制计算机二、DOS命令行的组成 1、DOS命令行中的基本概念 当前驱动器、当前盘、当前目录、相对路径、绝对路径2、DOS命令的格式 命令/参数 文件或文件夹三、常用D…

常用的dos网络命令

常用的dos网络命令 ping:测试网络连接状况以及信息包发送和接收状况,TCP/IP 协议中最常用的命令。(网络中TTL通常表示包在被丢弃前最多能经过的路由器个数。也可以判断电脑系统&#xff1a;TTL值在100至130之间&#xff0c;主机系统为WINDOWSTTL&#xff0c;值在240至255之间&…

DOS常用命令

启动方式1:进入DOS页面:win+R;键入:cmd 启动方式2:“开始”→“运行”→输入“cmd”回车,此时将出现一个显示命令提示符的窗口,如下图。 1,help命令:help ——》查看所有命令帮助;help 某某某——》 查看具体某个 命令的帮助

常用DOS命令大全

ping 目标 向目标发送一个数据包 4 ping -n 10 目标 ping 目标 -n 10 net user 查看用户 增加用户&#xff1a; net user 用户名 用户密码 /add 最高的用户组&#xff1a;*Administrators 默认的用户组&#xff1a;*Users 查看指定用户所在的用户组&…