[PYTHON] 28.02.2014 Zusammenfassung der in #ssmjp, Teil 1, vorgestellten Inhalte

Ich habe eingeführt, dass Sie dies tun können, indem Sie eine PCAP-Datei mit einem Ping, einer Echoanforderung und einer Echoantwort vorbereiten.

Ich habe über die Ankündigung bei ssmjp im Blog http://th0x0472.at.webry.info/201403/article_1.html geschrieben

Laden Sie zunächst die Bibliothek.

import dpkt

Öffnen Sie die PCAP-Datei.

>>> p=dpkt.pcap.Reader(open("demo.pcap","r"))
>>> p
<dpkt.pcap.Reader object at 0xfc1f10>

Mit readpkts () können Sie eine Liste von Zeitstempeln und Tupeln von Paketdaten abrufen.

>>> len(p.readpkts())
2
>>> p.readpkts()
[(1393533576.809375, '\x00:\x9d\xbd5\xcc\x08\x00\'\xca\xd8\xe2\x08\x00E\x00\x00T\x17\xcd@\x00@\x01*\xef\xc0\xa8\x01\x10J}\xeb\xb7\x08\x00\xfc\xa1\x1a;\x00\x01\x88\xa2\x0fS\x00\x00\x00\x00~Y\x0c\x00\x00\x00\x00\x00\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./01234567'), (1393533577.117797, '\x08\x00\'\xca\xd8\xe2\x00:\x9d\xbd5\xcc\x08\x00E\x00\x00T\x9c\xfe\x00\x008\x01\xed\xbdJ}\xeb\xb7\xc0\xa8\x01\x10\x00\x00\x04\xa2\x1a;\x00\x01\x88\xa2\x0fS\x00\x00\x00\x00~Y\x0c\x00\x00\x00\x00\x00\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./01234567')]

Sie können auf solche Paketdaten zugreifen.

>>> p.readpkts()[0][1]
'\x00:\x9d\xbd5\xcc\x08\x00\'\xca\xd8\xe2\x08\x00E\x00\x00T\x17\xcd@\x00@\x01*\xef\xc0\xa8\x01\x10J}\xeb\xb7\x08\x00\xfc\xa1\x1a;\x00\x01\x88\xa2\x0fS\x00\x00\x00\x00~Y\x0c\x00\x00\x00\x00\x00\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./01234567'

Macht Paketdaten zu einem Ethernet-Klassenobjekt.

>>> dpkt.ethernet.Ethernet((p.readpkts()[0][1]))
Ethernet(src="\x08\x00'\xca\xd8\xe2", dst='\x00:\x9d\xbd5\xcc', data=IP(src='\xc0\xa8\x01\x10', off=16384, dst='J}\xeb\xb7', sum=10991, len=84, p=1, id=6093, data=ICMP(sum=64673, data=Echo(id=6715, seq=1, data='\x88\xa2\x0fS\x00\x00\x00\x00~Y\x0c\x00\x00\x00\x00\x00\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./01234567'))))
>>> dpkt.ethernet.Ethernet((p.readpkts()[0][1])).data
IP(src='\xc0\xa8\x01\x10', off=16384, dst='J}\xeb\xb7', sum=10991, len=84, p=1, id=6093, data=ICMP(sum=64673, data=Echo(id=6715, seq=1, data='\x88\xa2\x0fS\x00\x00\x00\x00~Y\x0c\x00\x00\x00\x00\x00\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./01234567')))

Nehmen Sie ein IP-Paket und sehen Sie sich die Quell-IP-Adresse an.

>>> req=dpkt.ethernet.Ethernet((p.readpkts()[0][1])).data
>>> req.src
'\xc0\xa8\x01\x10'

Bei dieser Geschwindigkeit ist es schwer zu erkennen, aber es ist einfacher zu erkennen, ob Sie die Socket-Bibliothek verwenden.

>>> import socket
>>> socket.inet_ntoa(req.src)
'192.168.1.16'

Recommended Posts

28.02.2014 Zusammenfassung der in #ssmjp, Teil 1, vorgestellten Inhalte
Zusammenfassung der Grundkenntnisse von PyPy Teil 1
Inhalt von __name__
Kaggle Zusammenfassung: Redhat (Teil 1)
Tensorflow / Keras-Zusammenfassung
Erhaltene Inhalte von sosreport
Zusammenfassung der Verwendung von pyenv
Zusammenfassung der Zeichenfolgenoperationen
[Anmerkung] Inhalt der Form [0], Form [1], Form [2]
Kaggle Zusammenfassung: Redhat (Teil 2)
Zusammenfassung der Python-Argumente
Zusammenfassung der Testmethode
So mischen Sie einen Teil der Python-Liste (at random.shuffle)
Zusammenfassung des mit einer Geschwindigkeit von einer Sekunde durchgeführten Bildcrawls