3  i«1ã@s¦ddlZddlZddlZddlZddlZddlmZmZmZddl m Z ddl Z de eƒkrleje_eje_e jee jee jee jee jee jee jee jee jee jee jee je i Z!dd„Z"dd„Z#d d „Z$d d „Z%d d„Z&dd„Z'dd„Z(d­d®d¯gZ)d°d±d²d³d´gZ*d¶d¸dºd¼d¾dÀdÂdÄdÆdÈdÊdÌdÎdÐdÒdÔdÖdØgZ+dÙdÚdÛdÜdÝdÞdßdàdádâdãdädådædçdègZ,dédêdëdìdígZ-dïdñdógZ.e)e*e+e,e.e-dfœZ/dgdhdidjdkœiZ0dldmdndodpdqœdrdsdtdudpdvœdwdxdydzd{d|d}d~dd€d�œ d‚dƒd„d…d†œd‡œZ1dˆd‰„e2e0j3ƒƒDƒZ4dŠd‰„e2e1j3ƒƒDƒZ5e0e4fe1e5fd‹œZ6dŒd�„Z7dŽd�„Z8d�Z9d‘d’„Z:d“d”„Z;d•d–„Zd›dœ„Z?d�e>iZ@d�e?iZAdždŸ„ZBd d¡„ZCd¢d£„ZDdôd¥d¦„ZEdõd§d¨„ZFd©dª„ZGd«d¬„ZHdS)öéN)Ú IPv4AddressÚ IPv6AddressÚ ip_address)ÚFieldDescriptorÚ encodebytescCs|jƒjtjjS)N)Ú GetOptionsÚ ExtensionsÚopts_pb2ÚcriuÚhex)Úfield©r ú/usr/lib/python3.6/pb2dict.pyÚ_marked_as_hex1srcCs|jƒjtjjS)N)rrr r Zipadd)r r r rÚ _marked_as_ip5srcCs|jƒjtjjS)N)rrr r Úflags)r r r rÚ_marked_as_flags9srcCs|jƒjtjjS)N)rrr r Údev)r r r rÚ_marked_as_dev=srcCs|jƒjtjjS)N)rrr r Zodev)r r r rÚ_marked_as_odevAsrcCs|jƒjtjjS)N)rrr r Údict)r r r rÚ_marked_as_dictEsrcCs|jƒjtjjS)N)rrr r Zconv)r r r rÚ _custom_convIsrÚ PROT_READéÚ PROT_WRITEéÚ PROT_EXECéÚ MAP_SHAREDÚ MAP_PRIVATEÚ MAP_DROPPABLEéÚMAP_ANONé Ú MAP_GROWSDOWNéÚ VMA_AREA_NONEÚVMA_AREA_REGULARÚVMA_AREA_STACKÚVMA_AREA_VSYSCALLÚ VMA_AREA_VDSOéÚ VMA_AREA_HEAPéÚVMA_FILE_PRIVATEéÚVMA_FILE_SHAREDéÚVMA_ANON_SHAREDÚVMA_ANON_PRIVATEé ÚVMA_AREA_SYSVIPCé ÚVMA_AREA_SOCKETé Ú VMA_AREA_VVARé ÚVMA_AREA_AIORINGé ÚVMA_AREA_MEMFDéÚVMA_AREA_SHSTKéÚVMA_AREA_UPROBESéÚ VMA_UNSUPPéÚO_WRONLYÚO_RDWRÚO_CREATé@ÚO_EXCLé€ÚO_NOCTTYÚO_TRUNCéÚO_APPENDéÚ O_NONBLOCKéÚO_DSYNCéÚFASYNCé ÚO_DIRECTé@Ú O_LARGEFILEé€Ú O_DIRECTORYéÚ O_NOFOLLOWéÚ O_NOATIMEéÚ O_CLOEXECéÚ F_SEAL_SEALÚ F_SEAL_SHRINKÚ F_SEAL_GROWÚ F_SEAL_WRITEÚF_SEAL_FUTURE_WRITEéÚ PE_PARENTÚPE_LAZYÚ PE_PRESENT)z mmap.protz mmap.flagsz mmap.statusz rfile.flagsz pmap.flagsz seals.flagsZ task_stateZAliveZZombieZStopped)rr,r0ZUNIXZINETZINET6ZNETLINKZPACKET)rrr7rhrCZSTREAMZDGRAMZRAWZ SEQPACKET)rrr,r.r7Z ESTABLISHEDZSYN_SENTZSYN_RECVZ FIN_WAIT1Z FIN_WAIT2Z TIME_WAITZCLOSEZ CLOSE_WAITZLAST_ACKZLISTEN) rrr,rr.r0r2r"r5r7ZIPZTCPZUDPZUDPLITE)rr0rCéˆ)ZfamilyÚtypeÚstateÚprotocCs(i|] \}}dd„t|jƒƒDƒ|“qS)cSsi|]\}}||“qSr r )Ú.0Úk2Úv2r r rú Æsz.)ÚlistÚitems)rpÚkÚvr r rrsÅsrscCs(i|] \}}dd„t|jƒƒDƒ|“qS)cSsi|]\}}||“qSr r )rprqrrr r rrsËsz.)rtru)rprvrwr r rrsÊs)ÚgenZskcsPdd„‡fdd„|DƒDƒ}ˆtdd„|DƒƒM‰ˆrF|jdˆƒdj|ƒS)NcSsg|] }|d‘qS)rr )rpÚxr r rú ×szmap_flags..csg|]}ˆ|d@r|‘qS)rr )rpry)Úvaluer rrz×scSsg|] }|d‘qS)rr )rpryr r rrzØsz0x%xz | )ÚsumÚappendÚjoin)r{Ú flags_mapZbsr )r{rÚ map_flagsÖs r€cs:|dkr dSt|ƒ‰t‡fdd„dd„|jdƒDƒDƒƒS)NÚrcs"g|]}ttˆj||ƒƒdƒ‘qS)r)ÚintÚstrÚget)rpry)Úbdr rrzäszunmap_flags..cSsg|] }|jƒ‘qSr )Ústrip)rpryr r rrzåsú|)rr|Úsplit)r{rr )r…rÚ unmap_flagsÞs  r‰écCs@t|ƒr dtj|ƒtj|ƒfSd|t?|dt>d@fSdS)Nz%d:%dr)rÚosÚmajorÚminorÚkern_minorbits)r r{r r rÚ decode_devìsr�cCsHdd„|jdƒDƒ}t|ƒr0tj|d|dƒS|dt>|dBSdS)NcSsg|] }t|ƒ‘qSr )r‚)rpryr r rrzõszencode_dev..ú:rr)rˆrr‹ÚmakedevrŽ)r r{rr r rÚ encode_devôsr’cCstj|ƒjƒS)N)Úbase64rÚdecode)r{r r rÚ encode_base64üsr•cCstjtj|ƒƒS)N)r“Ú decodebytesrƒÚencode)r{r r rÚ decode_base64sr˜cCs tj|ƒS)N)ÚquopriÚ encodestring)r{r r rÚ encode_unixsr›cCs tj|ƒS)N)r™Ú decodestring)r{r r rÚ decode_unixsr�Z unix_namecCst|ƒ}|rt|StSdS)N)rr—r•)r Úcr r rÚ get_bytes_encsrŸcCst|ƒ}|rt|StSdS)N)rr”r˜)r ržr r rÚ get_bytes_decsr cCs dtkrt}nttf}t||ƒS)NÚ basestring)Ú __builtins__r¡rƒÚbytesÚ isinstance)r{Z string_typesr r rÚ is_string sr¥Fc Cs$|s t|ƒ}|jtjkr$t|||ƒS|jtjkrtj |dƒd>tj |dƒd>tj |dƒ}t |ƒ}|j |j ƒn"x0|D]}|j t||||ƒƒqÊWnt||||ƒ}y|jƒ||j<Wqttfk �r,|||j<YqXqW|S) z^ Convert protobuf msg to dictionary. Takes a protobuf message and returns a dict. rrr$r,ré`rIr$)Ú collectionsÚ OrderedDictZ ListFieldsÚlabelr¦ÚLABEL_REPEATEDrÚlenÚsocketZntohlrrr}Z compressedrµr”r¬ÚUnicodeDecodeErrorÚAttributeError) Úpbr±r²Údr r{Zd_valrwZaddrr r rr¨Qs(    8 r¨c Cs |jtjkrt|ƒ|ƒS|jtjkr6|jjj|dƒjS|jt krôt |j}|t krêt |ƒrêt |ƒrlt ||ƒSt|ƒ}|r¤y t|}Wntk r˜Yn Xt||ƒSt|ƒ}|ràt|d|jj|dƒ}|dkrÜ||dƒ}|S||dƒS||ƒSntd|j|jfƒ‚dS)Nrrz!Field(%s) has unsupported type %d)rmr¦r©r rªr«Zvalues_by_namer„Znumberr­r‚r¥rr’rr®r¯r‰rr°r¬)r r{r³rrr´Úretr r rÚ _dict2pb_castss4           rÂcCsœ�x”|jjD�]†}|j|krq ||j}|jtjk�rLt||jdƒ}t|dƒoVt|ƒ�r t |dƒ}|j dkr†|j t j t|ƒƒƒq |j dk�rüt|ƒ}|j t j |d ?d@ƒƒ|j t j |d ?d@ƒƒ|j t j |d ?d@ƒƒ|j t j |d?d@ƒƒq td |j ƒ‚q x†|D]4}|jtjk�r4t||jƒƒn|j t||ƒƒ�qWq |jtjk�r€t||jƒjƒt|t||jdƒƒq t||jt||ƒƒq W|S)zd Convert dictionary to protobuf msg. Takes dict and protobuf message to be merged into. Nrrr0r$r,lÿÿrrzUnknown IP address version %dr¶rIr$r)Z DESCRIPTORZfieldsr¬r¹r¦rºÚgetattrr¥rrÚversionr}r¼Zhtonlr‚r¯rmr§Údict2pbÚaddrÂZ SetInParentÚsetattr)rÀr¿r r{Zpb_valÚvalZivalrwr r rrÅ›s8       rÅ)rr)rr)rr)rr)r r)r!r")r#r$)r%r&r)r'rr)r(rr)r)rr)r*rr")r+r"r$)r-r$rI)r/rIrK)r1rKr&)r3r&é)r4rÉé)r6rÊé)r8rËé)r:rÌé )r<rÍé@)r>rÎé€)r@rÏé)rBrÐì)rDrÑ)rFr)rGr)rHrI)rJrK)rLr&)rMrN)rOrP)rQrR)rSrT)rUrV)rWrX)rYrZ)r[r\)r]r^)r_r`)rarb)rcr)rdr)rer)rfr")rgrhr)rirr)rjrr)rkr)FF)FF)Ir“r·r‹r™r¼Z ipaddressrrrZgoogle.protobuf.descriptorrr¦r Údirršrrœr–Z TYPE_FIXED64r‚Z TYPE_FIXED32Z TYPE_SFIXED64Z TYPE_SFIXED32Z TYPE_INT64Z TYPE_UINT64Z TYPE_SINT64Z TYPE_INT32Z TYPE_UINT32Z TYPE_SINT32Z TYPE_BOOLÚboolZ TYPE_STRINGrƒr­rrrrrrrZ mmap_prot_mapZmmap_flags_mapZmmap_status_mapZrfile_flags_mapZseals_flags_mapZpmap_flags_mapr®Zgen_mapsZsk_mapsrtruZ gen_rmapsZsk_rmapsr°r€r‰rŽr�r’r•r˜r›r�r—r”rŸr r¥rµr¨rÂrÅr r r rÚs        ( "(