0% found this document useful (0 votes)
15 views

scapy-cheat-sheet

The document provides an overview of basic commands and functionalities in Scapy, a powerful Python library for packet manipulation. It covers how to construct, send, and receive packets, as well as display and sniff them. Additionally, it includes examples of specifying addresses, values, and randomizing fields for fuzzing purposes.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views

scapy-cheat-sheet

The document provides an overview of basic commands and functionalities in Scapy, a powerful Python library for packet manipulation. It covers how to construct, send, and receive packets, as well as display and sniff them. Additionally, it includes examples of specifying addresses, values, and randomizing fields for fuzzing purposes.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 1

SCAPY packetlife.

net
Basic Commands Specifying Addresses and Values
ls()
# Explicit IP address (use quotation marks)
List all available protocols and protocol options
>>> IP(dst="192.0.2.1")
lsc()
List all available scapy command functions # DNS name to be resolved at time of transmission
conf >>> IP(dst="example.com")
Show/set scapy configuration parameters
# IP network (results in a packet template)
Constructing Packets >>> IP(dst="192.0.2.0/24")
# Setting protocol fields # Random addresses with RandIP() and RandMAC()
>>> ip=IP(src="10.0.0.1") >>> IP(dst=RandIP())
>>> ip.dst="10.0.0.2" >>> Ether(dst=RandMAC())
# Combining layers # Set a range of numbers to be used (template)
>>> l3=IP()/TCP() >>> IP(ttl=(1,30))
>>> l2=Ether()/l3
# Random numbers with RandInt() and RandLong()
# Splitting layers apart >>> IP(id=RandInt())
>>> l2.getlayer(1)
<IP frag=0 proto=tcp |<TCP |>>
Sending Packets
>>> l2.getlayer(2)
<TCP |> send(pkt, inter=0, loop=0, count=1, iface=N)
Send one or more packets at layer three
Displaying Packets sendp(pkt, inter=0, loop=0, count=1, iface=N)
Send one or more packets at layer two
# Show an entire packet
>>> (Ether()/IPv6()).show() sendpfast(pkt, pps=N, mbps=N, loop=0, iface=N)
Send packets much faster at layer two using tcpreplay
###[ Ethernet ]###
dst= ff:ff:ff:ff:ff:ff >>> send(IP(dst="192.0.2.1")/UDP(dport=53))
src= 00:00:00:00:00:00 .
type= 0x86dd Sent 1 packets.
###[ IPv6 ]### >>> sendp(Ether()/IP(dst="192.0.2.1")/UDP(dport=53))
version= 6 .
tc= 0 Sent 1 packets.
fl= 0
plen= None
Sending and Receiving Packets
nh= No Next Header
hlim= 64 sr(pkt, filter=N, iface=N), srp(…)
src= ::1 Send packets and receive replies
dst= ::1 sr1(pkt, inter=0, loop=0, count=1, iface=N), srp1(…)
Send packets and return only the first reply
# Show field types with default values
srloop(pkt, timeout=N, count=N), srploop(…)
>>> ls(UDP()) Send packets in a loop and print each reply
sport : ShortEnumField = 1025 (53)
dport : ShortEnumField = 53 (53) >>> srloop(IP(dst="packetlife.net")/ICMP(), count=3)
len : ShortField = None (None) RECV 1: IP / ICMP 174.143.213.184 > 192.168.1.140
chksum : XShortField = None (None) RECV 1: IP / ICMP 174.143.213.184 > 192.168.1.140
RECV 1: IP / ICMP 174.143.213.184 > 192.168.1.140
Fuzzing
Sniffing Packets
# Randomize fields where applicable
>>> fuzz(ICMP()).show() sniff(count=0, store=1, timeout=N)
Record packets off the wire; returns a list of packets when stopped
###[ ICMP ]###
type= <RandByte> # Capture up to 100 packets (or stop with ctrl-c)
code= 227 >>> pkts=sniff(count=100, iface="eth0")
chksum= None >>> pkts
unused= <RandInt> <Sniffed: TCP:92 UDP:7 ICMP:1 Other:0>

by Jeremy Stretch
43
v1.0
35

You might also like