WPA ハンドシェイク パケットの MIC を計算しようとしましたが、残念ながら失敗しました。より正確には、802.1x パケットを使用しました (仕様にあるように)。
MIC = HMAC_MD5(MIC Key, 16, 802.1x data)
これは関連するコードです:
mic = hmac.new(ptk[0:16],data)
print "mic: " + mic.hexdigest() + "\n"
hmac.new は hmac lib から取得されます。
import hmac,hashlib,binascii
暗号化のキーは、明らかにペアワイズ一時キー (いわゆるキー確認キー) の最初の 16 バイトで構成されます。PTK は、cowPatty というプログラムによって確認されます。したがって、これら2つの要因が間違っていることを除外できます。これは私の 802.1x データで、16 進値 0103 によって導入されます。
01030077fe010a001000000000000000
01ae11df37f5fb100665ce0c849f5950
c0e7901da3224ddfc9e9434babad5512
73000000000000000000000000000000
00000000000000000000000000000000
00e8b4b90bfc3fd97b657afeb66262ae
940018dd160050f20101000050f20201
000050f20401000050f202
Wireshark が計算する MIC は次のとおりです。
e8b4b90bfc3fd97b657afeb66262ae94
私が計算するMICは次のとおりです。
5492624bb538b52d6aa6261c692bd595
残念ながら、私が何をしようと、同じ MIC を計算することはできません。専門家の誰かが貴重な情報を提供してくれるかもしれません。
よろしくお願いします!