U v` @sdZddlmZddlmZddlZddlmZdZdZdZ d Z d Z dZ dZ dZdZd Zd Zd Zd ZGd ddejZddZddZddZddZdS)zTrivial File Transfer Protocol.)print_function)absolute_importN)dpktc@s,eZdZdZdZddZddZddZd S) TFTPzTrivial File Transfer Protocol. TODO: Longer class information.... Attributes: __hdr__: Header fields of TFTP. TODO. ))opcodeHrcCstj|||jttfkrD|jd}|d|_|d|_ d|_n|jt t fkrt d|jddd|_ |jdd|_nF|jtkrt d|jddd|_|jdddd|_d|_dS)Nrr>Hr)rPacketunpackr OP_RRQOP_WRQdatasplitfilenamemodeOP_DATAOP_ACKstructblockOP_ERRerrcodeerrmsg)selfbufZl_r#a/private/var/folders/0j/yyfkg7712236ncpm167bvylc27vst9/T/pip-unpacked-wheel-y9gppv54/dpkt/tftp.pyr)s    z TFTP.unpackcCs tt|S)N)lenbytes)r!r#r#r$__len__8sz TFTP.__len__cCs||jttfkr$|jd|jd}nF|jttfkrBtd|j }n(|jt krftd|j d|j }nd}| ||jS)Nrrs%sr)r rrrrrrrpackrrrr Zpack_hdrr)r!sr#r#r$ __bytes__;s zTFTP.__bytes__N)__name__ __module__ __qualname____doc__Z__hdr__rr'r*r#r#r#r$r s  r cCs`ddlm}|d}t|}|jdks*t|jdks8tt||ksHtt|t|ks\tdS)Nr unhexlifyZ(0001726663313335302e747874006f6374657400s rfc1350.txtsoctet)binasciir0r rAssertionErrorrr&r%r0r"Ztftpr#r#r$ test_op_rrqGs r4cCs`ddlm}|d}t|}|jdks*t|jdks8tt||ksHtt|t|ks\tdS)Nrr/Z6000300010a0a4e6574776f726b20576f726b696e672047726f7570r Network Working Group)r1r0r rr2rr&r%r3r#r#r$ test_op_dataWs r6cCsZddlm}|d}t|}|jtks*t|jdks8t|jdksFtt||ksVtdS)Nrr/Z8000500070a0a4e6574776f726b20576f726b696e672047726f757000r5r) r1r0r rENOUSERr2r rr&r3r#r#r$ test_op_erres r8cCsPddlm}|d}t|}|jdks*tt||ks:t|j|dksLtdS)Nrr/Z 0006abcdefr Zabcdef)r1r0r r r2r&rr3r#r#r$ test_op_otherss r9)r. __future__rrrrrrrrrZEUNDEFZ ENOTFOUNDZEACCESSZENOSPACEZEBADOPZEBADIDZEEXISTSr7rr r4r6r8r9r#r#r#r$s,   *