scapy.contrib.wireguard

WireGuard Module Implements the WireGuard network tunnel protocol. Based on the whitepaper: https://www.wireguard.com/papers/wireguard.pdf

class scapy.contrib.wireguard.Wireguard(*args, **kargs)

Bases: scapy.packet.Packet

Wrapper that only contains the message type.

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  MESSAGE TYPE |                 RESERVED ZERO                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |
+-+-+-+-+-+-+-+-+

                          Fig. Wireguard                          
Wireguard fields

message_type

ByteEnumField

1

reserved_zero

ThreeBytesField

0

payload_guess

Possible sublayers: WireguardCookieReply, WireguardInitiation, WireguardResponse, WireguardTransport

class scapy.contrib.wireguard.WireguardCookieReply(*args, **kargs)

Bases: scapy.packet.Packet

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         RECEIVER INDEX                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             NONCE             |        ENCRYPTED COOKIE       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                    Fig. WireguardCookieReply                     
WireguardCookieReply fields

receiver_index

XLEIntField

0

nonce

XStrFixedLenField

0

encrypted_cookie

XStrFixedLenField

0

class scapy.contrib.wireguard.WireguardInitiation(*args, **kargs)

Bases: scapy.packet.Packet

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          SENDER INDEX                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     UNENCRYPTED EPHEMERAL     |        ENCRYPTED STATIC       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      ENCRYPTED TIMESTAMP      |              MAC1             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              MAC2             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Fig. WireguardInitiation                     
WireguardInitiation fields

sender_index

XLEIntField

0

unencrypted_ephemeral

XStrFixedLenField

0

encrypted_static

XStrFixedLenField

0

encrypted_timestamp

XStrFixedLenField

0

mac1

XStrFixedLenField

0

mac2

XStrFixedLenField

0

class scapy.contrib.wireguard.WireguardResponse(*args, **kargs)

Bases: scapy.packet.Packet

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          SENDER INDEX                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         RECEIVER INDEX                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     UNENCRYPTED EPHEMERAL     |       ENCRYPTED NOTHING       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              MAC1             |              MAC2             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Fig. WireguardResponse                      
WireguardResponse fields

sender_index

XLEIntField

0

receiver_index

XLEIntField

0

unencrypted_ephemeral

XStrFixedLenField

0

encrypted_nothing

XStrFixedLenField

0

mac1

XStrFixedLenField

0

mac2

XStrFixedLenField

0

class scapy.contrib.wireguard.WireguardTransport(*args, **kargs)

Bases: scapy.packet.Packet

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         RECEIVER INDEX                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            COUNTER                            |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ENCRYPTED ENCAPSULATED PACKET |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Fig. WireguardTransport                      
WireguardTransport fields

receiver_index

XLEIntField

0

counter

XLELongField

0

encrypted_encapsulated_packet

XStrField

None