Parsing PDML (Wireshark xml)
Bonjour à tous,
Je dois analyser des requêtes DNS afin d'en faire des statistiques sur des champs spécifiques, j'ai à ma disposition des fichiers pdml, fichiers xml exporté par wireshark ou tshark. le fichier est assez conséquent (~500MB)
Quel librairie est la plus adaptée, afin de parcourir ce fichier afin d'en faire des statistiques, la première étape serait pour moi de parcourir les "packet" et s'il ont un enfant proto name="dns" et un enfant proto name=tcp, ajouter 1 à un compteur (pour la première étape basique)
Cette question est un peu générale désolé, juste une petite indication de la direction à prendre m'aiderais à éviter de partir dans la mauvaise ;)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
<pdml version="0" creator="wireshark/1.2.7">
<packet>
<proto name="geninfo" pos="0" showname="General information" size="68">
<field name="timestamp" pos="0" show="Jun 29, 2010 12:00:00.221254000" showname="Captured Time" value="1277805600.221254000" size="68"/>
</proto>
<proto name="frame" showname="Frame 1 (68 bytes on wire, 68 bytes captured)" size="68" pos="0">
<field name="frame.coloring_rule.string" showname="Coloring Rule String: udp" size="0" pos="0" show="udp"/>
</proto>
<proto name="raw" showname="Raw packet data" size="0" pos="0">
<field name="" show="No link information available" size="0" pos="0" value=""/>
</proto>
<proto name="ip" showname="Internet Protocol, Src: xx.xxx.xx.x.x (xxx.xxx.xxx.xxx), Dst: xxx.xx.xx.xx (xxx.xx.1.xxx)" size="20" pos="0">
<field name="ip.host" showname="Source or Destination Host: xx.xxx.xxx" hide="yes" size="4" pos="16" show="xxx.xx.xx.xx" value="8xx150"/>
</proto>
<proto name="udp" showname="User Datagram Protocol, Src Port: 41637 (41637), Dst Port: domain (53)" size="8" pos="20">
<field name="udp.srcport" showname="Source port: xxxx (xxxxx)" size="2" pos="20" show="xxxx" value="xxxx"/>
<field name="udp.length" showname="Length: 48" size="2" pos="24" show="48" value="0030"/>
</proto>
<proto name="dns" showname="Domain Name System (query)" size="40" pos="28">
<field name="dns.flags" showname="Flags: 0x0000 (Standard query)" size="2" pos="30" show="0x0000" value="0000">
<field name="dns.flags.response" showname="0... .... .... .... = Response: Message is a query" size="2" pos="30" show="0" value="0" unmaskedvalue="0000"/>
</proto>
</packet> |