
    h?                       d Z ddlZddlZddlmZ ddlmZmZ ddlm	Z	m
Z
mZmZ ddlmZmZmZmZ ddlmZmZmZmZ ddlmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 dd	l6m7Z7 dd
l8m9Z9 ddl:m;Z;m<Z<m=Z= ddl>m?Z?m@Z@ ddlAmBZBmCZC ddlDmEZEmFZF ejG        r#ddlHmIZI ddlJmKZKmLZL 	 ddlMmLZN n%# eO$ r eLZNY nw xY wdxZIxZPxZLZN eCjQ        d            G d de          ZRg dZSg dZTg dZUg dZVg dZWg dZXg dZYg dZZdddd d!Z[g d"Z\i ddd#dd$dd%dd&d'd(d'd)d'd*d'd+d'd,d'd-d'd.d/d0d/d1d/d2d/d3d/d4d/d/d/d/d/d/d/d/d/d/d5	Z]g d6Z^g d7Z_g d8Z`d9 Za G d: d;e          Zb G d< d=e          Zc G d> d?e          Zdd@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpd!Zedqdrdsdtdudvdwdxdydz	Zfg d{g d|d}d}gd~dggddgddggddgddggddgddgggg dgZg G d de=          Zh G d de          Zi G d dei          Zj G d de          Zkg dZlddddddddddd
ZmddddddddddddZn G d de          Zoi ddd#dd$dd%dd&dd(dd)dd*dd-dd.dd0dd1dd2dd3dd4dddddddddddddddddddddʜZpd#d%d&d)d4ddddddddddӜZqdԄ epr                                D             Zsest                    eq           dՄ dք fZu G dׄ de          Zv G dل dev          Zw G dۄ dev          Zx G d݄ de          Zy G d߄ de          Zz G d de          Z{ G d dev          Z| G d de          Z} G d dev          Z~ G d de          Z G d dev          Ze                    dϦ            G d dev          Z G d dev          Z G d de          Z G d dev          Z G d dev          Z G d de          Z G d dev          Z G d deo          Z G d de          Z G d d e          Z G d deo          Z G d deo          Z G d deo          Z G d de          Z G d	 d
eo          Z G d deo          Z G d deo          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Zg dZ G d de          Zg d Z G d! d"e          Z G d# d$e          Z G d% d&e          Z G d' d(e          Z G d) d*e          Z G d+ d,e          Z G d- d.e          Z eedejd$d4/            eeiekd$d00            eeRei            eeie<d$1            eeke<            eeiedd2            eeied#d2            eeied$d2            eeied%d2            eeied&d2            eeied(d2            eeied+d2            eeied,d2            eeied-d2            eeied.d2            eeied0d2            eeied1d2            eeied1d#2            eeev            eeev            eeev            eeev            eeev            eeev            eeev            eeev            eevev            eeej                    eeej                    eeed3            eeed&4            eeed-3            eeed*4            eeed+4           ej                            e
ei           ej                            d5ei           ej                            eeR           ej                            d6eR           ej                            eed           ej                            d7ed            G d8 d9e7          Zexj        eegz  c_         G d: d;e9          ZdS (<  z
Wireless LAN according to IEEE 802.11.

This file contains bindings for 802.11 layers and some usual linklayers:
  - PRISM
  - RadioTap
    N)crc32)confcrypto_validator)	ETHER_ANYDLT_IEEE802_11DLT_PRISM_HEADERDLT_IEEE802_11_RADIO)raw	plain_strorbchb)Packetbind_layersbind_top_down	NoPayload)BitEnumFieldBitFieldBitMultiEnumFieldByteEnumField	ByteFieldConditionalFieldFCSFieldFieldLenFieldFieldListField
FlagsFieldIntFieldLEFieldLenField
LEIntFieldLELongFieldLEShortEnumFieldLEShortFieldLESignedIntFieldMayEndMultipleTypeFieldOUIFieldPacketFieldPacketListFieldReversePadFieldScalingField
ShortFieldStrFieldStrFixedLenFieldStrLenField
XByteFieldXStrFixedLenField)AnsweringMachine)
PacketList)EtherLLCMACField)IPTCP)warninglog_loading)sniffsendp)default_backend)Cipher
algorithms)r=   zSCan't import python-cryptography v1.7+. Disabled WEP decryption/encryption. (Dot11)c                   *   e Zd ZdZdZg  edd           edd           eddd	           ed
d           edd           edd           edd           edd           edd           edd           edd           edd           edd           edd           edd           edd           edd           edd           edd           edd           edd           edd           edd           edd           ed d           ed!d           ed"d           ed#d           ed$d           ed%d           ed&d           ed'd           ed(d           ed)d           ed*d           ed+d           ed,d           ed-d           ed.d           ed/d           ed0d           ed1d           ed2d          Z	d3 Z
d4S )5PrismHeaderz iwpriv wlan0 monitor 3 zPrism headermsgcodeD   len   dev    hosttime_didr   hosttime_statushosttime_lenhosttimemactime_didmactime_statusmactime_lenmactimechannel_didchannel_statuschannel_lenchannelrssi_didrssi_statusrssi_lenrssisq_did	sq_statussq_lensq
signal_didsignal_status
signal_lensignal	noise_didnoise_status	noise_lennoiserate_didrate_statusrate_lenrateistx_didistx_statusistx_lenistx
frmlen_didfrmlen_status
frmlen_lenfrmlenc                     t          |t                    r| j                            |j                  S | j                            |          S N)
isinstancer?   payloadanswersselfothers     V/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/scapy/layers/dot11.pyrs   zPrismHeader.answers   sB    e[)) 	/<''666<''...    N)__name__
__module____qualname____doc__namer   r,   r!   r"   fields_descrs    rx   rw   r?   r?   U   s       ""D+::i,, +:eS))+##E2r22+ :na00+  < 1155	+
  <22+ :j!,,+ :mQ//+  < 0!44+  <q11+ :i+++ :mQ//+  < 0!44+  <q11+ :i+++ :j!,,+   <q11!+"  <
A..#+$ :fa((%+& :h**'+(  <Q//)+*  <!,,++, :dA&&-+. :lA../+0  <331+2  <a003+4 $#Ha005+6 :k1--7+8  <229+:  <Q//;+< :gq))=+> :j!,,?+@  <q11A+B  <
A..C+D :fa((E+F :j!,,G+H  <q11I+J  <
A..K+L :fa((M+N :lA..O+P  <33Q+R  <a00S+T :h**U+KZ/ / / / /rx   r?   ) TSFTFlagsRateChannelFHSSdBm_AntSignaldBm_AntNoiseLock_QualityTX_AttenuationdB_TX_AttenuationdBm_TX_PowerAntennadB_AntSignaldB_AntNoiseRXFlagsTXFlagsb17b18ChannelPlusMCSA_MPDUVHT	timestampHEHE_MUHE_MU_other_userzero_length_psduL_SIGTLV
RadiotapNSVendorNSExt)CFPShortPreamblewepfragmentFCSpadbadFCSShortGI)res1res2res3res4TurboCCKOFDM2GHz5GHzPassiveDynamic_CCK_OFDMGFSKGSMStaticTurbo10MHz5MHz)r   BAD_PLCPr   )TX_FAILCTSRTSNOACKNOSEQORDER)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   20MHz40MHz_ext_channel_above40MHz_ext_channel_belowres5res6res7res8res9)z32-bit_counterAccuracyr   r   r   r   r   r   )MCS_bandwidth	MCS_indexguard_interval	HT_formatFEC_typeSTBC_streamsNessNess_MSBr   40MHzzht40Mhz-zht40MHz+)r            )Report0SubframeIs0SubframeKnownLastSubframeLastSubframeCRCerrorEOFsubframeKnownEOFr   r   r   r   r   r   r   r   r   r   r      80MHz            	   
      160MHz            rF   )	                           )STBCTXOP_PS_NOT_ALLOWEDGuardIntervalSGINsysmDisLDPCextraOFDM
Beamformed	BandwidthGroupID
PartialAIDr   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )zuser field positionzSTA-IDNSTSzTx BeamformingzSpatial Configurationr   DCMCodingc                 d    ||j         r%|j         j        rt          |          |duz   fdS dS )z/Generates the next RadioTapExtendedPresenceMaskNc                      t          | diS )Nindex)RadioTapExtendedPresenceMask)argssts    rw   <lambda>z&_next_radiotap_extpm.<locals>.<lambda>   s    94JrJJ rx   )presentr   rB   )pktlstcursr  s       @rw   _next_radiotap_extpmr
     s>    
{s{{s{{XXD)JJJJJ4rx   c            
       x    e Zd ZdZdZ edddd  edd          D             d	gz             gZdd
Zd Z	d Z
dS )r  a  RadioTapExtendedPresenceMask should be instantiated by passing an
    `index=` kwarg, stating which place the item has in the list.

    Passing index will update the b[x] fields accordingly to the index.
      e.g.
       >>> a = RadioTapExtendedPresenceMask(present="b0+b12+b29+Ext")
       >>> b = RadioTapExtendedPresenceMask(index=1, present="b33+b45+b59+b62")
       >>> pkt = RadioTap(present="Ext", Ext=[a, b])
    zRadioTap Extended presence maskr  Nc                     g | ]}d |z  S zb%sr   ).0is     rw   
<listcomp>z'RadioTapExtendedPresenceMask.<listcomp>   s    ???Quqy???rx   r      r   c                 V    |                      |           t          j        | |fi | d S rp   )_restart_indentationr   __init__)ru   _pktr   kwargss       rw   r  z%RadioTapExtendedPresenceMask.__init__   s6    !!%(((d--f-----rx   c                 r    |dz  fdt          dd          D             dgz   | j        d         _        d S )N    c                      g | ]
}d |z   z  S r  r   )r  r  r  s     rw   r  zERadioTapExtendedPresenceMask._restart_indentation.<locals>.<listcomp>  s"    $L$L$L!Ua"f%5$L$L$Lrx   r   r  r   )ranger~   names)ru   r   r  s     @rw   r  z1RadioTapExtendedPresenceMask._restart_indentation  sF    RZ$L$L$L$LuQ||$L$L$LPUw$V!!!rx   c                     t           j        S rp   )r   padding_layer)ru   pays     rw   guess_payload_classz0RadioTapExtendedPresenceMask.guess_payload_class  s    !!rx   Nr   )ry   rz   r{   r|   r}   r   r  r~   r  r  r   r   rx   rw   r  r     s          -D:is??%%2,,???5'IK K LK. . . .W W W" " " " "rx   r  c                   4   e Zd Z edde           edd           e edd          d            e edd          d            e ed	d          d
            e edd          d            e	ddd            e	ddd           gZ
d Zd ZdS )RadioTapTLVtyper   lengthNouic                     | j         dk    S N   r$  r  s    rw   r  zRadioTapTLV.<lambda>      B rx   subtypec                     | j         dk    S r(  r*  r+  s    rw   r  zRadioTapTLV.<lambda>  r,  rx   presence_typec                     | j         dk    S r(  r*  r+  s    rw   r  zRadioTapTLV.<lambda>  r,  rx   reservedc                     | j         dk    S r(  r*  r+  s    rw   r  zRadioTapTLV.<lambda>  r,  rx   datarx   c                     | j         S rp   r%  r+  s    rw   r  zRadioTapTLV.<lambda>   s    CJ rx   length_fromr   c                     | j          dz  S Nr   r5  r+  s    rw   r  zRadioTapTLV.<lambda>!  s    #*q rx   c                     | j         =|d d         t          j        dt          | j                            z   |dd          z   }| j        |dt          | j                   dz  z  z  }||z   S )Nr   z<Hr       )r%  structpackrB   r3  r   )ru   r  r  s      rw   
post_buildzRadioTapTLV.post_build$  sm    ;bqb'FKc$)nn===ABBGC87s49~~o122CSyrx   c                 
    d|fS NrE   r   ru   r	  s     rw   extract_paddingzRadioTapTLV.extract_padding+      1urx   )ry   rz   r{   r    _rt_presentr!   r   r%   r   r-   r~   r>  rB  r   rx   rw   r#  r#    s,       K00Xt$$HUA&&	
 	
 	Ii##&&	
 	
 	L!,,&&	
 	
 	LQ''&&	
 	
 	FC 6 6	8 	8 	8E4-H-HIII+K0      rx   r#  c                   b   e Zd Zd ZddddZg  edd           edd           edd	           ed
d	de           e	 e
dg e          d            e	 e edd          d          d            e	 edd	de          d            e	 eddddd          d            e	 e edd          d          d            e	 edd	de          d             e	 ed!dd"d#$          d%            e	 ed&dd"d#$          d'            e	 e ed(d          d          d)            e	 ed*d          d+            e	 e ed,d	de          d          d-            e	 e ed.d	de          d          d/            e	 e ed0d	de          d1          d2            e	 ed3d          d4            e	 ed5d          d6            e	 e ed7d	de          d          d8            e	 ed9dd:          d;            e	 ed<dd          d=            e	 ed>dd:d?d@dA          dB            e	 edCdd:dDdEdA          dF            e	 edGdd:dHdIdA          dJ            e	 edKdde          dL            e	 edMd          dN            e	 e edOd          d1          dP            e	 edQd	de          dR            e	 e edSd	de          d          dT            e	 edUd	de          dV            e	 edWde          dX            e	 edYddZ[          d\            e	 ed]d          d^            e	 ed_d          d`            e	 e edad          d          db            e	 edcd          dd            e	 ededd1dfdgdhdi          dj            e	 edkdd1          dl            e	 edmd	de           dn            e	 e edod          d          dp            e	 edqd          dr            e	 edsd          dt            e	 edud          dv            e	 edwd          dx            e	 edyd          dz            e	 e ed{d          d          d|            e	 ed}d          d~            e	 e!dg  edd          d           d            e	 e!dg  edd          d           d            e	 e edd          d          d            e	 edd          d            e	 edd          d            e	 eddde"          d            e	 e edddddg          d          d            e	 edddd          d            e	 eddd1d          d            e	 e e
dg e#          d1          d            e$ddd           Z%d Z&d Z'd Z(d	S )RadioTap)ChannelFrequency2.4.3)ChannelPlusFlagsrH  )ChannelPlusNumberrH  )r   ChannelFlags2ChannelNumberversionr   r   rB   Nr  r  r   )next_cls_cbc                 (    | j         o| j         j        S rp   )r  r   r+  s    rw   r  zRadioTap.<lambda>>  s    cfcn  dCsvs~  tC rx   mac_timestampr   c                 (    | j         o| j         j        S rp   )r  r   r+  s    rw   r  zRadioTap.<lambda>H      8(8 rx   r   ic                 (    | j         o| j         j        S rp   r  r   r+  s    rw   r  zRadioTap.<lambda>L      9(9 rx   r   g      ?MbpsB)scalingunitfmtc                 (    | j         o| j         j        S rp   )r  r   r+  s    rw   r  zRadioTap.<lambda>Q  rR  rx   rG  r   c                 (    | j         o| j         j        S rp   r  r   r+  s    rw   r  zRadioTap.<lambda>X      ;(; rx   ChannelFlagsc                 (    | j         o| j         j        S rp   r]  r+  s    rw   r  zRadioTap.<lambda>[  r^  rx   r   dBmb)rY  rZ  c                 (    | j         o| j         j        S rp   )r  r   r+  s    rw   r  zRadioTap.<lambda>`  s    A(A rx   r   c                 (    | j         o| j         j        S rp   )r  r   r+  s    rw   r  zRadioTap.<lambda>e      @(@ rx   r   c                 (    | j         o| j         j        S rp   )r  r   r+  s    rw   r  zRadioTap.<lambda>l  rf  rx   r   c                 (    | j         o| j         j        S rp   )r  r   r+  s    rw   r  zRadioTap.<lambda>p  r^  rx   r   c                 (    | j         o| j         j        S rp   )r  r   r+  s    rw   r  zRadioTap.<lambda>w  r^  rx   r   c                 (    | j         o| j         j        S rp   )r  r   r+  s    rw   r  zRadioTap.<lambda>~  r^  rx   rI  r   c                 (    | j         o| j         j        S rp   r  r   r+  s    rw   r  zRadioTap.<lambda>      ?(? rx   ChannelPlusFrequencyc                 (    | j         o| j         j        S rp   rl  r+  s    rw   r  zRadioTap.<lambda>  rm  rx   rJ  c                 (    | j         o| j         j        S rp   rl  r+  s    rw   r  zRadioTap.<lambda>  rm  rx   knownMCSc                 (    | j         o| j         j        S rp   r  r   r+  s    rw   r  zRadioTap.<lambda>      7 rx   Ness_LSBr   c                 (    | j         o| j         j        S rp   rs  r+  s    rw   r  zRadioTap.<lambda>  rt  rx   r   c                 (    | j         o| j         j        S rp   rs  r+  s    rw   r  zRadioTap.<lambda>  rt  rx   r   BCCLDPCr   r   c                 (    | j         o| j         j        S rp   rs  r+  s    rw   r  zRadioTap.<lambda>  rt  rx   r   mixed
greenfieldc                 (    | j         o| j         j        S rp   rs  r+  s    rw   r  zRadioTap.<lambda>  rt  rx   r   Long_GIShort_GIc                 (    | j         o| j         j        S rp   rs  r+  s    rw   r  zRadioTap.<lambda>  rt  rx   r   c                 (    | j         o| j         j        S rp   rs  r+  s    rw   r  zRadioTap.<lambda>  rt  rx   r   c                 (    | j         o| j         j        S rp   rs  r+  s    rw   r  zRadioTap.<lambda>  rt  rx   
A_MPDU_refc                 (    | j         o| j         j        S rp   r  r   r+  s    rw   r  zRadioTap.<lambda>      :(: rx   A_MPDU_flagsc                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>  r  rx   KnownVHTc                 (    | j         o| j         j        S rp   r  r   r+  s    rw   r  zRadioTap.<lambda>  rt  rx   
PresentVHTc                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>  rt  rx   VHT_bandwidthc                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>  rt  rx   mcs_nssr   r5  c                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>  rt  rx   r   c                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>  rt  rx   r   c                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>  rt  rx   r   c                 (    | j         o| j         j        S rp   r  r   r+  s    rw   r  zRadioTap.<lambda>      =(= rx   ts_accuracyc                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>  r  rx   ts_unitmillisecondsmicrosecondsnanoseconds)r   r   r   c                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>  r  rx   ts_positionc                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>  r  rx   ts_flagsc                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>  r  rx   he_data1c                 (    | j         o| j         j        S rp   r  r   r+  s    rw   r  zRadioTap.<lambda>      6 rx   he_data2c                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>  r  rx   he_data3c                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>  r  rx   he_data4c                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>  r  rx   he_data5c                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>  r  rx   he_data6c                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>  r  rx   hemu_flags1c                 (    | j         o| j         j        S rp   r  r   r+  s    rw   r  zRadioTap.<lambda>  rU  rx   hemu_flags2c                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>  rU  rx   RU_channel1rE   c                     dS r9  r   xs    rw   r  zRadioTap.<lambda>        rx   r6  c                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>  rU  rx   RU_channel2c                     dS r9  r   r  s    rw   r  zRadioTap.<lambda>  r  rx   c                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>  rU  rx   hemuou_per_user_1i  c                 (    | j         o| j         j        S rp   r  r   r+  s    rw   r  zRadioTap.<lambda>      D(D rx   hemuou_per_user_2?   c                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>  r  rx   hemuou_per_user_positionc                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>  r  rx   hemuou_per_user_knownc                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>  r  rx   
lsig_data1rf   r%  c                 (    | j         o| j         j        S rp   r  r   r+  s    rw   r  zRadioTap.<lambda>  rU  rx   lsig_lengthr   tot_sizec                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>   rU  rx   	lsig_rateend_tot_sizec                 (    | j         o| j         j        S rp   r  r+  s    rw   r  zRadioTap.<lambda>#  rU  rx   tlvsc                 (    | j         o| j         j        S rp   )r  r   r+  s    rw   r  zRadioTap.<lambda>*  rt  rx   
notdecodedc                     dS r!  r   r+  s    rw   r  zRadioTap.<lambda>-  s    a rx   c                 \    | j         r| j         j        r| j        j        rt          S t          S rp   )r  r   r   Dot11FCSDot11ru   rr   s     rw   r   zRadioTap.guess_payload_class0  s-    < 	DL. 	4:> 	Orx   c                     t          | j        t          | j                  z
  t          |          z   d          }|d |         | _        ||d          S r!  )maxrB   originalr  ru   r	  r%  s      rw   post_dissectzRadioTap.post_dissect5  sJ    TXDM 2 22SVV;Q??GVG*zrx   c                     | j         A|d d         t          j        dt          |                    d d d         z   |dd          z   }||z   S )Nr   z!Hr   )rB   r<  r=  ru   pr  s      rw   r>  zRadioTap.post_build:  sO    8"1"D#a&&11$$B$77!ABB%?A3wrx   ))ry   rz   r{   r}   deprecated_fieldsr   r!   r   rD  r   r'   r
  r(   r   	_rt_flagsr)   _rt_channelflags_rt_rxflags_rt_txflags_rt_channelflags2_rt_knownmcsr   r   _rt_bandwidthr   _rt_a_mpdu_flags_rt_knownvht_rt_presentvhtr   _rt_vhtbandwidthr,   r*   _rt_tsflagsr   _rt_hemuother_per_user_knownr#  r-   r~   r   r  r>  r   rx   rw   rF  rF  1  s       D067 
v	)Qv	%v 	UD!!v 	
9dC55	v 	@TUUU  XC  XC  	D  	Dv 	OOQ//  98	: 	:v$ 	Jwb)4499	; 	;%v, 	LC$#/ / /88	: 	:-v6 	O/33  <;	= 	=7vB 	J~tS2BCC;;	= 	=CvJ 	L!#. . .AA	C 	CKvT 	L#. . .@@	B 	BUv^ 	O^Q//  A@	B 	B_vl 	Ii##;;	= 	=mvt 	O
9dC==  <;	= 	=uvB 	O
9dC==  <;	= 	=CvP 	O
-tS:KLL  @?	A 	AQv\ 	L/33??	A 	A]vb 	I)1--??	A 	Acvj 	O
:tR>>  87	9 	9kvv 	HZA&&77	9 	9wv| 	H^Q**77	9 	9}vB 	LQu+@+@AA77	9 	9CvH 	LaL,I,IJJ77	9 	9IvN 	L)1aY:1N1NOO77	9 	9OvT 	L!Q>>77	9 	9UvZ 	Ik1%%77	9 	9[vb 	O
<++  ;:	< 	<cvn 	J~tS2BCC::	< 	<ovv 	O
:tS,??  87	9 	9wvB 	J|T2~>>77	9 	9CvH 	M/1.>??77	9 	9IvN 	Y!44477	9 	9OvT 	Ii##77	9 	9UvZ 	J|Q''77	9 	9[vb 	OK++  >=	? 	?cvn 	L**==	? 	?ovt 	LAq!! +" +" # # >=	? 	?uv@ 	H]Aq))==	? 	?AvF 	Jz4K88==	? 	?GvN 	OZ++  76	8 	8OvZ 	LQ''66	8 	8[v` 	LQ''66	8 	8avf 	LQ''66	8 	8gvl 	LQ''66	8 	8mvr 	LQ''66	8 	8svz 	O]A..  :9	; 	;{vF 	L**99	; 	;GvL 	N="iiA.>.>'2{4 4 499	; 	;MvT 	N="iiA.>.>'2{4 4 499	; 	;Uv^ 	O0&99  ED	F 	F_vj 	L,f55DD	F 	Fkvp 	I0!44DD	F 	Fqvv 	J.335 5DD	F 	Fwv@ 	O
<C&(1CDD  :9	; 	;AvL 	H]ArB77799	; 	;MvR 	H[!QR88899	; 	;SvZ 	OK88  87	
 	
[vj 	L"--@@@kvKp  
  
    rx   rF  zAssociation RequestzAssociation ResponsezReassociation RequestzReassociation ResponsezProbe RequestzProbe ResponsezTiming AdvertisementBeaconATIMDisassociationAuthenticationDeauthenticationActionzAction No Ack)r   r   r   r   r   r   r   r   r   r   r   r   r   r   TriggerTACKzBeamforming Report PollzVHT/HE NDP AnnouncementzControl Frame ExtensionzControl WrapperzBlock Ack Requestz	Block AckzPS-Pollr   r   AckzCF-EndzCF-End+CF-Ack)r   r   r   r   r   r   r   r   r   r   r   r   r   r   DatazData+CF-AckzData+CF-PollzData+CF-Ack+CF-PollzNull (no data)zCF-Ack (no data)zCF-Poll (no data)zCF-Ack+CF-Poll (no data)zQoS DatazQoS Data+CF-AckzQoS Data+CF-PollzQoS Data+CF-Ack+CF-PollzQoS Null (no data)zQoS CF-Poll (no data)zQoS CF-Ack+CF-Poll (no data))r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   z
DMG Beaconz
S1G Beaconrz  PollSPRGrantzDMG CTSzDMG DTSz	Grant AckSSWzSSW-FeedbackzSSW-Ack)	r   r   r   r   r   r   r   r   r   )RA=DATA=SAz	BSSID/STAN)RATANNr  zRA=BSSIDr  r  zTA=BSSIDr  BSSIDSADA)r  NNNc                   2     e Zd ZdZdgZ fdZ fdZ xZS )_Dot11MacFieldzU
    A MACField that displays the address type depending on the
    802.11 flags
    r   c                 h    || _         t          t          |                               ||           d S rp   )r   superr  r  )ru   r}   defaultr   	__class__s       rw   r  z_Dot11MacField.__init__  s0    
nd##,,T7;;;;;rx   c                     t          t          |                               ||          }|                    | j                  }|r|d|dS |S )Nz ())r  r  i2repraddress_meaningr   )ru   r  valr	  meaningr  s        rw   r  z_Dot11MacField.i2repr  sW    .$''..sC88%%dj11 	, !777++rx   )ry   rz   r{   r|   	__slots__r  r  __classcell__r  s   @rw   r  r    sd          	I< < < < <        rx   r  c                      e Zd ZdZ eddded            edddg d           ed	dd           e ed
dde	          d            e
 edddg d          d fg edddg d                     edd           eded           e eded          d            e eded          d            e edd          d            e eded          d           gZd Zd Zd Zd  Zd#d"Zd!S )$r  z802.11r-  r   r   c                     | j         S rp   r*  r+  s    rw   r  zDot11.<lambda>  s    ch rx   r$  r   )
ManagementControlr  	Extensionprotocfec                 &    | j         | j        fdk    S Nr   r   r$  r-  r+  s    rw   r  zDot11.<lambda>  s    3;/69 rx   FCfield)pw-mgtMD	protectedorderc                 &    | j         | j        fdk    S r!  r#  r+  s    rw   r  zDot11.<lambda>  s    3; 76 A rx   r   )zto-DSfrom-DSMFretryr%  r&  r'  r(  IDaddr1r   addr2c                 *    | j         dk    p| j        dv S )Nr   )	r   r   r   r   r   r   r   r   r   r#  r+  s    rw   r  zDot11.<lambda>  s     Q V(UU rx   addr3r   c                 N    | j         dv p| j         | j        fdk    o
| j        dk    S )N)r   r   r"  r   )r$  r-  r  r+  s    rw   r  zDot11.<lambda>  s2    V+ N8S[1V;L1 rx   SCc                     | j         dk    S Nr   r*  r+  s    rw   r  zDot11.<lambda>  s    CHM rx   addr4c                 4    | j         dk    o| j        dz  dk    S )Nr   r   )r$  r$  r+  s    rw   r  zDot11.<lambda>  s"    Q .qA- rx   c                 N    |                      d| j        j        fdz  z            S )Nz=802.11 %%%s.type%% %%%s.subtype%% %%%s.addr2%% > %%%s.addr1%%r   )sprintfr  ry   ru   s    rw   	mysummaryzDot11.mysummary  s*    ||[`d`n`w_y|}_}~rx   c                     | j         dk    r'd| j        cxk    rdk    rn n| j        dk    rt          S | j        j        rt
          S t          j        | |          S )Nr   r   r   r   )r$  r-  Dot11QoSr$  r'  Dot11Encryptedr   r   r  s     rw   r   zDot11.guess_payload_class  sl    9+++++++++0C0CO\# 	= "!-dG<<<rx   c                    t          |t                    r| j        dk    r| j                                        |j                                        k    rdS |j        | j        fdv rdS | j        |j        cxk    rdk    r"n nd| j                            |j                  S nD| j        dk    rdS | j        dk    r| j                            |j                  S | j        dk    rdS dS )Nr   )rz  r   r   )r   r   r   r   r   r   )	rq   r  r$  r.  lowerr/  r-  rr   rs   rt   s     rw   rs   zDot11.answers  s    eU## 	yA~~:##%%):):)<)<<<1M4<04LLL1<5=6666B66666<//>>> 7aqa|++EM:::aqqrx   c                    |dvrt          d          |dz
  }| j        dk    rt          d         |         S | j        dk    r:| j        | j        fdk    r| j        dk    r
g d|         S t          d         |         S | j        dk    rct          d         |         | j        j                 | j        j                 }|r,|d	v r(t          | j	        t                    r| j	        j        rd
}|S | j        dk    rt          d         |         S dS )zR
        Return the meaning of the address[index] considering the context
        )r   r   r   r   z#Wrong index: should be [1, 2, 3, 4]r   r   r"  r   )r  zNAV-SAzNAV-DAr   r@  r  r   N)
ValueErrorr$  _dot11_addr_meaningr-  r  r$  to_DSfrom_DSrq   rr   r=  A_MSDU_Present)ru   r   r  s      rw   r  zDot11.address_meaning  s    $$BCCC	9>>&q)%00Y!^^	4<(F22tx1}}111%88&q)%00Y!^^)!,U3"l"$G  *5F??dlH55 *|2 *")NY!^^&q)%00trx   Nc                 |   | j         dz  dk    r|rt          d           d S t          | j        j        t                    rZ|st
          j        r| j                            |           t          | j        j        t                    r|rt          d           d S | xj         dz  c_         | j        j        | _        d S )N@   r   zNo WEP to removez,Dot11 can't be decrypted. Check conf.wepkey.i)r$  r7   rq   rr   r   r   wepkeydecrypt)ru   keywarns      rw   unwepzDot11.unwep  s    <$!## ,*+++Fdl*I66 	 *dk *$$S)))$,.	::  LJKKK|+rx   r5  )ry   rz   r{   r}   r   _dot11_subtypesr   r   r   
_dot11_cfer$   r   r*   r  r   r!   r~   r;  r   rs   r  rN  r   rx   rw   r  r    s&       D)Q?..	0 	0VQ $1 $1 $1 	2 	2!QL1j1199	
 	
 	 Jy!QEEEG GAA Jy!Q> > >? ?	
 	
 	
4w	1--N7Iq11W W	
 	

 	N7Iq11O O	
 	

 	dA..0I0IJJN7Iq11/ /	
 	
G(KT@ @ @
= 
= 
=  "  6, , , , , ,rx   r  c                   P    e Zd ZdZdZej         eddd          gz   Zd Zd Z	dS )	r  z
802.11-FCSTfcsN<I)rZ  c                 ^    t          j        dt          |          dz            d d d         S )N!I    r  )r<  r=  r   rA  s     rw   compute_fcszDot11FCS.compute_fcs4  s*    {4qJ!677"==rx   c                 n    ||z  }| j         (|d d         |                     |d d                   z   }|S )N)rR  rW  r  s      rw   r>  zDot11FCS.post_build7  s@    	S8#2#))!CRC&111Arx   )
ry   rz   r{   r}   match_subclassr  r~   r   rW  r>  r   rx   rw   r  r  /  s]        DN#xxt'F'F'F&GGK> > >    rx   r  c                       e Zd ZdZ eddd           eddd           eddd           eddd	           ed
d          gZd ZdS )r=  z
802.11 QoSrG  r   r   
Ack_Policyr   EOSPTIDr   TXOPc                     t          | j        t                    r| j        j        j        rt
          S t          j        | |          S rp   )rq   
underlayerr  r$  r'  r>  r   r   r  s     rw   r   zDot11QoS.guess_payload_classF  s?    dou-- 	&&0 &%%)$888rx   N)ry   rz   r{   r}   r   r   r~   r   r   rx   rw   r=  r=  >  s        D8,a338L!Q//8FAq))8E1a((9VQ''	)K9 9 9 9 9rx   r=  )r   r   z
short-slotres11res12z	DSSS-OFDMres14res15ESSIBSSr   zCFP-reqprivacyzshort-preamblePBCCagilityr1  unspeczauth-expiredzdeauth-ST-leaving
inactivityzAP-fullzclass2-from-nonauthzclass3-from-nonasszdisas-ST-leavingzST-not-auth)
r   r   r   r   r   r   r   r   r   r   successfailurezcannot-support-all-capzinexist-assozasso-deniedzalgo-unsupportedzbad-seq-numzchallenge-failuretimeoutzrate-unsupported)r   r   r   r   r   r   r   r   rF   r   r   c                       e Zd ZdZd ZdS )_Dot11EltUtilszC
    Contains utils for classes that have Dot11Elt as payloads
    c                 l   i }t                      }| j        }t          |t                    r|j        dk    rd|vrt          |j                  |d<   nq|j        dk    rt          |j                  |d<   nMt          |t                    rMt          |j	        dd                   |d<   dd	d
dd}|
                    |j	        dd                   |d<   nt          |t                    r9d |j        D             }d|v r|d                             |           n||d<   nt          |t                    rd}t          d |j        D                       rMt#          d |j        D                       r/|j        r(|j        r!t#          d |j        D                       rd}nLt          d |j        D                       r.t          d |j        D                       r|j        r	|j        sd}|j        r<|j        d                             d          }|                    |d|z  z              n|                    |           nu|j        dk    rjt          |t.                    rU|j        r9|j        d                             d          }|                    d|z             n|                    d           |j        }t          |t                    |sGt1          | d          r7| j        j        r|                    d           n|                    d            |r||d!<   |S )"zVReturn a dictionary containing a summary of the Dot11
        elements fields
        r   ssidr   rR   Nr   countryIndoorOutdoorzNon-countryIgnored)   I   O   X   r  country_desc_typec                     g | ]
}|d z  dz  S )          @r   r  r  s     rw   r  z0_Dot11EltUtils.network_stats.<locals>.<listcomp>}  s     :::Q!d(b:::rx   ratesWPA2c              3   ,   K   | ]}|j         d k    V  dS r   Nsuiter  s     rw   	<genexpr>z/_Dot11EltUtils.network_stats.<locals>.<genexpr>  s(      ::qw!|::::::rx   c              3   (   K   | ]}|j         d vV  dS ))r   r   Nr  r  s     rw   r  z/_Dot11EltUtils.network_stats.<locals>.<genexpr>  s)      HHaAG61HHHHHHrx   c              3   (   K   | ]}|j         d vV  dS ))r   r   r   Ncipherr  s     rw   r  z/_Dot11EltUtils.network_stats.<locals>.<genexpr>  s=       ? ? ! HI5 ? ? ? ? ? ?rx   WPA3c              3   ,   K   | ]}|j         d k    V  dS r  r  r  s     rw   r  z/_Dot11EltUtils.network_stats.<locals>.<genexpr>  s(      <<!A<<<<<<rx   c              3   ,   K   | ]}|j         d k    V  dS )r   Nr  r  s     rw   r  z/_Dot11EltUtils.network_stats.<locals>.<genexpr>  s(      ??QAGqL??????rx   zWPA3-transitionz%suite%z/%s   zWPA/%sWPAcapWEPOPNcrypto)setrr   rq   Dot11Eltr-  r   infoordDot11EltCountrycountry_stringgetDot11EltRatesr  extendDot11EltRSNany
akm_suitesallmfp_capablemfp_requiredpairwise_cipher_suitesr9  addDot11EltMicrosoftWPAhasattrr  rh  )ru   summaryr  r  country_descriptor_typesr  wpa_versionauths           rw   network_statsz_Dot11EltUtils.network_statsb  s    LH%% >	 tqyyV722"+AF"3"3%([[	""A// 5*%.q/?/C%D%D	""#'&	, ,( 0H/K/K$RSS)0 0+,, A}-- **::!':::g%%G$++E2222',GG$$A{++ $*$ ::Q\::::: 4HH1<HHHHH44*+.4  ? ?%&%=? ? ? ? ?4 #)KK<<q|<<<<< 4??!,?????44./n4 #4K< ,<?229==DJJ{UT\9::::JJ{++++a!566 *| * |A66yAA

8d?3333

5)))	A} H%% >	~  	"'$.. 	"x "

5!!!!

5!!! 	' &GHrx   N)ry   rz   r{   r|   r  r   rx   rw   rq  rq  ^  s2         M M M M Mrx   rq  SSIDzSupported RatesFHsetzDSSS SetzCF SetTIMzIBSS SetCountryRequestzBSS LoadzEDCA SetTSPECTCLASSchedulezChallenge textr  zPower Constraint!   zPower CapabilityzSupported ChannelsChannel Switch AnnouncementERPzHT CapabilitieszQoS CapabilityRSNzExtended Supported RatesNeighbor ReportzHT OperationzOverlapping BSS Scan ParametersInterworkingzExtended CapabilitieszVHT CapabilitieszVHT OperationzVendor Specific)$   %   *   -   .   0   2   4   =   J   k   r~        r  r  r  r  r  r  r~  r  r  )RatesDSsetCFsetIBSSset	challengePowerCapabilityChannelsERPinfoHTinfoRSNinfoESRatesExtendendCapatibilitiesVHTCapabilitiesVendorc                     i | ]\  }}||	S r   r   )r  kvs      rw   
<dictcomp>r    s    JJJTQAqJJJrx   c                 8    t                               | |           S rp   )_dot11_info_elts_idsr  r  s    rw   r  r    s    "&&q!,, rx   c                 8    t                               | |           S rp   )_dot11_info_elts_ids_revr  r  s    rw   r  r    s    &**1a00 rx   c                        e Zd ZdZdgZdZ edde           edddd           e	dd	d
 d          gZ
dZ fdZd Zi Zedd            Zedd            Zd Zd Z xZS )r  z"
    A Generic 802.11 Element
    r  z802.11 Information Elementr-  r   rB   NrW  rE   c                     | j         S rp   rB   r  s    rw   r  zDot11Elt.<lambda>  s     rx      )r7  
max_lengthc                     |dk    r(	 |                      ||           n# t          $ r Y nw xY wt          t          |                               ||           d S )Nr  )setfieldvalAttributeErrorr  r  __setattr__)ru   attrr  r  s      rw   r  zDot11Elt.__setattr__  sp    6>>  s++++!   h))$44444s     
--c                 ^    | j         dk    r!t          | j                  }d|z  t          gfS dS )Nr   z	SSID='%s'rE   )r-  r   r  r  )ru   rs  s     rw   r;  zDot11Elt.mysummary  s3    7a<<TY''D%w..2rx   c                 L    |p| j         j        }|| j        vr| | j        |<   d S d S rp   )r-  r  registered_ies)clsids     rw   register_variantzDot11Elt.register_variant  s9    !36>S'''%(Cr""" ('rx   c                     |rSt          |d d                   }| j                            ||           }|j        | j        k    r |j        |d|i|S |} | S )Nr   r  )r  r  r  dispatch_hook)r  r  r  kargs_ididclss         rw   r  zDot11Elt.dispatch_hook  sm     	d2A2h--C&**344E"c&777*u*tEEuEEEC
rx   c                     t          |          dk    r3t          |d                   }|dk    r|dk    r|dd|z            | _        |S )Nr   r   r   r  r   )rB   r   r  r  s      rw   pre_dissectzDot11Elt.pre_dissect&  sK     q66Q;;1YYFzzfmmaF
lO	rx   c                     | j         5|d d         t          t          |          dz
            z   |dd          z   }||z   S )Nr   r   )rB   r   r  s      rw   r>  zDot11Elt.post_build0  sB    8"1"CFFQJ'!ABB%/A3wrx   rp   )ry   rz   r{   r|   r  r}   r   _dot11_id_enumr   r-   r~   show_indentr  r;  r  classmethodr  r  r  r>  r  r  s   @rw   r  r    s         I'D =q.99 =fc::;vr*-/ / /0K K5 5 5 5 5   N) ) ) [)
    [        rx   r  c                   ^    e Zd ZdZdZ edde           edd           edd          gZd	S )
Dot11EltDSSSetz802.11 DSSS Parameter SetTr-  r   rB   r   rR   r   N	ry   rz   r{   r}   rZ  r   r  r   r~   r   rx   rw   r  r  8  sN        &DNdA~..	%	)QKKKrx   r  c            
           e Zd ZdZdZ edde           edd           eddd           ed	dd           ed
dd           eddd          gZ	dS )Dot11EltERPz
802.11 ERPTr-  r  rB   r   NonERP_Presentr   Use_ProtectionBarker_Preamble_Moderesr   N)
ry   rz   r{   r}   rZ  r   r  r   r   r~   r   rx   rw   r  r  D  s        DNdB//	%!1a((!1a(('A..1KKKrx   r  c                   h    e Zd ZdZ edd           edddddd	d
dddddddddd          gZd ZdS )RSNCipherSuitezCipher suiter&    r  r   zUse group cipher suitezWEP-40TKIPOCBzCCMP-128zWEP-104zBIP-CMAC-128z#Group addressed traffic not allowedzGCMP-128zGCMP-256zCCMP-256zBIP-GMAC-128zBIP-GMAC-256zBIP-CMAC-256)r   r   r   r   r   r   r   r   r   r   r   r   r   r   c                 
    d|fS r@  r   rA  s     rw   rB  zRSNCipherSuite.extract_paddingi  rC  rx   Nry   rz   r{   r}   r%   r   r~   rB  r   rx   rw   r  r  S  s        D!!h* 7   '
 '
 	 	K(    rx   r  c            	           e Zd ZdZ edd           eddi ddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)          gZd* Zd+S ),AKMSuitez	AKM suiter&  r  r  r   r   Reservedz802.1Xr   PSKr   z	FT-802.1Xr   zFT-PSKr   z
WPA-SHA256r   z
PSK-SHA256r   TDLSr   SAEr   zFT-SAEr   zAP-PEER-KEYr   zWPA-SHA256-SUITE-Br   zWPA-SHA384-SUITE-Br   zFT-802.1X-SHA384r   zFILS-SHA256r   zFILS-SHA384rF   zFT-FILS-SHA256zFT-FILS-SHA384OWE)r   r   c                 
    d|fS r@  r   rA  s     rw   rB  zAKMSuite.extract_padding  rC  rx   Nr  r   rx   rw   r
  r
  o  s9       D!!gt &
*&
(&
 %&
 +	&

 (&
 ,&
 ,&
 &&
 %&
 (&
 -&
 &&
 &&
 $&
 -&
  -!&
" "#&
$ #'&
 &
 &
 	 	K2    rx   r
  c            
       l    e Zd ZdZ eddd           edd eddd          d	 
          gZd ZdS )PMKIDListPacketPMKIDs	nb_pmkidsN
pmkid_listcount_ofrE   rF   r5  c                     | j         S rp   )r  r+  s    rw   r  zPMKIDListPacket.<lambda>  s    3= rx   
count_fromc                 
    d|fS r@  r   rA  s     rw   rB  zPMKIDListPacket.extract_padding  rC  rx   )	ry   rz   r{   r}   r   r   r/   r~   rB  r   rx   rw   r  r    sx        DTLAAAb"R00000		
 	
 	
K    rx   r  c                      e Zd ZdZdZ edde           edd           edd           e	d	 e
            e
           ed
dd           ed e
            ge
d            eddd           ed e            ged            eddd           eddd           eddd           eddd           eddd           eddd           eddd           eddd           eddd           eddd           eddd           eddd           ed dd           ed!dd           e e	d" e            e          d#            e e	d$ e
d%&          e
          d'           gZdS )(r  z802.11 RSN informationTr-  r  rB   NrM  r   group_cipher_suitenb_pairwise_cipher_suitesr  r  c                     | j         S rp   )r  r  s    rw   r  zDot11EltRSN.<lambda>  s	    !< rx   r  nb_akm_suitesr  c                     | j         S rp   )r!  r   s    rw   r  zDot11EltRSN.<lambda>  s     rx   r  r  gtksa_replay_counterr   r   ptksa_replay_counterno_pairwisepre_authr1  ocvcextended_key_idpbacspp_a_msdu_requiredspp_a_msdu_capablepeer_key_enabledjoint_multiband_rsnapmkidsc                 d    | j         dn'| j         d| j        pddz  z   | j        pddz  z   z
  dk    S )NTr   r   r   r   )rB   r  r!  r+  s    rw   r  zDot11EltRSN.<lambda>  sS    27a1<=&+!q01 	 rx   group_management_cipher_suiter   r  c                     | j         dnL| j         d| j        pddz  z   | j        pddz  z   | j        rdndz   | j        r| j        j        pddz  z   z
  dk    S )NTr   r   r   r   rF   )rB   r  r!  r.  r  r+  s    rw   r  zDot11EltRSN.<lambda>  s    27a1<=&+!q01 *+QQ!- Z8CJ$8=AC	D  rx   )ry   rz   r{   r}   rZ  r   r  r   r!   r&   r  r   r'   r
  r   r   r  r~   r   rx   rw   r  r    sq       #DNdB//	%Y""(..*:*:NKK'-	
 	
 	

 	$^<<		
 	
 	
 	!	
 	
 	

 	XZZL00		
 	
 	
 	1%%A&&'A..'A..1%%Q""Q""A"Aq))A&1--%q!,,#Q**'A.. 	K//"3"3_EE 
	
 
	
 	K7&c222ND D	 		
 	
sGKKKrx   r  c                   ^    e Zd ZdZ edd           edd           edd          gZd Zd	S )
 Dot11EltCountryConstraintTripletz!802.11 Country Constraint Tripletfirst_channel_numberr   num_channelsr   mtpr   c                 
    d|fS Nrx   r   rA  s     rw   rB  z0Dot11EltCountryConstraintTriplet.extract_padding  s    Avrx   Nry   rz   r{   r}   r   r~   rB  r   rx   rw   r3  r3    s]        .D	(!,,	."%%	%K    rx   r3  c                       e Zd ZdZdZ edde           edd           eddd	
           e	 e
dg ed                      e edd          d           gZdS )r  z802.11 CountryTr-  r   rB   Nr        r   r5  descriptorsc                 ,    | j         dz
  | j         dz  z
  S Nr   r  r+  s    rw   r  zDot11EltCountry.<lambda>  s    !sw{+ rx   r6  r   r   c                 X    | j         t          | j                  dz   dz  n	| j         dz  S )Nr   r   r   )rB   r<  r+  s    rw   r  zDot11EltCountry.<lambda>  s/    CGO#co..2a77RURY\]R] rx   )ry   rz   r{   r}   rZ  r   r  r   r,   r#   r'   r3  r   r~   r   rx   rw   r  r    s        DNdA~..	%)9Q???, 	
 
 
 	 	 	IeQ _^
	
 
	
KKKrx   r  c                       e Zd Zd ZdS )
_RateFieldc                 R    |dS t          |dz  dz            }|dz  r|dz  }|dz   S )NrE   r~  r     z(B)z Mbps)str)ru   r  r  r	  s       rw   r  z_RateField.i2repr  sA    ;2tr!"": 	JA7{rx   N)ry   rz   r{   r  r   rx   rw   rA  rA    s#            rx   rA  c            
       |    e Zd ZdZdZ edde           edd           eddg e	d	d
          d           gZ
dS )r  z802.11 RatesTr-  r   rB   Nr     rE   r   c                     | j         S rp   r  r   s    rw   r  zDot11EltRates.<lambda>-      !% rx   r6  )ry   rz   r{   r}   rZ  r   r  r   r   rA  r~   r   rx   rw   r  r  #  so        DNdA~..	%FJr1'		
 	
 	
	KKKrx   r  c            
          e Zd ZdZdZg  edde           edd           eddd	d
           eddd	           eddd	           eddd	           e	ddd	ddd           eddd	           eddd           eddd	           eddd	           eddd	           eddd	           e	ddddddd           e	ddd	d d!d           ed"dd	d
#           ed$dd%d&           ed'd(d%           ed)d%dd&#           ed*dd+d,           ed-dd	           ed.dd           ed/dd	           ed0dd	           ed1dd2           ed3dd4           ed5dd%           ed6dd7d,#           ed8dd9d
           ed:dd	           ed;dd	           ed<dd           ed=dd>           ed?dd           ed@dd	d
#           edAdd%dB           edCdd           edDdd           edEdd           edFdd           edGdd           edHdd           edIdd           edJdd           edKdd           edLdd	           edMdd	           edNdd	           edOdd           edPdd	           edQdd	           edRdd	           edSdd	           edTdd	           edUdd	dB#           e
dVdd(g dW          ZdS )XDot11EltHTCapabilitiesz802.11 HT CapabilitiesTr-  r  rB   NL_SIG_TXOP_Protectionr   r   r  r  Forty_Mhz_IntolerantPSMPDSSS_CCK
Max_A_MSDUz3839 oz7935 orz  Delayed_BlockAckRx_STBCr   Tx_STBCShort_GI_40MhzShort_GI_20MhzGreen_FieldSM_Power_Savez	static SMz
dynamic SMdisabled)r   r   r   Supported_Channel_Width20Mhzz20Mhz+40MhzLDPC_Coding_Capabilityr  r   r   r  Min_MPDCU_Start_Spacingr   Max_A_MPDU_Length_Exponentr      r`  TX_Unequal_ModulationTX_Max_Spatial_StreamsTX_RX_MCS_Set_Not_EqualTX_MCS_Set_Definedr   r   RX_Highest_Supported_Data_Rater   r   RX_MSC_BitmaskM   r   r   RD_ResponderHTC_HT_SupportMCS_Feedbackr   r   PCO_Transition_TimePCOr   rY  Channel_Estimation_Capability#CSI_max_n_Rows_Beamformer_Supported3Compressed_Steering_n_Beamformer_Antennas_Supported6Noncompressed_Steering_n_Beamformer_Antennas_Supported#CSI_n_Beamformer_Antennas_SupportedMinimal_Grouping(Explicit_Compressed_Beamforming_Feedback+Explicit_Noncompressed_Beamforming_Feedback*Explicit_Transmit_Beamforming_CSI_FeedbackExplicit_Compressed_SteeringExplicit_Noncompressed_Steering!Explicit_CSI_Transmit_BeamformingCalibrationImplicit_Trasmit_BeamformingTransmit_NDPReceive_NDPTransmit_Staggered_SoundingReceive_Staggered_Sounding'Implicit_Transmit_Beamforming_ReceivingASEL)r  Transmit_Sounding_PPDUsReceive_ASELAntenna_Indices_FeedbackExplicit_CSI_Feedback)Explicit_CSI_Feedback_Based_Transmit_ASELAntenna_Selection)ry   rz   r{   r}   rZ  r   r  r   r   r   r   r~   r   rx   rw   rJ  rJ  5  sl       #DNKdB//K	%K 	(!Q<<<	K
 	'A..K 	AK 	Q""K 	\1aX()C)CDDK 	#Q**K 	Aq!!K 	Aq!!K 	!1a((K 	!1a((K 	1%%K 	_a$*EE	G 	GK" 	.1 ]33	5 	5#K& 	)1abAAA'K* 	A++++K, 	*Aq11-K. 	-q!"EEE/K2 	B---3K4 	(!Q//5K6 	)1a007K8 	*Aq119K: 	%q!,,;K< 	A=K> 	11b99?K@ 	AAKB 	!1bs;;;CKF 	A+++GKH 	A&&IKJ 	!1a((KKL 	A&&MKN 	AOKP 	&1--QKR 	12...SKV 	A+++WKX 	0!Q77YKZ 	61==[K\ 	F1MM]K^ 	IA	 	_Kb 	61==cKd 	#Q**eKf 	;QBBgKh 	>1EEiKj 	=q!DDkKl 	/A66mKn 	2Aq99oKp 	4a;;qKr 	1%%sKt 	/A66uKv 	A&&wKx 	1%%yKz 	.155{K| 	-q!44}K~ 	:Aq 	" 	" 	"KD 	
61a "
 "
 "
 	 	EKKKKrx   rJ  c                       e Zd ZdZdZ edde           edd           edd           e	d	d
d           gZ
edd            ZdS )Dot11EltVendorSpecificz802.11 Vendor SpecificTr-  r  rB   Nr&  r   r  rE   c                     | j         dz
  S r>  r  r  s    rw   r  zDot11EltVendorSpecific.<lambda>  s    aeai rx   r6  c                     |rct          j        dd|dd         z             d         }|dk    r7t          |d                   }|dk    rt          S |dk    rn|dk    r	 t          S | S )	NrU  r;  r   r   r   P  r   r   )r<  unpackr   r  r  )r  r  r  r  r&  type_s         rw   r  z$Dot11EltVendorSpecific.dispatch_hook  s{     	.-gQqS	&9::1=ChDGD==//d]] d]] --
rx   rp   )ry   rz   r{   r}   rZ  r   r  r   r%   r-   r~   r  r  r   rx   rw   r  r    s        #DNdC00	%!!FB,?,?@@@	K    [  rx   r  c                   x    e Zd ZdZdZdZdZej        dd          e	dd          gz   e
j        d	d
         z   ZdS )r  z802.11 Microsoft WPATr  r  Nr   r$  r   r   r   )ry   rz   r{   r}   rZ  r-  r&  r  r~   r.   r  r   rx   rw   r  r    sb        !DN	B
C )4RaR8
64  < !$%KKKrx   r  c                       e Zd ZdZdZ edde           edd           edd           ed	d           ed
d          gZdS )Dot11EltCSAz802.11 CSA ElementTr-  r  rB   r   moder   new_channelchannel_switch_countNr  r   rx   rw   r  r    sm        DNdB//	%	&!	-##	(!,,KKKrx   r  c                       e Zd ZdZdZ edde           edd           edd           ed	d           ed
d           edd           edd           edd           edd          g	Z	dS )Dot11EltOBSSz#802.11 OBSS Scan Parameters ElementTr-  r  rB   r   Passive_Dwellr   Active_DwellScan_IntervalPassive_Total_Per_ChannelActive_Total_Per_ChannelDelayActivity_ThresholdN)
ry   rz   r{   r}   rZ  r   r  r   r!   r~   r   rx   rw   r  r    s        0DNdB//	%_a((^Q''_a((0!44/33Wa  )1--
KKKrx   r  c                   ^    e Zd ZdZ edd           edd           edd          gZd ZdS )	Dot11VHTOperationInfoz 802.11 VHT Operation Informationchannel_widthr   channel_center0r  channel_center1c                 
    d|fS r@  r   rA  s     rw   rB  z%Dot11VHTOperationInfo.extract_padding  rC  rx   Nr9  r   rx   rw   r  r    s^        -D	/1%%	#R((	#Q''K    rx   r  c                       e Zd ZdZdZ edde           edd           ed e	            e	           e
dd	g ed
d	d          d           gZdS )Dot11EltVHTOperationz802.11 VHT Operation ElementTr-  r  rB   r   VHT_Operation_Infomcs_setr   SSr   )sizec                     dS )Nr   r   r  s    rw   r  zDot11EltVHTOperation.<lambda>  s     rx   r  N)ry   rz   r{   r}   rZ  r   r  r   r&   r  r   r   r~   r   rx   rw   r  r    s        )DNdC00	% !!##!	
 	

 	FHT4a((("{		
 	
 	
KKKrx   r  c                   \    e Zd ZdZ edd           edd           eddde          gZdS )	Dot11Beaconz802.11 Beaconr   r   beacon_intervald   r  rF   N	ry   rz   r{   r}   r   r!   r   capability_listr~   r   rx   rw   r  r    sL        D;{A..< 16:::eQO<<>KKKrx   r  c                       e Zd ZdZdS )	Dot11ATIMz802.11 ATIMNry   rz   r{   r}   r   rx   rw   r  r     s        DDDrx   r  c                   .    e Zd ZdZ edde          gZdS )
Dot11Disasz802.11 Disassociationreasonr   Nry   rz   r{   r}   r    reason_coder~   r   rx   rw   r  r    s*        "D##Ha==>KKKrx   r  c                   F    e Zd ZdZ eddde           edd          gZdS )Dot11AssoReqz802.11 Association Requestr  r   rF   listen_interval   Nry   rz   r{   r}   r   r  r!   r~   r   rx   rw   r  r  	  s=        'D:eQO<<< 16::<KKKrx   r  c                   \    e Zd ZdZ eddde           edd           edd          gZdS )Dot11AssoRespz802.11 Association Responser  r   rF   statusAIDNr  r   rx   rw   r  r    sK        (D:eQO<<<!,,<q))+KKKrx   r  c                   \    e Zd ZdZ eddde           edd           ede          gZ	dS )	Dot11ReassoReqz802.11 Reassociation Requestr  r   rF   r  r  
current_APN)
ry   rz   r{   r}   r   r  r!   r4   r   r~   r   rx   rw   r  r    sL        )D:eQO<<< 16::8L)446KKKrx   r  c                       e Zd ZdZdS )Dot11ReassoRespz802.11 Reassociation ResponseNr  r   rx   rw   r  r    s        *DDDrx   r  c                       e Zd ZdZdS )Dot11ProbeReqz802.11 Probe RequestNr  r   rx   rw   r  r  !  s        !DDDrx   r  c                   \    e Zd ZdZ edd           edd           eddde          gZdS )	Dot11ProbeRespz802.11 Probe Responser   r   r  r  r  rF   Nr  r   rx   rw   r  r  %  sL        "D;{A..< 16:::eQO<<>KKKrx   r  c                   f    e Zd ZdZ eddddg           edd           edde          gZd Zd	S )
	Dot11Authz802.11 Authenticationalgor   open	sharedkeyseqnumr  c                     | j         |j         k    rdS | j        |j        dz   k    s| j         dk    r| j        |j        k    rdS dS )Nr   r   r   )r  r  rt   s     rw   rs   zDot11Auth.answers2  sO    9
""1 K5<!+++Y!^^u| ; ;1qrx   N)	ry   rz   r{   r}   r    r!   status_coder~   rs   r   rx   rw   r  r  ,  sg        "D##FA/DEE<!,,##Ha==?K	 	 	 	 	rx   r  c                   .    e Zd ZdZ edde          gZdS )Dot11Deauthz802.11 Deauthenticationr  r   Nr  r   rx   rw   r  r  >  s*        $D##Ha==>KKKrx   r  c                       e Zd ZdZdS )Dot11Ackz802.11 Ack packetNr  r   rx   rw   r  r  C  s        DDDrx   r  c                       e Zd ZdZ eddi ddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*          gZd+S ),Dot11Actionz802.11 Actioncategoryr   zSpectrum Managementr   QoSr   DLSr   Blockr   Publicr   zRadio Measurementr   zFast BSS Transitionr   HTr   zSA Queryr   zProtected Dual of Public Actionr   WNMr   zUnprotected WNMr   r  r   Meshr   Multihopr   zSelf-protectedrF   DMGzReserved Wi-Fi AlliancezFast Session TransferzRobust AV StreamingzUnprotected DMGr   )r   r   r   r   r   Nry   rz   r{   r}   r   r~   r   rx   rw   r  r  I  s        Dj$ )
')
%)
 %)
 '	)

 ()
 %)
 ')
 $)
 *)
 3)
 %)
 #)
 &)
 &)
 *)
  "!)
" %#)
$ ,)'#-)
 )
 )
 	 	KKKrx   r  c                       e Zd ZdZ eddi ddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1          gZd2S )3Dot11WNMz802.11 WNM Actionactionr   zEvent Requestr   zEvent Reportr   zDiagnostic Requestr   zDiagnostic Reportr   zLocation Configuration Requestr   zLocation Configuration Responser   zBSS Transition Management Queryr   !BSS Transition Management Requestr   "BSS Transition Management Responser   zFMS Requestr   zFMS Responser   zCollocated Interference Requestr   zCollocated Interference Reportr   zTFS Requestr   zTFS Responser   z
TFS NotifyrF   zWNM Sleep Mode RequestzWNM Sleep Mode ResponsezTIM Broadcast RequestzTIM Broadcast ResponsezQoS Traffic Capability UpdatezChannel Usage RequestzChannel Usage ResponsezDMS RequestzDMS ResponsezTiming Measurement RequestzWNM Notification RequestzWNM Notification ResponsezWNM-Notify Response)r   r   r   r   r   r   r   r   r      r]     Nr  r   rx   rw   r  r  i  s9       Dh '
/'
.'
 &'
 %	'

 2'
 3'
 3'
 5'
 6'
 -'
 .'
 3'
 2'
 -'
 .'
  ,!'
" *#'
$ ,)*1)* .,-';'
 '
 '
 	 	 KKKrx   r  c            
       v    e Zd Z edd           edddd           edg  edd          d	 
          gZdS )
SubelemTLVr$  r   rB   NrW  value)rZ  	length_ofrE   c                     | j         S rp   r  r   s    rw   r  zSubelemTLV.<lambda>  rH  rx   r6  )ry   rz   r{   r   r   r   r~   r   rx   rw   r  r    sh        	&!t@@@Ib!'		
 	
 	
	KKKrx   r  c                   t    e Zd ZdZ edd           edd           edd           edd          gZd	 Zd
S )BSSTerminationDurationzBSS Termination Durationr  r   rB   r   TSFr   durationc                 
    d|fS r@  r   rA  s     rw   rB  z&BSSTerminationDuration.extract_padding  rC  rx   N)	ry   rz   r{   r}   r   r   r!   r~   rB  r   rx   rw   r  r    sk        %D	$	%E1Z##	K    rx   r  c                      e Zd ZdZ edd           edd           ede           edddd	
           eddd           eddd           eddd           eddd           eddd           eddd           eddd           edddd	           edd           edd           edd           e e	d e
            e
d           d           gZdS )NeighborReportr  r$  r   rB   r   r  AP_reachr   rY  r  securityr   	key_scopecapabilitiesr   mobilityr  r   FTMr1  r   r  op_classrR   phy_typesubelemsc                     | j         dz
  S Nr   r  r   s    rw   r  zNeighborReport.<lambda>  s    aebj rx   r6  c                     | j         dk    S r  r  r   s    rw   r  zNeighborReport.<lambda>  s    aebj rx   N)ry   rz   r{   r}   r   r4   r   r   r   r'   r  r~   r   rx   rw   r  r    sX       D	&!	%)$$QB///Q""a##A&&Q""q!11Q444	*a  	)Q	*a  O
00	   ! 	
 	
%KKKrx   r  )!Preferred_Candidate_List_IncludedAbridgedDisassociation_ImminentBSS_Termination_IncludedESS_Disassociation_Imminentc                   L   e Zd ZdZ edd           eddde           edd           edd           e e	d e
            e
          d	            e ed
d          d            e eddd           d            e ed e            e          d           gZdS )Dot11BSSTMRequestr  tokenr   r  r   disassociation_timervalidity_intervaltermination_durationc                 (    | j         o| j         j        S rp   )r  r  r   s    rw   r  zDot11BSSTMRequest.<lambda>  s    af@!@ rx   url_lenc                 (    | j         o| j         j        S rp   r  r  r   s    rw   r  zDot11BSSTMRequest.<lambda>  s    afC!C rx   urlrE   c                     | j         S rp   )r  r   s    rw   r  zDot11BSSTMRequest.<lambda>  s     rx   r6  c                 0    | j         o| j         j        dk    S r!  r  r   s    rw   r  zDot11BSSTMRequest.<lambda>  s    afH!Cq!H rx   neighbor_reportc                 (    | j         o| j         j        S rp   )r  r  r   s    rw   r  zDot11BSSTMRequest.<lambda>  s    afI!I rx   N)ry   rz   r{   r}   r   r   btm_request_moder!   r   r&   r  r-   r'   r  r~   r   rx   rw   r  r    s)       .D	'1
61a!122+Q//	%q))K&&&((& 
 A@	
 	
 	Ii##CC	
 	
 	Kr/B/BCCCHH	
 	
 	O!   
 JI	
 	
+KKKrx   r  )	Acceptz Reject-Unspecified_reject_reasonz3Reject-Insufficient_Beacon_or_Probe_Response_framesz:Reject-Insufficient_available_capacity_from_all_candidatesz Reject-BSS_termination_undesiredz&Reject-BSS_termination_delay_requestedz1Reject-STA_BSS_Transition_Candidate_List_providedz,Reject-No_suitable_BSS_transition_candidateszReject-Leaving_ESSc                       e Zd ZdZ edd           edde           edd           e ede	          d            e e
d e            e          d	           gZd
S )Dot11BSSTMResponser  r  r   r  termination_delaytargetc                     | j         dk    S r!  r  r   s    rw   r  zDot11BSSTMResponse.<lambda>      ah!m rx   r  c                     | j         dk    S )Nr   r  r   s    rw   r  zDot11BSSTMResponse.<lambda>  r  rx   N)ry   rz   r{   r}   r   r   btm_status_coder   r4   r   r'   r  r~   r   rx   rw   r  r    s        /D	'1h?33	%q))HXy))##	
 	
 	O!   
 $#	
 	
KKKrx   r  c            
       :    e Zd ZdZ edddddddd	          gZd
S )Dot11SpectrumManagementz!802.11 Spectrum Management Actionr  r   zMeasurement RequestzMeasurement ReportzTPC Requestz
TPC Reportr  )r   r   r   r   r   Nr  r   rx   rw   r  r    sF        .Dh'&/'
 '
 	 	KKKrx   r  c                   >    e Zd ZdZ ed e            e          gZdS )Dot11CSAz!Channel Switch Announcement FrameCSAN)ry   rz   r{   r}   r&   r  r~   r   rx   rw   r!  r!  ,  s1        .DE;;==+66KKKrx   r!  c                   D    e Zd ZdZ edd          gZedd            ZdS )r>  z$802.11 Encrypted (unknown algorithm)r3  Nc                 p   d}d}|rt          |          dk    rt          |d                   |z  rst          |          |k    r`t          |d                   t          |d                   dz  dz  k    rt          S t          |d                   dk    rt          S t          S t
          S t          j        S )Nr  r   r   r   r   r~  r   )rB   r   	Dot11TKIP	Dot11CCMPr>  Dot11WEPr   	raw_layer)r  r  r  r  	KEY_EXTIV	EXTIV_LENs         rw   r  zDot11Encrypted.dispatch_hook=  s     		 
	 CIINNDGy( 	 s4yyI/E/EtAw<<Sa\\D%8D$@AA$$a\\Q&&$$ *)~rx   rp   )ry   rz   r{   r}   r+   r~   r  r  r   rx   rw   r>  r>  9  sK        1D8FD))*K   [  rx   r>  c                       e Zd ZdZ eddd           edd           eddd	
           edd          gZddZ	d Z
d Zedd            Zd ZdS )r'  z802.11 WEP packetivr;  r   keyidr   wepdataNr   )remainicvc                    |t           j        }|rt           j        rt          t	          j        | j        |                    d          z             d t                                	                                }| 
                    t          |                    | j                  |                                z                        d S d S d S )Nutf8)r   rJ  crypto_validr<   decrepit_algorithmsARC4r,  encoder;   	decryptoradd_payloadr3   updater.  finalize)ru   rL  ds      rw   rK  zDot11WEP.decryptZ  s    ;+C 	I4$ 	I#(3::f3E3E)EFF!!  ikk	 
 S$,!7!7!**,,!FGGHHHHH	I 	I 	I 	Irx   c                 .    |                                   d S rp   )rK  rA  s     rw   r  zDot11WEP.post_dissecte  s    rx   c                 <    | j         t          j        |           S dS r8  )r.  r   build_payloadr:  s    rw   r>  zDot11WEP.build_payloadh  s     <'---srx   c                    |t           j        }|r| j        +|t          j        dt          |          dz            z  }d}n
|dd         }t          t          j        | j	        |
                    d          z             d t                                                                }|d d         |                    |          z   |                                z   |z   S t          d           dS )NrS  rV  rx   r   r   r2  z9No WEP key set (conf.wepkey).. strange results expected..)r   rJ  r0  r<  r=  r   r<   r4  r5  r,  r6  r;   	encryptorr9  r:  r7   )ru   r  r  rL  r0  es         rw   encryptzDot11WEP.encryptm  s    ;+C 	xv{4sj)@AAA!f#(3::f3E3E)EFF!!  ikk	 
 RaR5188C==(1::<<7#==OPPP3rx   c                 Z    | j         #|                     |t          |                    }|S rp   )r.  rB  r
   r  s      rw   r>  zDot11WEP.post_build  s(    <QC))Arx   rp   )ry   rz   r{   r}   r,   r   r+   r   r~   rK  r  r>  r   rB  r>  r   rx   rw   r'  r'  S  s        D##D)Q779Wa((8ItA6668E4((*K
	I 	I 	I 	I    
    &    rx   r'  c                   f   e Zd ZdZ edd           edd           edd           eddd           eddd	           ed
dd           e edd          d            e edd          d            e edd          d            e edd          d            edd          gZdS )r%  z802.11 TKIP packetTSC1r   WEPSeedTSC0key_idr   ext_ivr   r  r   TSC2c                     | j         S rp   rI  r+  s    rw   r  zDot11TKIP.<lambda>      3: rx   TSC3c                     | j         S rp   rL  r+  s    rw   r  zDot11TKIP.<lambda>  rM  rx   TSC4c                     | j         S rp   rL  r+  s    rw   r  zDot11TKIP.<lambda>  rM  rx   TSC5c                     | j         S rp   rL  r+  s    rw   r  zDot11TKIP.<lambda>  rM  rx   r3  N)	ry   rz   r{   r}   r   r   r   r+   r~   r   rx   rw   r%  r%    s       D 		&!	)Q	&!1a  1a  161--/E/EFF61--/E/EFF61--/E/EFF61--/E/EFFKKKrx   r%  c                      e Zd ZdZ edd           edd           edd           eddd           eddd	           ed
dd           edd           edd           edd           edd           edd          gZdS )r&  z802.11 CCMP packetPN0r   PN1res0rH  r   rI  r   r   r   PN2PN3PN4PN5r3  N)ry   rz   r{   r}   r   r   r+   r~   r   rx   rw   r&  r&    s        D 		%	%	&!1a  1a  A	%	%	%	%KKKrx   r&  rT  r#  r*  )r-  r$  )r  )r  i!  i"  i#  c                   ^    e Zd ZdZdZdZej        ej        dddfdZd Z	d Z
d Zd	 Zd
 ZdS )WiFi_ama  Before using this, initialize "iffrom" and "ifto" interfaces:
iwconfig iffrom mode monitor
iwpriv orig_ifto hostapd 1
ifconfig ifto up
note: if ifto=wlan0ap then orig_ifto=wlan0
note: ifto and iffrom must be set on the same channel
ex:
ifconfig eth1 up
iwconfig eth1 mode monitor
iwconfig eth1 channel 11
iwpriv wlan0 hostapd 1
ifconfig wlan0ap up
iwconfig wlan0 channel 11
iwconfig wlan0 essid dontexist
iwconfig wlan0 mode managed
airpwnNrE   c                     || _         || _        t          j        |                                          | _        t          j        |                                          | _        || _        d S rp   )iffromiftorecompiler6  ptrniptrnreplace)ru   r`  ra  rf  patternignorepatterns         rw   parse_optionszWiFi_am.parse_options   sS    	Jw~~//00	Z 4 4 6 677
rx   c                 T   t          |t                    sdS |j        dz  sdS |                    t                    sdS |                    t                    }t          |j                  }| j        	                    |          sdS | j
        	                    |          du rdS dS )Nr   r   T)rq   r  r$  haslayerr6   getlayerr
   rr   rd  matchre  )ru   r  tcpr  s       rw   
is_requestzWiFi_am.is_request  s    #u%% 	1{Q 	1||C   	1ll3#+ys## 	1:C  D((1trx   c           
         |                     t                    }|                     t                    }t          |j                  }|t                   j                                         d|_        |j        |j	        c|_	        |_        |t          |j
        |j                  z  }|t          |j        |j        |j        |j        t!          |          z   d          z  }|                                }|| j        z  }|xj        dz  c_        d|                     t                    _        |                     t                    xj        t!          | j                  z  c_        ||gS )Nr*  )srcdstPA)sportdportseqackflagsr   r  )rl  r5   r6   r
   rr   ra  remove_payloadr$  r/  r.  rr  rq  ru  rt  rw  rv  rB   copyrf  r-  rx  )ru   r  iprn  r  qs         rw   
make_replyzWiFi_am.make_reply  s%   ZZ^^jjoo#+	"'')))	7AG	RBF''''	Ssy	W#'CHH"4   	 FFHH	T\		 $

3	

3s4<0001vrx   c                 f    |d         d         }t          |                    d                     d S )Nr   z/Sent %IP.src%:%IP.sport% > %IP.dst%:%TCP.dport%)printr9  )ru   queryreplyr  s       rw   print_replyzWiFi_am.print_reply)  s0    !HQKaiiIJJKKKKKrx   c                 8    t          |fd| j        i| j         d S )Niface)r:   ra  optsend)ru   r  s     rw   
send_replyzWiFi_am.send_reply-  s'    e5549555555rx   c                 6    t          dd| j        i| j         d S )Nr  r   )r9   r`  optsniffr:  s    rw   r9   zWiFi_am.sniff0  s%    11DK14=11111rx   )ry   rz   r{   r|   function_namefilterr   r  ri  ro  r}  r  r  r9   r   rx   rw   r]  r]    s           MF#':DJ        $L L L6 6 62 2 2 2 2rx   r]  c                       e Zd ZddZd ZdS )Dot11PacketListN	Dot11Listc                 P    |t           j        }t          j        | |||           d S rp   )r   stats_dot11_protocolsr1   r  )ru   r  r}   statss       rw   r  zDot11PacketList.__init__8  s,    =.ED#tU33333rx   c                    d | j         D             }g }|D ]]}|                                }|                                 |                    t	                      |j        j        j        z             ^t          |d| j        z            S )Nc                 P    g | ]#}t           |v |j        d k    |t                    $S )r   )r  r$  r  s     rw   r  z.Dot11PacketList.toEthernet.<locals>.<listcomp>?  s+    IIIQeqjjQVq[[%[[[rx   zEther from %s)r}   )r  rz  rN  appendr2   rr   r1   listname)ru   r3  r2r  r|  s        rw   
toEthernetzDot11PacketList.toEthernet>  s    II$(III 	; 	;AAGGIIIIIegg	 1 99::::"?T]#BCCCCrx   )Nr  N)ry   rz   r{   r  r  r   rx   rw   r  r  7  s<        4 4 4 4D D D D Drx   r  )r|   rb  r<  zlibr   scapy.configr   r   
scapy.datar   r   r   r	   scapy.compatr
   r   r   r   scapy.packetr   r   r   r   scapy.fieldsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   scapy.ansmachiner0   scapy.plistr1   scapy.layers.l2r2   r3   r4   scapy.layers.inetr5   r6   scapy.errorr7   r8   scapy.sendrecvr9   r:   r3  cryptography.hazmat.backendsr;   &cryptography.hazmat.primitives.ciphersr<   r=   $cryptography.hazmat.decrepit.ciphersr4  ImportErrorCiphersr  r?   rD  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r#  rF  rO  rP  rD  r  r  r  r=  r  r  r  rq  r  _dot11_elt_deprecated_namesitemsr  r9  r  r  r  r  r  r
  r  r  r3  r  rA  r  r  rJ  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r>  r'  r%  r&  r(  l2typesregisterregister_num2layerr]  r  r  r   rx   rw   <module>r     s    
			        / / / / / / / /            1 1 1 1 1 1 1 1 1 1 1 1 F F F F F F F F F F F F                                                               @ . - - - - - " " " " " " 0 0 0 0 0 0 0 0 0 0 % % % % % % % % , , , , , , , , ' ' ' ' ' ' ' '  l<<<<<<IIIIIIII)	
 	
 	
 	
 	
 	
 	
  ) ) )() DHGOGgG
-@Kjkkk4/ 4/ 4/ 4/ 4/& 4/ 4/ 4/D0 0 0" " "	C C C  +**BBB= = = ' ' '@ @ @ J:FF   
w7w()745w@A7w7w()746ACX  h !#H /1( =? 	hH(hH(   H H H
" " "	  	  	  "  " " " " "6 " " "8! ! ! ! !& ! ! !LL L L L Lv L L Lx !!"#! " $$$ "  %% #* $  e6 6r 
 

     7	j$/0
:	$0
44,'
g'	   &    X   (u, u, u, u, u,F u, u, u,p    u   9 9 9 9 9v 9 9 9C C C
 n%91F&+=	! ! 	/G!}:L &9)1CE EQ Q Q Q QV Q Q Qt!v!! w! z	!
 x! u! z! y! 	! 
! 
! ! ! 
! !  !!" #!$ 	%")		 			A! ! ! J "  " KJ-A-G-G-I-IJJJ     ; < < <,,00< < < < <v < < <B    X   
 
 
 
 
( 
 
 
    V   8    v   B    f   $J J J J J( J J JZ	 	 	 	 	v 	 	 	    h   <           H      r " " "N N N N NX N N Nb    X   >	% 	% 	% 	% 	%1 	% 	% 	%	 	 	 	 	( 	 	 	    8   $	 	 	 	 	F 	 	 	    8   4> > > > >. > > >       ? ? ? ? ? ? ? ?
< < < < <> < < <+ + + + +N + + +6 6 6 6 6^ 6 6 6+ + + + +m + + +" " " " "N " " "> > > > >^ > > >       $? ? ? ? ?& ? ? ?
    v       &   @" " " " "v " " "N
 
 
 
 
 
 
 

 
 
 
 
V 
 
 
    V   D          H
 
 
       .
 
 
 
 
f 
 
 
    v       V   41 1 1 1 1~ 1 1 1p       ,       0 h!2 6 6 6 6 eXAs 3 3 3 3 K       E3Q     Hc    E< 3 3 3 3 E=!! 4 4 4 4 E>11 5 5 5 5 E?AA 6 6 6 6 E=!! 4 4 4 4 E>11 5 5 5 5 E; 2 2 2 2 E9aa 0 0 0 0 E:r 2 2 2 2 E9bq 1 1 1 1 E; 3 3 3 3 E; 3 3 3 3 E8Ra 0 0 0 0 K # # # L( $ $ $ M8 % % % NH & & & OX ' ' ' M8 % % % NH & & & Ix ! ! ! Hh       It~ & & & It~ & & & K04 @ @ @ @ #Xa 8 8 8 8 KD 1 1 1 1 H' 2 2 2 2 H( 3 3 3 3   ne , , ,   U + + +   & 4 4 4   [ 1 1 1   *H 5 5 5   X . . .E2 E2 E2 E2 E2 E2 E2 E2P   x7 7  D D D D Dj D D D D Ds   C CC