首页 > 解决方案 > 如何使用 Python 计算消息完整性代码(MIC)?

问题描述

最近,我尝试在 Python 中手动计算 MIC 以验证 4 次握手的消息 2 中的 MIC 值,因为当我尝试路由器和 WIFI 模块之间的连接过程时,每次都会在消息 2 处停止。

因为我正在使用 WPA2

mic = hmac.new(ptk[0:16].encode("ascii"), payload, hashlib.sha1).hexdigest()[:32]

有效负载是 802.1X 身份验证的整个部分,MIC 被 0x00 替换。 在此处输入图像描述

要计算 ptk,我使用 PRF-384

ptk = customPRF384(pmk, pke, key_data)

def customPRF384(key, A, B):
    blen = 48
    i = 0
    R = ''
    while i <= ((blen * 8 + 159) / 160):
        hmacsha1 = hmac.new(key, (str(A) + chr(0x00) + str(B) + chr(i)).encode("ascii"), hashlib.sha1)
        i += 1
        R = R + hmacsha1.hexdigest()
    return R[:blen]

pke = "Pairwise key expansion"
key_data = min(mac_ap, mac_cl) + max(mac_ap, mac_cl) + min(anonce,snonce) + max(anonce,snonce)

pmk = PBKDF2(psk, ssid, 4096).read(32)

(我对迭代有点困惑,这是固定的吗?)

但是,使用这种方法,我无法计算出正确的 MIC。如果你们中的一些人能发现一些错误,我将不胜感激!

标签: pythonencryptionwifi

解决方案


推荐阅读