Scapy ist eine Python Bibliothek um Pakete einer Vielzahl von Protokollen zu fälschen oder zu decodieren, sie über die Leitung zu senden, sie zu erfassen, Anfragen und Antworten abzugleichen und vieles mehr. Es kann die meisten klassischen Aufgaben wie Scannen, Tracerouting, Sondieren, Komponententests, Angriffe oder Netzwerkerkennung problemlos bewältigen (es kann hping, 85% von nmap, arpspoof, arp-sk, arping, tcpdump, tshark, p0f usw. ersetzen).
from scapy.all import * IFACES // show interfaces // interactive eth=Ether() eth.src="aa:bb:cc:dd:ee:ff" eth.dst="11:22:33:44:55:66" ip=IP() ip.src="1.1.1.1" ip.dst="2.2.2.2" tcp=TCP() tcp.sport=22 tcp.dport=33 pkt=(eth/ip/tcp) pkt.show() send(pkt) answer = sr1(pkt) // 1 liner send(IP(dst="1.1.1.1"),ICMP())
pkt=IP(dst="8.8.8.8")/UDP(dport=53)/DNS(rd=1,qd=DNSQR(qname="zarat.ml", qtype="A"))
Analyze
packet = IP(dst="192.168.0.1")/TCP(dport=80) response = sr1(packet) print(response[TCP].payload)
Packet handler
from scapy.all import * def packet_handler(packet): if ICMP in packet: print(packet[IP].src, " --> ", packet[IP].dst) sniff(filter="icmp", prn=packet_handler)
Alter
packet = IP(dst="192.168.0.1")/ICMP() packet[IP].dst = "10.0.0.1" send(packet)
DNS tracert
ans,unans=traceroute("8.8.8.8",l4=UDP(sport=RandShort())/DNS(qd=DNSQR(qname="mbcdn.lima-city.de")))