U v`{7@s.dZddlmZddlmZddlmZddlmZddlmZdZ dZ dZ d Z d Z d Zd Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0Gdddej1Z2ddZ3ddZ4ddZ5d d!Z6d"d#Z7d$d%Z8d&d'Z9d(S))Radiotap)print_function)absolute_import)dpkt) ieee80211) compat_ord c@seZdZdZdZdZddZddZedd Z e j d d Z ed d Z e j d d Z eddZ e j ddZ eddZ e j ddZ eddZej ddZeddZej ddZeddZej ddZeddZej ddZed d!Zej d"d!Zed#d$Zej d%d$Zed&d'Zej d(d'Zed)d*Zej d+d*Zed,d-Zej d.d-Zed/d0Zej d1d0Zed2d3Zej d4d3Zed5d6Zej d7d6Zd8d9ZGd:d;d;ejZGdd?d?eZGd@dAdAeZ GdBdCdCeZ!GdDdEdEeZ"GdFdGdGeZ#GdHdIdIeZ$GdJdKdKeZ%GdLdMdMeZ&GdNdOdOeZ'GdPdQdQeZ(GdRdSdSeZ)GdTdUdUeZ*GdVdWdWeZ+GdXdYdYeZ,GdZd[d[eZ-d\S)]rzRadiotap. TODO: Longer class information.... Attributes: __hdr__: Header fields of Radiotap. TODO. ))versionBr)padrr)lengthHr}|j||@r&dSdS)Nrrr present_flags)selfbitindexmaskr&e/private/var/folders/0j/yyfkg7712236ncpm167bvylc27vst9/T/pip-unpacked-wheel-y9gppv54/dpkt/radiotap.py _is_presentPs zRadiotap._is_presentcCs>|d}d|d>d@}|j||@||d>B|j|<dS)Nrrr )r"r#valr$r%r&r&r'_set_bitUszRadiotap._set_bitcCs |tSN)r( _TSFT_SHIFTr"r&r&r' tsft_present^szRadiotap.tsft_presentcCs|t|dSr,)r+r-r"r*r&r&r'r/bscCs |tSr,)r( _FLAGS_SHIFTr.r&r&r' flags_presentfszRadiotap.flags_presentcCs|t|dSr,)r+r1r0r&r&r'r2jscCs |tSr,)r( _RATE_SHIFTr.r&r&r' rate_presentnszRadiotap.rate_presentcCs|t|dSr,)r+r3r0r&r&r'r4rscCs |tSr,)r(_CHANNEL_SHIFTr.r&r&r'channel_presentvszRadiotap.channel_presentcCs|t|dSr,)r+r5r0r&r&r'r6zscCs |tSr,)r( _FHSS_SHIFTr.r&r&r' fhss_present~szRadiotap.fhss_presentcCs|t|dSr,)r+r7r0r&r&r'r8scCs |tSr,)r(_ANT_SIG_SHIFTr.r&r&r'ant_sig_presentszRadiotap.ant_sig_presentcCs|t|dSr,)r+r9r0r&r&r'r:scCs |tSr,)r(_ANT_NOISE_SHIFTr.r&r&r'ant_noise_presentszRadiotap.ant_noise_presentcCs|t|dSr,)r+r;r0r&r&r'r<scCs |tSr,)r(_LOCK_QUAL_SHIFTr.r&r&r'lock_qual_presentszRadiotap.lock_qual_presentcCs|t|dSr,)r+r=r0r&r&r'r>scCs |tSr,)r(_TX_ATTN_SHIFTr.r&r&r'tx_attn_presentszRadiotap.tx_attn_presentcCs|t|dSr,)r+r?r0r&r&r'r@scCs |tSr,)r(_DB_TX_ATTN_SHIFTr.r&r&r'db_tx_attn_presentszRadiotap.db_tx_attn_presentcCs|t|dSr,)r+rAr0r&r&r'rBscCs |tSr,)r(_DBM_TX_POWER_SHIFTr.r&r&r'dbm_tx_power_presentszRadiotap.dbm_tx_power_presentcCs|t|dSr,)r+rCr0r&r&r'rDscCs |tSr,)r(_ANTENNA_SHIFTr.r&r&r' ant_presentszRadiotap.ant_presentcCs|t|dSr,)r+rEr0r&r&r'rFscCs |tSr,)r(_DB_ANT_SIG_SHIFTr.r&r&r'db_ant_sig_presentszRadiotap.db_ant_sig_presentcCs|t|dSr,)r+rGr0r&r&r'rHscCs |tSr,)r(_DB_ANT_NOISE_SHIFTr.r&r&r'db_ant_noise_presentszRadiotap.db_ant_noise_presentcCs|t|dSr,)r+rIr0r&r&r'rJscCs |tSr,)r(_RX_FLAGS_SHIFTr.r&r&r'rx_flags_presentszRadiotap.rx_flags_presentcCs|t|dSr,)r+rKr0r&r&r'rLscCs |tSr,)r(_CHANNELPLUS_SHIFTr.r&r&r'chanplus_presentszRadiotap.chanplus_presentcCs|t|dSr,)r+rMr0r&r&r'rNsc CsBtj||||jd|_g|_||jd}t|dd|_|dd}t }| |r|jt|dd7_|dd}|d7}qTd|j |j fd|j |jfd|j|jfd|j|jfd|j|jfd|j|jfd |j|jfd |j|jfd |j|jfd |j|jfd |j|j fd|j!|j"fd|j#|j$fd|j%|j&fd|j'|j(fd|j)|j*fg}|jt+|j}|D]\}}}|rf|j,}|dkr||r|||} || d}|| 7}||} d| _t-||| |j.| |t+| d}|t+| 7}qft+|jdkr>|j r0|j/j0r0t1j2|j|j/j0d|_nt12|j|_dS)Nr tsftflagsratechannelfhssant_sig ant_noise lock_qualtx_attn db_tx_attn dbm_tx_powerant db_ant_sig db_ant_noiserx_flagschanplusrr)fcs)3rPacketunpackrdatafieldsZ __hdr_len__ bytearrayr! _EXT_SHIFTr(r/TSFTr2Flagsr4Rater6Channelr8FHSSr: AntennaSignalr< AntennaNoiser> LockQualityr@ TxAttenuationrBDbTxAttenuationrD DbmTxPowerrFAntennarHDbAntennaSignalrJDbAntennaNoiserLRxFlagsrN ChannelPluslen __alignment__setattrappendrQrar IEEE80211) r"bufZext_bitZ field_decoderoffsetnameZ present_bitparserZalipaddingfieldr&r&r'rcs\                        zRadiotap.unpackc@seZdZdZdZdS)zRadiotap.RadiotapFieldrrN)__name__ __module__ __qualname__ry__byte_order__r&r&r&r' RadiotapFieldsrc@seZdZdZdS)zRadiotap.Antenna))r$rrNrrr__hdr__r&r&r&r'rssrsc@seZdZdZdS)zRadiotap.AntennaNoise)dbbrNrr&r&r&r'rn srnc@seZdZdZdS)zRadiotap.AntennaSignalrNrr&r&r&r'rm%srmc@seZdZdZdZdS)zRadiotap.Channelr )freqrr)rQrrNrrrryrr&r&r&r'rk*srkc@seZdZdZdS)z Radiotap.FHSS))setrr)patternrrNrr&r&r&r'rl1srlc@s*eZdZdZeddZejddZdS)zRadiotap.Flags)r*rrcCs|jt@t?Sr,)r* _FCS_MASK _FCS_SHIFTr.r&r&r'ra<szRadiotap.Flags.fcscCs|t>|t@B|_dSr,)rrr*)r"vr&r&r'ra@sN)rrrrpropertyrasetterr&r&r&r'ri7s  ric@seZdZdZdZdS)zRadiotap.LockQualityr )r*rrNrr&r&r&r'roDsroc@seZdZdZdZdS)zRadiotap.RxFlagsr rNrr&r&r&r'rvJsrvc@seZdZdZdS)z Radiotap.RaterNrr&r&r&r'rjPsrjc@seZdZdZdZdS)z Radiotap.TSFTr))ZusecsQrNrr&r&r&r'rhUsrhc@seZdZdZdZdS)zRadiotap.TxAttenuationr rNrr&r&r&r'rp[srpc@seZdZdZdZdS)zRadiotap.DbTxAttenuationr ))rrrNrr&r&r&r'rqasrqc@seZdZdZdS)zRadiotap.DbAntennaNoise)rrrNrr&r&r&r'rugsruc@seZdZdZdS)zRadiotap.DbAntennaSignalrNrr&r&r&r'rtlsrtc@seZdZdZdS)zRadiotap.DbmTxPower))dbmrrNrr&r&r&r'rrqsrrc@seZdZdZdZdS)zRadiotap.ChannelPlusr ))rQIrr)rSrr)maxpowerrrNrr&r&r&r'rwvsrwN).rrr__doc__rrr(r+rr/rr2r4r6r8r:r<r>r@rBrDrFrHrJrLrNrcrrbrrsrnrmrkrlrirorvrjrhrprqrurtrrrwr&r&r&r'r>s                                  9 cCs&d}t|}|jdkst|jdks(t|jdks6t|jdksDt|jdksRt|jdks`t|jdksnt|j dks|t|j dkst|j dkst|j dkst|j dkst|jdkst|jdkst|jdkst|jdkst|jjdkst|jjdkstt|jdks"tdS)NsnHl rsnHril r)rrAssertionErrorr!r/r2r4r6r8r:r<r>rBrDrFrHrJrLrSrrQrxresZradr&r&r'test_radiotap_1s*rcCsd}t|}|jdkst|jdks(t|js2t|jsrBrDrFrHrJrLrSrrQrxrerarr&r&r'test_radiotap_2s.               rcCs.d}t|}|jdkst|jjdks*tdS)Ns/H4q  r)rr2rrQrarrtr&r&r'test_fcssrcCsd}t|}|jjdkst|jjdks,t|jjdkssz,test_radiotap_properties..r)binasciirrprinthasattrrgetattrrz)rr}radiotapZ property_keyspropr&r&r'test_radiotap_propertiess<   rcCs0ddlm}|d}t|}|jjdks,tdS)NrrZL000018006e48000011026c09a000a8810200000000000000d40000000012f0b61ca4ffffffffr)rrrrdZ fcs_presentr)rr}rr&r&r'test_radiotap_unpack_fcss  rcCs0td}|jdkstd|_|jdks,tdS)Nrr)rrirar)rQr&r&r' test_flagss rN):r __future__rrrrcompatrr-r1r3r5r7r9r;r=r?rArCrErGrIrKrMrgZ _FLAGS_SIZEZ_CFP_FLAG_SHIFTZ_PREAMBLE_SHIFTZ _WEP_SHIFTZ _FRAG_SHIFTrZ_DATA_PAD_SHIFTZ_BAD_FCS_SHIFTZ_SHORT_GI_SHIFTZ_CHAN_TYPE_SIZEZ_CHANNEL_TYPE_SHIFTZ _CCK_SHIFTZ _OFDM_SHIFTZ_TWO_GHZ_SHIFTZ_FIVE_GHZ_SHIFTZ_PASSIVE_SHIFTZ_DYN_CCK_OFDM_SHIFTZ _GFSK_SHIFTZ _GSM_SHIFTZ_STATIC_TURBO_SHIFTZ_HALF_RATE_SHIFTZ_QUARTER_RATE_SHIFTrrbrrrrrrrrr&r&r&r'sn     D