def _tkip_(f,m):
"""
parse tkip data from frame f into mac dict
:param f: frame
:param m: mpdu dict
"""
try:
keyid = struct.unpack_from('=B',f,m['offset']+_TKIP_KEY_BYTE_)[0]
m['l3-crypt'] = {'type':'tkip',
'iv':{'tsc1':f[m['offset']+_TKIP_TSC1_BYTE_],
'wep-seed':f[m['offset']+_TKIP_WEPSEED_BYTE_],
'tsc0':f[m['offset']+_TKIP_TSC0_BYTE_],
'key-id':{'rsrv':bits.leastx(_TKIP_EXT_IV_,keyid),
'ext-iv':bits.midx(_TKIP_EXT_IV_,_TKIP_EXT_IV_LEN_,keyid),
'key-id':bits.mostx(_TKIP_EXT_IV_+_TKIP_EXT_IV_LEN_,keyid)}},
'ext-iv':{'tsc2':f[m['offset']+_TKIP_TSC2_BYTE_],
'tsc3':f[m['offset']+_TKIP_TSC3_BYTE_],
'tsc4':f[m['offset']+_TKIP_TSC4_BYTE_],
'tsc5':f[m['offset']+_TKIP_TSC5_BYTE_]},
'mic':f[-(_TKIP_MIC_LEN_ + _TKIP_ICV_LEN_):-_TKIP_ICV_LEN_],
'icv':f[-_TKIP_ICV_LEN_:]}
m['offset'] += _TKIP_IV_LEN_
m['stripped'] += _TKIP_MIC_LEN_ + _TKIP_ICV_LEN_
except Exception as e:
m['err'].append(('l3-crypt.tkip',"parsing {0}".format(e)))
#### CCMP Std 11.4.3.2
# <MAC HDR>|CCMP HDR|DATA|MIC|FCS
# bytes var| 8| >=1| 8| 4
# where the CCMP Header is defined
# PN0|PN1|RSRV|RSRV|EXT IV|KeyID|PN2|PN3|PN4|PN5
# bits 8| 8| 8| 5| 1| 2| 8| 8| 8| 8
评论列表
文章目录