python / dpkt: savoir si le paquet est un paquet tcp ou un paquet udp ,
J'ai des scripts python qui capture les paquets sur le réseau ethernet à l'aide de dpkt, mais comment puis-je différencier les paquets tcp et udp.
Finalement, je voudrais avoir une liste de paquets pour chaque connexion tcp a été établi au cours de l'intervalle de temps.
mon code est:
import dpkt
import pcapy
cap=pcap.open_live('eth0',100000,1,0)
(header,payload)=cap.next()
while header:
eth=dpkt.ethernet.Ethernet(str(payload))
ip=eth.data
tcp=ip.data
# i need to know whether it is a tcp or a udp packet here!!!
(header,payload)=cap.next()
J'ai trouvé la réponse donc je pourrais aussi bien le poster ici pour les autres. Le code suivant fait le travail: ip=eth.les données if (ip.__dict).has_key('tcp'): #puis c'est un paquet tcp...
OriginalL'auteur ConfusedAboutCPP | 2012-01-13
Vous devez vous connecter pour publier un commentaire.
En-tête IP contient des protocoles sur le terrain. dpkt devrait vous permettre d'obtenir cette valeur, et en l'utilisant, vous pouvez deviner ce qui est au-dessus d'IP. Voici une liste de protocoles valides numéros de http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml.
UDP est égal à 17, alors que le protocole TCP est de 6.
Edit:
J'ai vérifié cette question et comme je l'ai mentionné dpkg fournir
p
propriétés de protocole d'accès au domaine de la propriété intellectuelle. Ainsi, vous pouvez vérifier contre elle. Mais il a également d'analyser automatiquement des paquets et de définirdata
propriété à l'instance de la classe qui représentent supérieure protocole comme TCP ou UDP. Ainsi, vous pouvez vérifier le type dedata
de la propriété et de vous reconnaître ce protocole.OriginalL'auteur Zuljin
Un script python qui capture les paquets sur le réseau ethernet de l'adaptateur
eth0
à l'aide de dpkt, et établit une distinction entre TCP et UDP paquets de la IP.OriginalL'auteur Irengbam Tilokchan Singh