U •v«`±ã@södZddlmZddlmZddlmZddlmZdZdZ dZ d Z d Z d Z d Zd ZdZdZGdd„dejƒZdZdZdZdZdZdZdZdZd ZdZdZdZdZ dZ!dZ"dZ#d Z$dZ%dZ&dZ'dZ(d Z)d!Z*d"Z+d#Z,d$Z-d%Z.d&d'„Z/d(d)„Z0d*d+„Z1d,S)-zTransmission Control Protocol.é)Úprint_function)Úabsolute_importé)Údpkt)Ú compat_ordééééé é@é€iÿÿc @sheZdZdZdddddddefd d efd d f Zd Zedd„ƒZ e j dd„ƒZ dd„Z dd„Z dd„Z dS)ÚTCPz‘Transmission Control Protocol. TODO: Longer class information.... Attributes: __hdr__: Header fields of TCP. TODO. )ZsportÚHi­Þ)Údportrr)ÚseqÚIlï>[=)Zackrr)Ú_offÚBéPÚflagsrÚwinr)Úsumrr)ZurprrócCs |jd?S)Nr©r©Úself©rú`/private/var/folders/0j/yyfkg7712236ncpm167bvylc27vst9/T/pip-unpacked-wheel-y9gppv54/dpkt/tcp.pyÚoff/szTCP.offcCs|d>|jd@B|_dS)Nrér)rrrrrr3scCs|jt|jƒt|jƒS©N)Ú __hdr_len__ÚlenÚoptsÚdatarrrrÚ__len__7sz TCP.__len__cCs| ¡t|jƒt|jƒSr!)Zpack_hdrÚbytesr$r%rrrrÚ __bytes__:sz TCP.__bytes__cCsbtj ||¡|jd?d>|j}|dkr4t d¡‚||j|j|…|_||j|d…|_dS)Nrrrzinvalid header length)rÚPacketÚunpackrr"Z UnpackErrorr$r%)rÚbufÚolrrrr*=s  z TCP.unpackN)Ú__name__Ú __module__Ú __qualname__Ú__doc__ÚTH_SYNÚ TCP_WIN_MAXZ__hdr__r$ÚpropertyrÚsetterr&r(r*rrrrrs& ÷   rééééé é é é é ér ééééééééééc Csœg}|r˜t|dƒ}|tkrvz0tdt|dƒƒ}|d|…||d…}}Wqˆttfk rr| d¡Yq˜YqˆXnd|dd…}}| ||f¡q|S)z=Parse TCP option buffer into a list of (option, data) tuples.rrrNr)rÚ TCP_OPT_NOPÚmaxÚ IndexErrorÚ ValueErrorÚappend)r+r$ÚoZl_ÚdrrrÚ parse_optsds   rPcCsœd}t|ƒ}|tdftdftdftdfgks0t‚d}t|ƒ}|tdftdftdfgksZt‚d}t|ƒ}|tdftdfgks~t‚d}t|ƒ}|dgks˜t‚dS)Ns#s#rs  7øp7ø)xs7øp7ø)xsóÿ)rPÚ TCP_OPT_MSSrIÚTCP_OPT_SACKOKÚAssertionErrorÚ TCP_OPT_SACK)r+r$rrrÚtest_parse_optsys0ü ý þ rVcCs0tdƒ}|jdkst‚d|_t|ƒdks,t‚dS)Ns»À×¶V¨¹Ñ¬ª±P@Vør6r s»À×¶V¨¹Ñ¬ª±€@Vø)rrrTr')Z tcpheaderrrrÚ test_offsetšsrWN)2r0Ú __future__rrÚrÚcompatrZTH_FINr1ZTH_RSTZTH_PUSHZTH_ACKZTH_URGZTH_ECEZTH_CWRZ TCP_PORT_MAXr2r)rZ TCP_OPT_EOLrIrRZTCP_OPT_WSCALErSrUZ TCP_OPT_ECHOZTCP_OPT_ECHOREPLYZTCP_OPT_TIMESTAMPZTCP_OPT_POCONNZ TCP_OPT_POSVCZ TCP_OPT_CCZ TCP_OPT_CCNEWZTCP_OPT_CCECHOZTCP_OPT_ALTSUMZTCP_OPT_ALTSUMDATAZTCP_OPT_SKEETERZ TCP_OPT_BUBBAZTCP_OPT_TRAILSUMZ TCP_OPT_MD5Z TCP_OPT_SCPSZ TCP_OPT_SNACKZ TCP_OPT_RECZTCP_OPT_CORRUPTZ TCP_OPT_SNAPZTCP_OPT_TCPCOMPZ TCP_OPT_MAXrPrVrWrrrrÚsZ    /!