3  i1@sddlZddlZddlZddlZddlZddlmZmZmZddl m Z ddl Z de ekrleje_eje_e jee jee jee jee jee jee jee jee jee jee jee je i Z!ddZ"ddZ#d d Z$d d Z%d dZ&ddZ'ddZ(dddgZ)dddddgZ*ddddddddddddddddddgZ+ddddddddddddddddgZ,dddddgZ-dddgZ.e)e*e+e,e.e-dfZ/dgdhdidjdkiZ0dldmdndodpdqdrdsdtdudpdvdwdxdydzd{d|d}d~ddd ddddddZ1dde2e0j3DZ4dde2e1j3DZ5e0e4fe1e5fdZ6ddZ7ddZ8dZ9ddZ:ddZ;ddZddZ?de>iZ@de?iZAddZBddZCddZDdddZEdddZFddZGddZHdS)N) IPv4Address IPv6Address ip_address)FieldDescriptor encodebytescCs|jjtjjS)N) GetOptions Extensionsopts_pb2criuhex)fieldr /usr/lib/python3.6/pb2dict.py_marked_as_hex1srcCs|jjtjjS)N)rrr r Zipadd)r r r r _marked_as_ip5srcCs|jjtjjS)N)rrr r flags)r r r r_marked_as_flags9srcCs|jjtjjS)N)rrr r dev)r r r r_marked_as_dev=srcCs|jjtjjS)N)rrr r Zodev)r r r r_marked_as_odevAsrcCs|jjtjjS)N)rrr r dict)r r r r_marked_as_dictEsrcCs|jjtjjS)N)rrr r Zconv)r r r r _custom_convIsr PROT_READ PROT_WRITE PROT_EXEC MAP_SHARED MAP_PRIVATE MAP_DROPPABLEMAP_ANON MAP_GROWSDOWN VMA_AREA_NONEVMA_AREA_REGULARVMA_AREA_STACKVMA_AREA_VSYSCALL VMA_AREA_VDSO VMA_AREA_HEAPVMA_FILE_PRIVATEVMA_FILE_SHAREDVMA_ANON_SHAREDVMA_ANON_PRIVATE VMA_AREA_SYSVIPC VMA_AREA_SOCKET VMA_AREA_VVAR VMA_AREA_AIORING VMA_AREA_MEMFDVMA_AREA_SHSTKVMA_AREA_UPROBES VMA_UNSUPPO_WRONLYO_RDWRO_CREAT@O_EXCLO_NOCTTYO_TRUNCO_APPEND O_NONBLOCKO_DSYNCFASYNC O_DIRECT@ O_LARGEFILE O_DIRECTORY O_NOFOLLOW O_NOATIME O_CLOEXEC F_SEAL_SEAL F_SEAL_SHRINK F_SEAL_GROW F_SEAL_WRITEF_SEAL_FUTURE_WRITE PE_PARENTPE_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)ZfamilytypestateprotocCs(i|] \}}ddt|jD|qS)cSsi|]\}}||qSr r ).0k2v2r r r sz.)listitems)rpkvr r rrssrscCs(i|] \}}ddt|jD|qS)cSsi|]\}}||qSr r )rprqrrr r rrssz.)rtru)rprvrwr r rrss)genZskcsPddfdd|DD}tdd|DMrF|jddj|S)NcSsg|] }|dqS)rr )rpxr r r szmap_flags..csg|]}|d@r|qS)rr )rpry)valuer rrzscSsg|] }|dqS)rr )rpryr r rrzsz0x%xz | )sumappendjoin)r{ flags_mapZbsr )r{r map_flagss rcs:|dkr dSt|tfdddd|jdDDS)Nrcs"g|]}ttj||dqS)r)intstrget)rpry)bdr rrzszunmap_flags..cSsg|] }|jqSr )strip)rpryr r rrzs|)rr|split)r{rr )rr unmap_flagss  rcCs@t|r dtj|tj|fSd|t?|dt>d@fSdS)Nz%d:%dr)rosmajorminorkern_minorbits)r r{r r r decode_devsrcCsHdd|jdD}t|r0tj|d|dS|dt>|dBSdS)NcSsg|] }t|qSr )r)rpryr r rrzszencode_dev..:rr)rrrmakedevr)r r{rr r r encode_devsrcCstj|jS)N)base64rdecode)r{r r r encode_base64srcCstjtj|S)N)r decodebytesrencode)r{r r r decode_base64srcCs tj|S)N)quopri encodestring)r{r r r encode_unixsrcCs tj|S)N)r decodestring)r{r r r decode_unixsrZ unix_namecCst|}|rt|StSdS)N)rrr)r cr r r get_bytes_encsrcCst|}|rt|StSdS)N)rrr)r rr r r get_bytes_decsrcCs dtkrt}nttf}t||S)N basestring) __builtins__rrbytes isinstance)r{Z string_typesr r r is_string srFc Cs$|s t|}|jtjkr$t|||S|jtjkrtj |dd>tj |dd>tj |d}t |}|j |j n"x0|D]}|j t||||qWnt||||}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 ListFieldslabelrLABEL_REPEATEDrlensocketZntohlrrr}Z compressedrrrUnicodeDecodeErrorAttributeError) pbrrdr r{Zd_valrwZaddrr r rrQs(    8 rc Cs |jtjkrt||S|jtjkr6|jjj|djS|jt krt |j}|t krt |rt |rlt ||St|}|ry t|}Wntk rYn Xt||St|}|rt|d|jj|d}|dkr||d}|S||dS||Sntd|j|jfdS)Nrrz!Field(%s) has unsupported type %d)rmrrrrrZvalues_by_namerZnumberrrrrrrrrrrrr)r r{rrrrretr r r _dict2pb_castss4           rcCsx|jjD]}|j|krq ||j}|jtjkrLt||jd}t|doVt|r t |d}|j dkr|j t j t|q |j dkrt|}|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}|jtjkr4t||jn|j t||qWq |jtjkrt||jjt|t||jdq t||jt||q W|S)zd Convert dictionary to protobuf msg. Takes dict and protobuf message to be merged into. Nrrr0r$r,lrrzUnknown IP address version %drrIr$r)Z DESCRIPTORZfieldsrrrrgetattrrrrversionr}rZhtonlrrrmrdict2pbaddrZ SetInParentsetattr)rrr r{Zpb_valvalZivalrwr r rrs8       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)IrrrrrZ ipaddressrrrZgoogle.protobuf.descriptorrrr dirrrrrZ TYPE_FIXED64rZ TYPE_FIXED32Z TYPE_SFIXED64Z TYPE_SFIXED32Z TYPE_INT64Z TYPE_UINT64Z TYPE_SINT64Z TYPE_INT32Z TYPE_UINT32Z TYPE_SINT32Z TYPE_BOOLboolZ TYPE_STRINGrrrrrrrrrZ mmap_prot_mapZmmap_flags_mapZmmap_status_mapZrfile_flags_mapZseals_flags_mapZpmap_flags_maprZgen_mapsZsk_mapsrtruZ gen_rmapsZsk_rmapsrrrrrrrrrrrrrrrrrrrr r r rs        ( "(