˓fPdZddlZddlmZddlmZddlmZddl m Z de ddDZ e d e d d De d e d dDGdde ZdZddZdZdZddZdS)zLThis module contains functions to turn TShark XML parts into Packet objects.NXmlLayer)Packet) PacketSummary)BaseTsharkOutputParserci|] }|dv|d S)) N.0bad_chars S/build/venv/lib/python3.11/site-packages/pyshark/tshark/output_parser/tshark_xml.py r s%lllXYkMkMkXtMkMkMk ci|]}|dSNr r s rrr sOOOX(DOOOriici|]}|dSrr r s rrr sPPPX(DPPPriicDeZdZdZd fd Zd fd ZdZd dZdZxZ S) TsharkXmlParser@Fcdt||_d|_dSr)super__init___parse_summaries_psml_structure)selfparse_summaries __class__s rrzTsharkXmlParser.__init__s/  /#rTcK|jr||d{V}t|||d{VS)N)got_first_packet)r_get_psml_structrget_packets_from_stream)rstream existing_datar#r!s rr%z'TsharkXmlParser.get_packets_from_streamsj   @"&"7"7"?"???????MWW44V]]m4nnnnnnnnnrc.t||jS)Npsml_structure)packet_from_xml_packetr)rpackets r_parse_single_packetz$TsharkXmlParser._parse_single_packets%fT=QRRRRrc$t|dS)a@Gets data containing a (part of) tshark xml. If the given tag is found in it, returns the tag data and the remaining data. Otherwise returns None and the same data. :param data: string of a partial tshark xml. :return: a tuple of (tag, data). tag will be None if none is found. packet)tag_name)_extract_tag_from_xml_data)rdatar#s r_extract_packet_from_dataz)TsharkXmlParser._extract_packet_from_data s*$CCCCrcKd}d}|sU||jd{V}||z }t|d\}}|rt||_n|s|S|U|S)zGets the current PSML (packet summary xml) structure in a tuple ((None, leftover_data)), only if the capture is configured to return it, else returns (None, leftover_data). A coroutine. rNs structure)readSUMMARIES_BATCH_SIZEr1psml_structure_from_xmlr)rfd initial_data psml_structnew_datas rr$z TsharkXmlParser._get_psml_struct+s    $WWT%>????????H H $L(B{'K'K$$ $## $r)F)T) __name__ __module__ __qualname__r6rr%r-r3r$ __classcell__)r!s@rrrs$$$$$$ oooooo SSS D D D Drrct|tjjstj|}|dSNsection) isinstancelxml objectifyObjectifiedElement fromstringfindallr)s rr7r7@sC ndn&G H HC22>BB  ! !) , ,,rct|tjjstjddd}|dt}tj| d|}|rt||St|S)a8 Gets a TShark XML packet object or string, and returns a pyshark Packet objec.t :param xml_pkt: str or xml object. :param psml_structure: a list of the fields in each packet summary in the psml data. If given, packets will be returned as a PacketSummary object. :return: Packet object. Tzutf-8) huge_treerecoverencodingignore)errors) rCrDrErF makeparserdecode translateDEL_BAD_XML_CHARSrGencode_packet_from_psml_packet_packet_from_pdml_packet)xml_pktr*parsers rr+r+Fs gt~@ A AM**T4RY*ZZ...11;;z,_packet_from_pdml_packet..]s = = =%huoo = = =rrnumlen timestampT)rawcaplen interface_id)layers frame_infonumberlength sniff_timecaptured_lengthinterface_captured)r]rget_field_value) pdml_packetrggeninfoframes rrUrU\s = =;+< = = =F#AYq 6!"":FUG E':Q:QRW:X:X 0077GD[D[\gmqD[DrDr")"9"9("C"C%*%:%:>t%:%T%T V V VVrr/cd|zdz}|dd}||}|dkr;|t|z }||}|||||dfSd|fS)a`Gets data containing a (part of) tshark xml. If the given tag is found in it, returns the tag data and the remaining data. Otherwise returns None and the same data. :param data: string of a partial tshark xml. :param tag_name: A bytes string of the tag name :return: a tuple of (tag, data). tag will be None if none is found. <>srsqRR444444((((((777777KKKKKKmlEE$4E4ElllOOvv9N9NOOOPPPPPvw9O9OPPPQQQ-----,---`--- ----$DDDVVVr