scapy.scapypipes

class scapy.scapypipes.ConvertPipe(low_type=None, high_type=None, name=None)

Bases: scapy.pipetool.Drain

Packets sent on entry are converted to another type of packet.

   +-------------+
>>-|--[convert]--|->>
   |             |
 >-|--[convert]--|->
   +-------------+

See Packet.convert_packet.

high_push(msg)
push(msg)
class scapy.scapypipes.FDSourceSink(fd, name=None)

Bases: scapy.pipetool.Source

Use a file descriptor as source and sink

   +-------------+
>>-|             |->>
   |             |
 >-|-[file desc]-|->
   +-------------+
deliver()
fileno()
push(msg)
class scapy.scapypipes.Inject3Sink(iface=None, name=None)

Bases: scapy.scapypipes.InjectSink

start()
class scapy.scapypipes.InjectSink(iface=None, name=None)

Bases: scapy.pipetool.Sink

Packets received on low input are injected to an interface

   +-----------+
>>-|           |->>
   |           |
 >-|--[iface]  |->
   +-----------+
push(msg)
start()
stop()
class scapy.scapypipes.RdpcapSource(fname, name=None)

Bases: scapy.pipetool.Source

Read packets from a PCAP file send them to low exit.

   +----------+
>>-|          |->>
   |          |
 >-|  [pcap]--|->
   +----------+
check_recv()
deliver()
fileno()
start()
stop()
class scapy.scapypipes.SniffSource(iface=None, filter=None, socket=None, name=None)

Bases: scapy.pipetool.Source

Read packets from an interface and send them to low exit.

   +-----------+
>>-|           |->>
   |           |
 >-|  [iface]--|->
   +-----------+

If neither of the iface or socket parameters are specified, then Scapy will capture from the first network interface.

Parameters
  • iface – A layer 2 interface to sniff packets from. Mutually exclusive with the socket parameter.

  • filter – Packet filter to use while capturing. See L2listen. Not used with socket parameter.

  • socket – A SuperSocket to sniff packets from.

check_recv()
deliver()
fileno()
start()
stop()
class scapy.scapypipes.TCPConnectPipe(addr='', port=0, name=None)

Bases: scapy.pipetool.Source

TCP connect to addr:port and use it as source and sink

   +-------------+
>>-|             |->>
   |             |
 >-|-[addr:port]-|->
   +-------------+
deliver()
fileno()
push(msg)
start()
stop()
class scapy.scapypipes.TCPListenPipe(addr='', port=0, name=None)

Bases: scapy.scapypipes.TCPConnectPipe

TCP listen on [addr:]port and use first connection as source and sink; send peer address to high output

   +------^------+
>>-|    +-[peer]-|->>
   |   /         |
 >-|-[addr:port]-|->
   +-------------+
deliver()
push(msg)
start()
class scapy.scapypipes.TriggerDrain(f, name=None)

Bases: scapy.pipetool.Drain

Pass messages and trigger when a condition is met

   +------^------+
>>-|-[condition]-|->>
   |      |      |
 >-|-[condition]-|->
   +-------------+
high_push(msg)
push(msg)
class scapy.scapypipes.TriggeredMessage(msg, name=None)

Bases: scapy.pipetool.Drain

Send a preloaded message when triggered and trigger in chain

   +------^------+
>>-|      | /----|->>
   |      |/     |
 >-|-[ message ]-|->
   +------^------+
on_trigger(trigmsg)
class scapy.scapypipes.TriggeredQueueingValve(start_state=True, name=None)

Bases: scapy.pipetool.Drain

Let messages alternatively pass or queued, changing on trigger

   +------^-------+
>>-|-[pass/queue]-|->>
   |      |       |
 >-|-[pass/queue]-|->
   +------^-------+
high_push(msg)
on_trigger(msg)
push(msg)
start()
class scapy.scapypipes.TriggeredSwitch(start_state=True, name=None)

Bases: scapy.pipetool.Drain

Let messages alternatively high or low, changing on trigger

   +------^------+
>>-|-\    |    /-|->>
   |  [up/down]  |
 >-|-/    |    \-|->
   +------^------+
high_push(msg)
on_trigger(msg)
push(msg)
class scapy.scapypipes.TriggeredValve(start_state=True, name=None)

Bases: scapy.pipetool.Drain

Let messages alternatively pass or not, changing on trigger

   +------^------+
>>-|-[pass/stop]-|->>
   |      |      |
 >-|-[pass/stop]-|->
   +------^------+
high_push(msg)
on_trigger(msg)
push(msg)
class scapy.scapypipes.UDPClientPipe(addr='', port=0, name=None)

Bases: scapy.scapypipes.TCPConnectPipe

UDP send packets to addr:port and use it as source and sink Start trying to receive only once a packet has been send

   +-------------+
>>-|             |->>
   |             |
 >-|-[addr:port]-|->
   +-------------+
deliver()
push(msg)
start()
class scapy.scapypipes.UDPDrain(ip='127.0.0.1', port=1234)

Bases: scapy.pipetool.Drain

UDP payloads received on high entry are sent over UDP

   +-------------+
>>-|--[payload]--|->>
   |      X      |
 >-|----[UDP]----|->
   +-------------+
high_push(msg)
push(msg)
class scapy.scapypipes.UDPServerPipe(addr='', port=0, name=None)

Bases: scapy.scapypipes.TCPListenPipe

UDP bind to [addr:]port and use as source and sink Use (ip, port) from first received IP packet as destination for all data

   +------^------+
>>-|    +-[peer]-|->>
   |   /         |
 >-|-[addr:port]-|->
   +-------------+
deliver()
push(msg)
start()
class scapy.scapypipes.WiresharkSink(name=None, linktype=None, args=None)

Bases: scapy.scapypipes.WrpcapSink

Streams Packet from the low entry to Wireshark.

Packets are written into a pcap stream (like WrpcapSink), and streamed to a new Wireshark process on its stdin.

Wireshark is run with the -ki - arguments, which cause it to treat stdin as a capture device. Arguments in args will be appended after this.

Extends WrpcapSink.

   +----------+
>>-|          |->>
   |          |
 >-|--[pcap]  |->
   +----------+
Parameters
args

Additional arguments for the Wireshark process.

This must be either None (the default), or a list of str.

This attribute has no effect after calling PipeEngine.start().

See wireshark(1) for more details.

start()
class scapy.scapypipes.WrpcapSink(fname, name=None, linktype=None)

Bases: scapy.pipetool.Sink

Writes Packet on the low entry to a pcap file. Ignores all messages on the high entry.

Note

Due to limitations of the pcap format, all packets must be of the same link type. This class will not mutate packets to conform with the expected link type.

   +----------+
>>-|          |->>
   |          |
 >-|--[pcap]  |->
   +----------+
Parameters
  • fname (str) – Filename to write packets to.

  • linktype (None or int) – See linktype.

linktype

Set an explicit link-type (DLT_) for packets. This must be an int or None.

This is the same as the wrpcap() linktype parameter.

If None (the default), the linktype will be auto-detected on the first packet. This field will not be updated with the result of this auto-detection.

This attribute has no effect after calling PipeEngine.start().

push(msg)
start()
stop()