ne:scapy
Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Einführung
- Einführungsvortrag von Tobias Rosenau: Scapy Einführung
- Einführung auf Packetlevel.ch: http://www.packetlevel.ch/html/scapy/scapy.html
- Paket-Captures lesen und schreiben: read/write *.pcap's
- Pakete schnell versenden: scapy - fastest way to send packets
Overview:
ls()
lists all available protocols and protocol options,
lsc()
shows available scapy commands.
The summary()
method provides a quick look at the packet’s layers:
pkt.summary()
The show()
and show2()
methods provide a deeper look into the packet structure:
pkt.show()
The command()
method returns a string with the commands necessary to recreate that packet:
pkt.command()
haslayer()
and getlayer()
test for the existence of a layer and return this layer.
Paketgenerierung
i = IP() t = UDP() # or TCP() t.sport = t.dport = 50000 d = "some data to send" p = i/t/d send(p) # sends at IP level sendp(Ether()/p) # sends at Ethernet level
Generieren von Tunnelpaketen
Fehlende Protokolle
- IPsec (nicht geplant)
- 6LoWPAN (projekt)
Fragmentierung
Dokumentation
Verschiedenes
- Für feste und wiederkehrende Test-Abläufe ist scapytain praktisch. Es erlaubt die Definition vieler Tests (mit ja/nein-Resultaten) mit Gruppierungen und Abhängigkeiten.
- anderes penetration test tool auf Scapy-Basis: http://inguma.eu/projects/inguma
- Scapy-Pakete haben (undokumentiert) auch Zeitstempel. Alle Pakete haben das Attribut
time
für den Zeitpunkt der Erstellung (d.h. Instanziierung vonPacket()
). – Beim Senden wird zudem das Attributsent_time
gesetzt. Bsp.:>>> res,unans = srloop(IP(dst=server)/UDP()/DNS(rd=1, id=1, qd=DNSQR(qname=name, qtype=0xff, qclass="IN")), count = 3) >>> [res[x][0].time for x in range(len(res))] [1323265992.993212, 1323265992.993212, 1323265992.993212] >>> [res[x][0].sent_time for x in range(len(res))] [1323265993.054496, 1323265994.0183351, 1323265995.0216329]
Aarghh… das ganze funktioniert allerdings nur für einzelne Pakete und nicht für Listen… m.E. ein Bug.
- Mit den
stopper*
-Argumenten lässt sich die Funktionsniff
auch in Threads benutzen und 'von außen' beenden (Beispiel/Doku). Alternative Implementierung: mit multiprocessing.Event
Installation
ne/scapy.1609210696.txt.gz · Zuletzt geändert: 2020/12/29 02:58 von admin