WPA3 Dragonfly(蜻蜓)密钥交换算法

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 握手包跑包

各位好 又见面了 我是曹操 今天给大家带来一篇新的教程

希望各位细心学习 低调用网

抓取握手包破解

背景:在2018年1月8日,美国拉斯维加斯的国际消费电子展(CES)上,Wi-Fi联盟发布了最新的WPA3加密协议,作为WPA2技术的后续版本。并在2018年6月26日,WiFi联盟宣布WPA3协议已最终完成。WPA3中最大的改进是将原来的四次握手协议换成了新的Dragonfly Key Exchange协议,该协议将认证和秘钥交换合并为一个协议。WPA3号称可以解决WPA2中未解决的几个安全问题,如离线密码破解、前向安全和其他已知攻击方法。

抓取握手包破解

根据Wi-Fi联盟官方发布的文档,WPA3分为WPA3个人级和WPA3企业级两种标准。WPA3企业级认证与WPA2相比差别不大,仅将密钥长度增加到了192位。而WPA3个人级相对于WPA2个人级的改进主要体现在以下几个方面:更强的基于密码的认证安全、使用等量同步认证的蜻蜓协议,以及密钥长度扩展到192位。

#!/usr/bin/env python
import hmac
from hashlib import pbkdf2_hmac,sha1,md5
def PRF(key,A,B):
    nByte = 48
    i = 0
    R = ''
    while ( i <= ((nByte*8 + 159)/160)):
        hmacsha1 = hmac.new(key,A+"x00" + B + chr(i),sha1)
        R += hmacsha1.digest()
        i += 1
    return R[0:nByte]
def MakeAB(aNonce,sNonce,apMac,cliMac):
    A = "Pairwise key expansion"
    B = min(apMac,cliMac) + max(apMac,cliMac) + min(aNonce, sNonce) + max(aNonce, sNonce)
    return (A,B)
def MakeMIC(pwd,ssid,A,B,data,wpa = False):
    pmk = pbkdf2_hmac('sha1',pwd,ssid,4096,32)
    ptk = PRF(pmk,A,B)
    hmacFunc = md5 if wpa else sha1
    mics = [hmac.new(ptk[0:16],i,hmacFunc).digest() for i in data]
    return (mics,ptk,pmk)
def calcKey(essid,psk,apMac,cliMac,data0,data1,data2,data3):
    ssid = essid
    #print ssid
    aNonce = data0[17:17+32]
    #print aNonce.encode('hex')
    sNonce = data1[17:17+32]
    #print sNonce.encode('hex')
    apMac = apMac.replace(':','').decode("hex")
    cliMac = cliMac.replace(':','').decode("hex")
    mic1 = data1[81:81+16]
    data1 = data1.replace(mic1,'x00'*16)
    mic2 = data2[81:81+16]
    data2 = data2.replace(mic2,'x00'*16)
    mic3 = data3[81:81+16]
    data3 = data3.replace(mic3,'x00'*16)
    A,B = MakeAB(aNonce,sNonce,apMac,cliMac)
    mics,ptk,pmk = MakeMIC(psk,ssid,A,B,[data1,data2,data3])
    print "pmk:",pmk.encode('hex')
    print "ptk:",ptk.encode('hex'),"len:",len(ptk)*8
    print "desired mic1:",mic1.encode('hex')
    print "acture mic1:",mics[0].encode('hex')[:-8]
    if (mic1==mics[0][:-4]):
        print "MIC1 MATCHED"
    print "desired mic2:",mic2.encode('hex')
    print "acture mic2:",mics[1].encode('hex')[:-8]
    if (mic2==mics[1][:-4]):
        print "MIC2 MATCHED"
    print "desired mic3:",mic3.encode('hex')
    print "acture mic3:",mics[2].encode('hex')[:-8]
    if (mic3==mics[2][:-4]):
        print "MIC3 MATCHED"
    return ptk

在WPA2中,设备入网认证的过程需要进行多次交互,包括Probe Request、Probe Response、Authentication Request、Authentication Response、Association Request和Association Response。而在WPA3中,前三次交互与WPA2相同,但密钥交换过程有所改变。在WPA2中,密钥交换过程需要通过计算PTK来生成密钥,而PTK的计算依赖于PSK,这使得WPA2无法提供前向安全。然而,在WPA3中,使用Dragonfly Key Exchange算法,通过生成P和R来计算密钥,从而实现了前向安全。

抓取握手包破解

在WPA3中,蜻蜓密钥交换算法的核心是通过PSK生成P,并通过计算生成密钥。该算法与Diffie-Hellman算法相似,但在计算过程中引入了离散对数问题,从而保证了前向安全性。然而,蜻蜓算法并不能完全防止中间人攻击,且对于离线字典攻击也没有严格的证明。虽然WPA3在安全性方面有所提升,但仍需注意密码的选择和网络环境的安全性。

总结来说,WPA3的蜻蜓密钥交换算法在提供前向安全性方面具有优势,但仍存在中间人攻击和离线字典攻击的风险。对于WPA3的实际应用和安全性细节,还需要进一步的工程实践和研究。

赞(0)