scapy.layers.tuntap

Implementation of TUN/TAP interfaces.

These allow Scapy to act as the remote side of a virtual network interface.

class scapy.layers.tuntap.LinuxTunIfReq(*args, **kargs)[source]

Bases: scapy.base_classes.Gen[scapy.packet.Packet]

Structure to request a specific device name for a tun/tap Linux struct ifreq.

See linux/if.h (struct ifreq) and tuntap.txt for reference.

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           IFRN NAME           |           IFRU FLAGS          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Fig. LinuxTunIfReq                        
LinuxTunIfReq fields

ifrn_name

StrFixedLenField

b''

ifru_flags

NativeShortField

0

class scapy.layers.tuntap.LinuxTunPacketInfo(*args, **kargs)[source]

Bases: scapy.base_classes.Gen[scapy.packet.Packet]

Base for TUN packets.

See linux/if_tun.h (struct tun_pi) for reference.

aliastypes
fields_desc
Display RFC-like schema
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             FLAGS             |              TYPE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Fig. LinuxTunPacketInfo                      
LinuxTunPacketInfo fields

flags

FlagsField

<Flag 0 ()>

type

XShortEnumField

36864

class scapy.layers.tuntap.NativeShortField(name, default)[source]

Bases: Generic[scapy.fields.I, scapy.fields.M]

class scapy.layers.tuntap.TunPacketInfo(*args, **kargs)[source]

Bases: scapy.base_classes.Gen[scapy.packet.Packet]

aliastypes
class scapy.layers.tuntap.TunTapInterface(iface=None, mode_tun=None, default_read_size=65535, strip_packet_info=True, *args, **kwargs)[source]

Bases: scapy.supersocket.SimpleSocket

A socket to act as the host’s peer of a tun / tap interface.

This implements kernel interfaces for tun and tap devices.

Parameters
  • iface – The name of the interface to use, eg: ‘tun0’

  • mode_tun (bool) – If True, create as TUN interface (layer 3). If False, creates a TAP interface (layer 2). If not supplied, attempts to detect from the iface name.

  • strip_packet_info (bool) – If True (default), strips any TunPacketInfo from the packet. If False, leaves it in tact. Some operating systems and tunnel types don’t include this sort of data.

FreeBSD references:

Linux references:

desc = "Act as the host's peer of a tun / tap interface"
recv_raw(x=None)[source]
send(x)[source]