python / dpkt: Finden Sie heraus, wenn Paket ist ein tcp-Paket oder ein udp-Paket ,
Habe ich ein python-Skripts, fängt die Pakete auf das ethernet mittels dpkt, aber wie kann ich unterscheiden welche Pakete sind tcp und welche udp.
Schließlich würde ich mag, um eine Liste der Pakete, die für jede tcp-Verbindung eingerichtet wurde, die während des Zeit-Intervalls.
mein code ist:
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()
- Ich fand die Antwort, also kann ich auch hier posten für andere. Der folgende code macht den job: ip=eth.Daten if (ip.__dict).has_key('tcp'): #, dann ist dies ein tcp-Paket...
Du musst angemeldet sein, um einen Kommentar abzugeben.
IP-header enthält das Feld Protokoll. dpkt sollte Ihnen ermöglichen, diesen Wert abzurufen und mit der können Sie erraten, was ist auf der Oberseite des IP. Hier ist eine Liste der gültigen Protokolle Nummern http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml.
UDP ist gleich 17 während TCP ist 6.
Bearbeiten:
Ich habe dieses Problem und wie ich bereits erwähnt dpkg bieten
p
Eigenschaften für den Zugriff auf Protokoll-Feld des IP. So können Sie prüfen, gegen Sie. Es wird aber auch automatisch analysieren Paket und legen Siedata
- Eigenschaft einer Instanz der Klasse, die Sie vertreten oberen Protokoll wie UDP oder TCP. So können Sie prüfen, Art derdata
Eigentum und Sie erkennen dieses Protokoll.Einem python-Skript fängt die Pakete auf dem ethernet-adapter
eth0
mit dpkt, und unterscheidet zwischen TCP und UDP - Pakete der IP -.