L'analyse du ppce de fichiers avec dpkt (Python)

Je suis en train d'analyser préalablement trace capturée pour les en-têtes HTTP en utilisant la dpkt module:

import dpkt
import sys

f=file(sys.argv[1],"rb")
pcap=dpkt.pcap.Reader(f)


for ts, buf in pcap:
  eth=dpkt.ethernet.Ethernet(buf)
  ip=eth.data
  tcp=ip.data

if tcp.dport==80 and len(tcp.data)>0:
    try:
        http=dpkt.http.Request(tcp.data)
        print http.uri
    except:
        print 'issue'
        continue


  f.close()

Bien qu'il semble effectivement analyser la plupart des paquets, je reçois un NeedData("fin prématurée de les en-têtes") exception sur certains. Ils semblent être valide paquets dans WireShark, donc je suis un peu confus quant à pourquoi les exceptions sont lancés.

Certaines de sortie:

/ec/fd/ls/GlinkPing.aspx?IG=4a06eefebcc1495f8f4de7cb41f0ce5c&CID=2265e1228f3451ff8011dcbe5e0cdff7&ID=API.YAds%2C5037.1&1307036510547
issue
issue #misses one packet here, two exceptions
/?ld=4vyO5h1FkjCNjBpThUTGnzF50sB7QUGL0Ok8YefDTWNmO6RXghgDqHXtcp1OqeXATbCAHliIkglLj95-VEwG6ZJN3fblgd3Lh5NvTp4mZPcBGXUyKqXn9FViBAsmt1T96oumpCL5gm7gZ3qlZqSdLNUWjpML_9I8FvB2TLKPSYcJmb_VwwvJhiHpiUIvrjRdzqdVVnuQZVjQmZIIlfaMq0LOmgew_plopjt7hYvOSzBi3VJl4bqOBVk3zdhIvgZK0SfJp3kEWTXAr2_UU_q9KHBpSTnvuhY2W1xo3K2BOHKGk1VAlMiWtWC_nUaJdZmhzzWfb6yRAmY3M9YkUzFGs9z10-70OszkkNpVMSS3-p7xsNXQnC3Zpaxks

Aide est très appréciée; peut-être une alternative bibliothèque recommandation est nécessaire.

  • Vous devriez comparer la "longueur capturé" par rapport à la "longueur d'origine." Par défaut ppce va tronquer long de paquets, de sorte que vous pouvez peut-être pas certains de l'origine des données, sauf si vous modifiez vos options lors de la capture.
  • Si la requête HTTP est divisé en deux ou plusieurs paquets, votre décodeur correctement le déchiffrer? Je pense que le code est en faisant l'hypothèse que la demande de tenir dans un seul paquet.
  • Ah, j'ai mis le snaplen à 0 lors de la capture à l'aide de tcpdump et qui a résolu mon problème. Merci.
InformationsquelleAutor Leif | 2011-06-14