python - 如何使用 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。如果你们中的一些人能发现一些错误,我将不胜感激!
解决方案
推荐阅读
- javascript - 打开暗模式时出现多个错误
- python - 为什么 bytearray() 返回一个大于一个字节的值?
- reactjs - React Context 总是返回 EMPTY
- c - 如何使用 goto 而不会出现此错误?
- reactjs - 将 API 数据从一个屏幕传输到另一个屏幕时出现问题
- wso2 - 动态更新 WSO2 EI 6.1.1 中的注册表文件内容
- python - 使用通过堆栈实现的迭代 DFS 时如何回溯
- javascript - 如何使用 useRef 或其他东西使 auth 变量在整个程序中可用,而不会在重新渲染后更改
- reactjs - Gatsby 插件离线不缓存文件
- nativescript - iOS 14.0 (18A373) 上的 NativeScript Playground App 启动后直接崩溃