scapy.layers.dns module

DNS: Domain Name System

This implements: - RFC1035: Domain Names - RFC6762: Multicast DNS - RFC6763: DNS-Based Service Discovery

class scapy.layers.dns.ClientSubnetv4(name: str, default: bytes, length_from: Callable[[Packet], int] | None = None, max_length: Any | None = None)[source]

Bases: StrLenField

af_default = b'\xc0'
af_familly = 2
af_length = 32
getfield(pkt: Packet, s: bytes) Tuple[bytes, I][source]
i2len(pkt: Packet, x: Any) int[source]
i2m(pkt: Packet | None, x: str | Net | None) bytes[source]
m2i(pkt: Packet | None, x: bytes) str[source]
class scapy.layers.dns.ClientSubnetv6(name: str, default: bytes, length_from: Callable[[Packet], int] | None = None, max_length: Any | None = None)[source]

Bases: ClientSubnetv4

af_default = b' '
af_familly = 10
af_length = 128
class scapy.layers.dns.DNS(_pkt, /, *, length=None, id=0, qr=0, opcode=0, aa=0, tc=0, rd=1, ra=0, z=0, ad=0, cd=0, rcode=0, qdcount=None, ancount=None, nscount=None, arcount=None, qd=[<DNSQR  |>], an=[], ns=[], ar=[])[source]

Bases: DNSCompressedPacket

aliastypes
answers(other)[source]
compress()[source]

Return the compressed DNS packet (using dns_compress())

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             LENGTH            |               ID              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Q| OPCODE|A|T|R|R|Z|A|C| RCODE |            QDCOUNT            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            ANCOUNT            |            NSCOUNT            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            ARCOUNT            |               QD              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               AN              |               NS              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               AR              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                             Fig. DNS                             
DNS fields

length

ShortField (Cond)

None

id

ShortField

0

qr

BitField (1 bit)

0

opcode

BitEnumField

0

aa

BitField (1 bit)

0

tc

BitField (1 bit)

0

rd

BitField (1 bit)

1

ra

BitField (1 bit)

0

z

BitField (1 bit)

0

ad

BitField (1 bit)

0

cd

BitField (1 bit)

0

rcode

BitEnumField

0

qdcount

FieldLenField

None

ancount

FieldLenField

None

nscount

FieldLenField

None

arcount

FieldLenField

None

qd

_DNSPacketListField

[<DNSQR  |>]

an

_DNSPacketListField

[]

ns

_DNSPacketListField

[]

ar

_DNSPacketListField

[]

get_full()[source]
mysummary()[source]
post_build(pkt, pay)[source]
pre_dissect(s)[source]

Check that a valid DNS over TCP message can be decoded

class scapy.layers.dns.DNSCompressedPacket(_pkt, /)[source]

Bases: Packet

Class to mark that a packet contains DNSStrField and supports compression

aliastypes
abstract get_full()[source]
class scapy.layers.dns.DNSQR(_pkt, /, *, qname=b'www.example.com.', qtype=1, unicastresponse=0, qclass=1)[source]

Bases: Packet

aliastypes
default_payload_class(payload)[source]
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             QNAME             |             QTYPE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|U|            QCLASS           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                            Fig. DNSQR                            
DNSQR fields

qname

DNSStrField

b'www.example.com.'

qtype

ShortEnumField

1

unicastresponse

BitField (1 bit)

0

qclass

BitEnumField

1

show_indent = 0
class scapy.layers.dns.DNSRR(_pkt, /, *, rrname=b'.', type=1, cacheflush=0, rclass=1, ttl=0, rdlen=None, rdata=None)[source]

Bases: Packet

aliastypes
default_payload_class(payload)[source]
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RRNAME            |              TYPE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C|            RCLASS           |              TTL              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |             RDLEN             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RDATA             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                            Fig. DNSRR                            
DNSRR fields

rrname

DNSStrField

b'.'

type

ShortEnumField

1

cacheflush

BitField (1 bit)

0

rclass

BitEnumField

1

ttl

IntField

0

rdlen

FieldLenField

None

rdata

MultipleTypeField (IPField, IP6Field, DNSStrField, DNSTextField, StrLenField)

b''

show_indent = 0
class scapy.layers.dns.DNSRRDLV(_pkt, /, *, rrname=b'.', type=43, cacheflush=0, rclass=1, ttl=0, rdlen=None, keytag=0, algorithm=5, digesttype=5, digest=b'')[source]

Bases: DNSRRDS

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RRNAME            |              TYPE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C|            RCLASS           |              TTL              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |             RDLEN             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             KEYTAG            |   ALGORITHM   |   DIGESTTYPE  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             DIGEST            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Fig. DNSRRDLV                           
DNSRRDLV fields

rrname

DNSStrField

b'.'

type

ShortEnumField

43

cacheflush

BitField (1 bit)

0

rclass

BitEnumField

1

ttl

IntField

0

rdlen

ShortField

None

keytag

ShortField

0

algorithm

ByteEnumField

5

digesttype

ByteEnumField

5

digest

StrField

b''

class scapy.layers.dns.DNSRRDNSKEY(_pkt, /, *, rrname=b'.', type=48, cacheflush=0, rclass=1, ttl=0, rdlen=None, flags=<Flag 256 (Z)>, protocol=3, algorithm=5, publickey=b'')[source]

Bases: _DNSRRdummy

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RRNAME            |              TYPE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C|            RCLASS           |              TTL              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |             RDLEN             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             FLAGS             |    PROTOCOL   |   ALGORITHM   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           PUBLICKEY           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                         Fig. DNSRRDNSKEY                         
DNSRRDNSKEY fields

rrname

DNSStrField

b'.'

type

ShortEnumField

48

cacheflush

BitField (1 bit)

0

rclass

BitEnumField

1

ttl

IntField

0

rdlen

ShortField

None

flags

FlagsField

<Flag 256 (Z)>

protocol

ByteField

3

algorithm

ByteEnumField

5

publickey

StrField

b''

class scapy.layers.dns.DNSRRDS(_pkt, /, *, rrname=b'.', type=43, cacheflush=0, rclass=1, ttl=0, rdlen=None, keytag=0, algorithm=5, digesttype=5, digest=b'')[source]

Bases: _DNSRRdummy

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RRNAME            |              TYPE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C|            RCLASS           |              TTL              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |             RDLEN             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             KEYTAG            |   ALGORITHM   |   DIGESTTYPE  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             DIGEST            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                           Fig. DNSRRDS                           
DNSRRDS fields

rrname

DNSStrField

b'.'

type

ShortEnumField

43

cacheflush

BitField (1 bit)

0

rclass

BitEnumField

1

ttl

IntField

0

rdlen

ShortField

None

keytag

ShortField

0

algorithm

ByteEnumField

5

digesttype

ByteEnumField

5

digest

StrField

b''

class scapy.layers.dns.DNSRRHINFO(_pkt, /, *, rrname=b'.', type=13, cacheflush=0, rclass=1, ttl=0, rdlen=None, cpulen=None, cpu=b'', oslen=None, os=b'')[source]

Bases: _DNSRRdummy

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RRNAME            |              TYPE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C|            RCLASS           |              TTL              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |             RDLEN             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     CPULEN    |              CPU              |     OSLEN     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               OS              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                         Fig. DNSRRHINFO                          
DNSRRHINFO fields

rrname

DNSStrField

b'.'

type

ShortEnumField

13

cacheflush

BitField (1 bit)

0

rclass

BitEnumField

1

ttl

IntField

0

rdlen

ShortField

None

cpulen

FieldLenField

None

cpu

StrLenField

b''

oslen

FieldLenField

None

os

StrLenField

b''

class scapy.layers.dns.DNSRRHTTPS(_pkt, /, *, rrname=b'.', type=65, cacheflush=0, rclass=1, ttl=0, rdlen=None, svc_priority=0, target_name=b'.', svc_params=[])[source]

Bases: _DNSRRdummy

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RRNAME            |              TYPE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C|            RCLASS           |              TTL              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |             RDLEN             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          SVC PRIORITY         |          TARGET NAME          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           SVC PARAMS          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                         Fig. DNSRRHTTPS                          
DNSRRHTTPS fields

rrname

DNSStrField

b'.'

type

ShortEnumField

65

cacheflush

BitField (1 bit)

0

rclass

BitEnumField

1

ttl

IntField

0

rdlen

ShortField

None

svc_priority

ShortField

0

target_name

DNSStrField

b'.'

svc_params

PacketListField

[]

class scapy.layers.dns.DNSRRMX(_pkt, /, *, rrname=b'.', type=15, cacheflush=0, rclass=1, ttl=0, rdlen=None, preference=0, exchange=b'.')[source]

Bases: _DNSRRdummy

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RRNAME            |              TYPE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C|            RCLASS           |              TTL              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |             RDLEN             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           PREFERENCE          |            EXCHANGE           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                           Fig. DNSRRMX                           
DNSRRMX fields

rrname

DNSStrField

b'.'

type

ShortEnumField

15

cacheflush

BitField (1 bit)

0

rclass

BitEnumField

1

ttl

IntField

0

rdlen

ShortField

None

preference

ShortField

0

exchange

DNSStrField

b'.'

class scapy.layers.dns.DNSRRNAPTR(_pkt, /, *, rrname=b'.', type=35, cacheflush=0, rclass=1, ttl=0, rdlen=None, order=0, preference=0, flags_len=None, flags=b'', services_len=None, services=b'', regexp_len=None, regexp=b'', replacement=b'.')[source]

Bases: _DNSRRdummy

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RRNAME            |              TYPE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C|            RCLASS           |              TTL              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |             RDLEN             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             ORDER             |           PREFERENCE          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   FLAGS LEN   |             FLAGS             |  SERVICES LEN |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            SERVICES           |   REGEXP LEN  |     REGEXP    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |          REPLACEMENT          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                         Fig. DNSRRNAPTR                          
DNSRRNAPTR fields

rrname

DNSStrField

b'.'

type

ShortEnumField

35

cacheflush

BitField (1 bit)

0

rclass

BitEnumField

1

ttl

IntField

0

rdlen

ShortField

None

order

ShortField

0

preference

ShortField

0

flags_len

FieldLenField

None

flags

StrLenField

b''

services_len

FieldLenField

None

services

StrLenField

b''

regexp_len

FieldLenField

None

regexp

StrLenField

b''

replacement

DNSStrField

b'.'

class scapy.layers.dns.DNSRRNSEC(_pkt, /, *, rrname=b'.', type=47, cacheflush=0, rclass=1, ttl=0, rdlen=None, nextname=b'.', typebitmaps=[])[source]

Bases: _DNSRRdummy

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RRNAME            |              TYPE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C|            RCLASS           |              TTL              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |             RDLEN             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            NEXTNAME           |          TYPEBITMAPS          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Fig. DNSRRNSEC                          
DNSRRNSEC fields

rrname

DNSStrField

b'.'

type

ShortEnumField

47

cacheflush

BitField (1 bit)

0

rclass

BitEnumField

1

ttl

IntField

0

rdlen

ShortField

None

nextname

DNSStrField

b'.'

typebitmaps

RRlistField

[]

class scapy.layers.dns.DNSRRNSEC3(_pkt, /, *, rrname=b'.', type=50, cacheflush=0, rclass=1, ttl=0, rdlen=None, hashalg=0, flags=0, iterations=0, saltlength=0, salt=b'', hashlength=0, nexthashedownername=b'', typebitmaps=[])[source]

Bases: _DNSRRdummy

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RRNAME            |              TYPE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C|            RCLASS           |              TTL              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |             RDLEN             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    HASHALG    |     FLAGS     |           ITERATIONS          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   SALTLENGTH  |              SALT             |   HASHLENGTH  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      NEXTHASHEDOWNERNAME      |          TYPEBITMAPS          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                         Fig. DNSRRNSEC3                          
DNSRRNSEC3 fields

rrname

DNSStrField

b'.'

type

ShortEnumField

50

cacheflush

BitField (1 bit)

0

rclass

BitEnumField

1

ttl

IntField

0

rdlen

ShortField

None

hashalg

ByteField

0

flags

BitEnumField

0

iterations

ShortField

0

saltlength

FieldLenField

0

salt

StrLenField

b''

hashlength

FieldLenField

0

nexthashedownername

StrLenField

b''

typebitmaps

RRlistField

[]

class scapy.layers.dns.DNSRRNSEC3PARAM(_pkt, /, *, rrname=b'.', type=51, cacheflush=0, rclass=1, ttl=0, rdlen=None, hashalg=0, flags=0, iterations=0, saltlength=0, salt=b'')[source]

Bases: _DNSRRdummy

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RRNAME            |              TYPE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C|            RCLASS           |              TTL              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |             RDLEN             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    HASHALG    |     FLAGS     |           ITERATIONS          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   SALTLENGTH  |              SALT             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                       Fig. DNSRRNSEC3PARAM                       
DNSRRNSEC3PARAM fields

rrname

DNSStrField

b'.'

type

ShortEnumField

51

cacheflush

BitField (1 bit)

0

rclass

BitEnumField

1

ttl

IntField

0

rdlen

ShortField

None

hashalg

ByteField

0

flags

ByteField

0

iterations

ShortField

0

saltlength

FieldLenField

0

salt

StrLenField

b''

class scapy.layers.dns.DNSRROPT(_pkt, /, *, rrname=b'.', type=41, rclass=4096, extrcode=0, version=0, z=32768, rdlen=None, rdata=[])[source]

Bases: 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RRNAME            |              TYPE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RCLASS            |    EXTRCODE   |    VERSION    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               Z               |             RDLEN             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RDATA             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Fig. DNSRROPT                           
DNSRROPT fields

rrname

DNSStrField

b'.'

type

ShortEnumField

41

rclass

ShortEnumField

4096

extrcode

ByteField

0

version

ByteField

0

z

BitEnumField

32768

rdlen

FieldLenField

None

rdata

PacketListField

[]

class scapy.layers.dns.DNSRRRSIG(_pkt, /, *, rrname=b'.', type=46, cacheflush=0, rclass=1, ttl=0, rdlen=None, typecovered=1, algorithm=5, labels=0, originalttl=0, expiration=0, inception=0, keytag=0, signersname=b'.', signature=b'')[source]

Bases: _DNSRRdummy

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RRNAME            |              TYPE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C|            RCLASS           |              TTL              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |             RDLEN             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          TYPECOVERED          |   ALGORITHM   |     LABELS    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          ORIGINALTTL                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           EXPIRATION                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           INCEPTION                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             KEYTAG            |          SIGNERSNAME          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           SIGNATURE           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Fig. DNSRRRSIG                          
DNSRRRSIG fields

rrname

DNSStrField

b'.'

type

ShortEnumField

46

cacheflush

BitField (1 bit)

0

rclass

BitEnumField

1

ttl

IntField

0

rdlen

ShortField

None

typecovered

ShortEnumField

1

algorithm

ByteEnumField

5

labels

ByteField

0

originalttl

IntField

0

expiration

UTCTimeField

0

inception

UTCTimeField

0

keytag

ShortField

0

signersname

DNSStrField

b'.'

signature

StrField

b''

class scapy.layers.dns.DNSRRSOA(_pkt, /, *, rrname=b'.', type=6, rclass=1, ttl=0, rdlen=None, mname=b'.', rname=b'.', serial=0, refresh=0, retry=0, expire=0, minimum=0)[source]

Bases: _DNSRRdummy

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RRNAME            |              TYPE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RCLASS            |              TTL              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |             RDLEN             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             MNAME             |             RNAME             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             SERIAL                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            REFRESH                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             RETRY                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             EXPIRE                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            MINIMUM                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Fig. DNSRRSOA                           
DNSRRSOA fields

rrname

DNSStrField

b'.'

type

ShortEnumField

6

rclass

ShortEnumField

1

ttl

IntField

0

rdlen

ShortField

None

mname

DNSStrField

b'.'

rname

DNSStrField

b'.'

serial

IntField

0

refresh

IntField

0

retry

IntField

0

expire

IntField

0

minimum

IntField

0

class scapy.layers.dns.DNSRRSRV(_pkt, /, *, rrname=b'.', type=33, cacheflush=0, rclass=1, ttl=0, rdlen=None, priority=0, weight=0, port=0, target=b'.')[source]

Bases: _DNSRRdummy

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RRNAME            |              TYPE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C|            RCLASS           |              TTL              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |             RDLEN             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            PRIORITY           |             WEIGHT            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              PORT             |             TARGET            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Fig. DNSRRSRV                           
DNSRRSRV fields

rrname

DNSStrField

b'.'

type

ShortEnumField

33

cacheflush

BitField (1 bit)

0

rclass

BitEnumField

1

ttl

IntField

0

rdlen

ShortField

None

priority

ShortField

0

weight

ShortField

0

port

ShortField

0

target

DNSStrField

b'.'

class scapy.layers.dns.DNSRRSVCB(_pkt, /, *, rrname=b'.', type=64, cacheflush=0, rclass=1, ttl=0, rdlen=None, svc_priority=0, target_name=b'.', svc_params=[])[source]

Bases: _DNSRRdummy

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RRNAME            |              TYPE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|C|            RCLASS           |              TTL              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |             RDLEN             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          SVC PRIORITY         |          TARGET NAME          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           SVC PARAMS          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Fig. DNSRRSVCB                          
DNSRRSVCB fields

rrname

DNSStrField

b'.'

type

ShortEnumField

64

cacheflush

BitField (1 bit)

0

rclass

BitEnumField

1

ttl

IntField

0

rdlen

ShortField

None

svc_priority

ShortField

0

target_name

DNSStrField

b'.'

svc_params

PacketListField

[]

class scapy.layers.dns.DNSRRTSIG(_pkt, /, *, rrname=b'.', type=250, rclass=1, ttl=0, rdlen=None, algo_name=b'hmac-sha1.', time_signed=0, fudge=0, mac_len=20, mac_data=b'', original_id=0, error=0, other_len=0, other_data=b'')[source]

Bases: _DNSRRdummy

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RRNAME            |              TYPE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             RCLASS            |              TTL              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |             RDLEN             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           ALGO NAME           |          TIME SIGNED          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             FUDGE             |            MAC LEN            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            MAC DATA           |          ORIGINAL ID          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             ERROR             |           OTHER LEN           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           OTHER DATA          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Fig. DNSRRTSIG                          
DNSRRTSIG fields

rrname

DNSStrField

b'.'

type

ShortEnumField

250

rclass

ShortEnumField

1

ttl

IntField

0

rdlen

ShortField

None

algo_name

DNSStrField

b'hmac-sha1.'

time_signed

TimeSignedField

0

fudge

ShortField

0

mac_len

FieldLenField

20

mac_data

StrLenField

b''

original_id

ShortField

0

error

ShortField

0

other_len

FieldLenField

0

other_data

StrLenField

b''

class scapy.layers.dns.DNSSDResult(res=None, name='DNS-SD', stats=None)[source]

Bases: SndRcvList

show(types: List[str] = ['PTR', 'SRV'], alltypes: bool = False) None[source]

Print the list of discovered services.

Parameters:
  • types – types to show. Default [‘PTR’, ‘SRV’]

  • alltypes – show all types. Default False

class scapy.layers.dns.DNSStrField(name: str, default: bytes, length_from: Callable[[Packet], int] | None = None, max_length: Any | None = None)[source]

Bases: StrLenField

Special StrField that handles DNS encoding/decoding. It will also handle DNS decompression. (may be StrLenField if a length_from is passed),

any2i(pkt, x)[source]
get_full(pkt)[source]
getfield(pkt, s)[source]
h2i(pkt, x)[source]
i2len(pkt, x)[source]
i2m(pkt, x)[source]
class scapy.layers.dns.DNSTextField(name: str, default: bytes, length_from: Callable[[Packet], int] | None = None, max_length: Any | None = None)[source]

Bases: StrLenField

Special StrLenField that handles DNS TEXT data (16)

any2i(pkt, x)[source]
i2h(pkt, x)[source]
i2len(pkt, x)[source]
i2m(pkt, s)[source]
islist = 1
m2i(pkt, s)[source]
class scapy.layers.dns.DNS_am(self, joker=None, match=None, srvmatch=None, joker6=False, send_error=False, relay=False, from_ip=True, from_ip6=False, src_ip=None, src_ip6=None, ttl=10, jokerarpa=False)[source]

Bases: AnsweringMachine

cls[source]

alias of DNS

filter: str | None = 'udp port 53'
function_name = 'dnsd'
is_request(req)[source]
make_reply(req)[source]
optam0: Dict[str, Any]
optam1: Dict[str, Any]
optam2: Dict[str, Any]
optsend: Dict[str, Any]
optsniff: Dict[str, Any]
parse_options(joker=None, match=None, srvmatch=None, joker6=False, send_error=False, relay=False, from_ip=True, from_ip6=False, src_ip=None, src_ip6=None, ttl=10, jokerarpa=False)[source]

Simple DNS answering machine.

Parameters:
  • joker – default IPv4 for unresolved domains. Set to False to disable, None to mirror the interface’s IP. Defaults to None, unless ‘match’ is used, then it defaults to False.

  • joker6 – default IPv6 for unresolved domains. Set to False to disable, None to mirror the interface’s IPv6. Defaults to False.

  • match – queries to match. This can be a dictionary of {name: val} where name is a string representing a domain name (A, AAAA) and val is a tuple of 2 elements, each representing an IP or a list of IPs. If val is a single element, (A, None) is assumed. This can also be a list or names, in which case joker(6) are used as a response.

  • jokerarpa – answer for .in-addr.arpa PTR requests. (Default: False)

  • relay – relay unresolved domains to conf.nameservers (Default: False).

  • send_error – send an error message when this server can’t answer (Default: False)

  • srvmatch – a dictionary of {name: (port, target)} used for SRV

  • from_ip – an source IP to filter. Can contain a netmask. True for all, False for none. Default True

  • from_ip6 – an source IPv6 to filter. Can contain a netmask. True for all, False for none. Default False

  • ttl – the DNS time to live (in seconds)

  • src_ip – override the source IP

  • src_ip6

Examples:

  • Answer all ‘A’ and ‘AAAA’ requests:

    $ sudo iptables -I OUTPUT -p icmp --icmp-type 3/3 -j DROP
    >>> dnsd(joker="192.168.0.2", joker6="fe80::260:8ff:fe52:f9d8",
    ...      iface="eth0")
    
  • Answer only ‘A’ query for google.com with 192.168.0.2:

    >>> dnsd(match={"google.com": "192.168.0.2"}, iface="eth0")
    
  • Answer DNS for a Windows domain controller (‘SRV’, ‘A’ and ‘AAAA’):

    >>> dnsd(
    ...     srvmatch={
    ...         "_ldap._tcp.dc._msdcs.DOMAIN.LOCAL.": (389,
    ...                                                "srv1.domain.local"),
    ...     },
    ...     match={"src1.domain.local": ("192.168.0.102",
    ...                                  "fe80::260:8ff:fe52:f9d8")},
    ... )
    
  • Relay all queries to another DNS server, except some:

    >>> conf.nameservers = ["1.1.1.1"]  # server to relay to
    >>> dnsd(
    ...     match={"test.com": "1.1.1.1"},
    ...     relay=True,
    ... )
    
scapy.layers.dns.DNSgetstr(*args, **kwargs)[source]

Legacy function. Deprecated

class scapy.layers.dns.EDNS0COOKIE(_pkt, /, *, optcode=10, optlen=None, client_cookie=b'\x00\x00\x00\x00\x00\x00\x00\x00', server_cookie=b'')[source]

Bases: _EDNS0Dummy

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            OPTCODE            |             OPTLEN            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         CLIENT COOKIE                         |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         SERVER COOKIE         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                         Fig. EDNS0COOKIE                         
EDNS0COOKIE fields

optcode

ShortEnumField

10

optlen

FieldLenField

None

client_cookie

XStrFixedLenField

b'\x00\x00\x00\x00\x00\x00\x00\x00'

server_cookie

XStrLenField

b''

class scapy.layers.dns.EDNS0ClientSubnet(_pkt, /, *, optcode=8, optlen=None, family=1, source_plen=None, scope_plen=0, address=None)[source]

Bases: _EDNS0Dummy

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            OPTCODE            |             OPTLEN            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             FAMILY            |  SOURCE PLEN  |   SCOPE PLEN  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            ADDRESS            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Fig. EDNS0ClientSubnet                      
EDNS0ClientSubnet fields

optcode

ShortEnumField

8

optlen

FieldLenField

None

family

ShortField

1

source_plen

FieldLenField

None

scope_plen

ByteField

0

address

MultipleTypeField (ClientSubnetv4, ClientSubnetv6, ClientSubnetv4)

b'192.168.0.0'

class scapy.layers.dns.EDNS0DAU(_pkt, /, *, optcode=5, optlen=None, alg_code=[])[source]

Bases: _EDNS0Dummy

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            OPTCODE            |             OPTLEN            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            ALG CODE           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Fig. EDNS0DAU                           
EDNS0DAU fields

optcode

ShortEnumField

5

optlen

FieldLenField

None

alg_code

FieldListField

[]

class scapy.layers.dns.EDNS0DHU(_pkt, /, *, optcode=6, optlen=None, alg_code=[])[source]

Bases: _EDNS0Dummy

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            OPTCODE            |             OPTLEN            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            ALG CODE           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Fig. EDNS0DHU                           
EDNS0DHU fields

optcode

ShortEnumField

6

optlen

FieldLenField

None

alg_code

FieldListField

[]

class scapy.layers.dns.EDNS0ExtendedDNSError(_pkt, /, *, optcode=15, optlen=None, info_code=0, extra_text=b'')[source]

Bases: _EDNS0Dummy

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            OPTCODE            |             OPTLEN            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           INFO CODE           |           EXTRA TEXT          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                    Fig. EDNS0ExtendedDNSError                    
EDNS0ExtendedDNSError fields

optcode

ShortEnumField

15

optlen

FieldLenField

None

info_code

ShortEnumField

0

extra_text

StrLenField

b''

class scapy.layers.dns.EDNS0N3U(_pkt, /, *, optcode=7, optlen=None, alg_code=[])[source]

Bases: _EDNS0Dummy

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            OPTCODE            |             OPTLEN            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            ALG CODE           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Fig. EDNS0N3U                           
EDNS0N3U fields

optcode

ShortEnumField

7

optlen

FieldLenField

None

alg_code

FieldListField

[]

class scapy.layers.dns.EDNS0OWN(_pkt, /, *, optcode=4, optlen=None, v=0, s=0, primary_mac='00:00:00:00:00:00', wakeup_mac='00:00:00:00:00:00', password=b'')[source]

Bases: _EDNS0Dummy

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            OPTCODE            |             OPTLEN            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       V       |       S       |          PRIMARY MAC          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           WAKEUP MAC                          |
+                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |            PASSWORD           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Fig. EDNS0OWN                           
EDNS0OWN fields

optcode

ShortEnumField

4

optlen

FieldLenField

None

v

ByteField

0

s

ByteField

0

primary_mac

MACField

'00:00:00:00:00:00'

wakeup_mac

MACField (Cond)

'00:00:00:00:00:00'

password

StrLenField (Cond)

b''

post_build(pkt, pay)[source]
class scapy.layers.dns.EDNS0TLV(_pkt, /, *, optcode=0, optlen=None, optdata=b'')[source]

Bases: _EDNS0Dummy

aliastypes
classmethod dispatch_hook(_pkt: bytes | None = None, *args: Any, **kargs: Any) Type[Packet][source]
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            OPTCODE            |             OPTLEN            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            OPTDATA            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Fig. EDNS0TLV                           
EDNS0TLV fields

optcode

ShortEnumField

0

optlen

FieldLenField

None

optdata

StrLenField

b''

scapy.layers.dns.RRlist2bitmap(lst)[source]

Encode a list of integers representing Resource Records to a bitmap field used in the NSEC Resource Record.

class scapy.layers.dns.RRlistField(name: str, default: I | None, fmt: str = 'H', remain: int = 0)[source]

Bases: StrField

h2i(pkt, x)[source]
i2repr(pkt, x)[source]
islist = 1
class scapy.layers.dns.SvcParam(_pkt, /, *, key=0, len=None, value=None)[source]

Bases: Packet

aliastypes
extract_padding(p)[source]
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              KEY              |              LEN              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             VALUE             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Fig. SvcParam                           
SvcParam fields

key

ShortEnumField

0

len

FieldLenField

None

value

MultipleTypeField (FieldListField, DNSTextField, ShortField, FieldListField, FieldListField, StrLenField)

b''

class scapy.layers.dns.TimeSignedField(name, default)[source]

Bases: Field[int, bytes]

i2m(pkt, seconds)[source]

Convert the number of seconds since 1-Jan-70 UTC to the packed representation.

i2repr(pkt, packed_seconds)[source]

Convert the internal representation to a nice one using the RFC format.

m2i(pkt, packed_seconds)[source]

Convert the internal representation to the number of seconds since 1-Jan-70 UTC.

scapy.layers.dns.bitmap2RRlist(bitmap)[source]

Decode the ‘Type Bit Maps’ field of the NSEC Resource Record into an integer list.

scapy.layers.dns.dns_compress(pkt)[source]

This function compresses a DNS packet according to compression rules.

scapy.layers.dns.dns_encode(x, check_built=False)[source]

Encodes a bytes string into the DNS format

Parameters:
  • x – the string

  • check_built – detect already-built strings and ignore them

Returns:

the encoded bytes string

scapy.layers.dns.dns_get_str(s, full=None, _ignore_compression=False)[source]

This function decompresses a string s, starting from the given pointer.

Parameters:
  • s – the string to decompress

  • full – (optional) the full packet (used for decompression)

Returns:

(decoded_string, end_index, left_string)

scapy.layers.dns.dns_resolve(qname, qtype='A', raw=False, verbose=1, timeout=3, **kwargs)[source]

Perform a simple DNS resolution using conf.nameservers with caching

Parameters:
  • qname – the name to query

  • qtype – the type to query (default A)

  • raw – return the whole DNS packet (default False)

  • verbose – show verbose errors

  • timeout – seconds until timeout (per server)

Raises:

TimeoutError – if no DNS servers were reached in time.

scapy.layers.dns.dnssd(service='_services._dns-sd._udp.local', af=AddressFamily.AF_INET, qtype='PTR', iface=None, verbose=2, timeout=3)[source]

Performs a DNS-SD (RFC6763) request

Parameters:
  • service – the service name to query (e.g. _spotify-connect._tcp.local)

  • af – the transport to use. socket.AF_INET or socket.AF_INET6

  • qtype – the type to use in the mDNS. Either TXT, PTR or SRV.

  • iface – the interface to do this discovery on.

scapy.layers.dns.dyndns_add(nameserver, name, rdata, type='A', ttl=10)[source]

Send a DNS add message to a nameserver for “name” to have a new “rdata” dyndns_add(nameserver, name, rdata, type=”A”, ttl=10) -> result code (0=ok)

example: dyndns_add(“ns1.toto.com”, “dyn.toto.com”, “127.0.0.1”) RFC2136

scapy.layers.dns.dyndns_del(nameserver, name, type='ALL', ttl=10)[source]

Send a DNS delete message to a nameserver for “name” dyndns_del(nameserver, name, type=”ANY”, ttl=10) -> result code (0=ok)

example: dyndns_del(“ns1.toto.com”, “dyn.toto.com”) RFC2136

class scapy.layers.dns.mDNS_am(self, joker=None, match=None, srvmatch=None, joker6=False, send_error=False, relay=False, from_ip=True, from_ip6=False, src_ip=None, src_ip6=None, ttl=10, jokerarpa=False)[source]

Bases: DNS_am

mDNS answering machine.

This has the same arguments as DNS_am. See help(DNS_am)

Example:

- Answer for 'TEST.local' with local IPv4::

    >>> mdnsd(match=["TEST.local"])

- Answer all requests with other IP::

    >>> mdnsd(joker="192.168.0.2", joker6="fe80::260:8ff:fe52:f9d8",
    ...       iface="eth0")

- Answer for multiple different mDNS names::

    >>> mdnsd(match={"TEST.local": "192.168.0.100",
    ...              "BOB.local": "192.168.0.101"})

- Answer with both A and AAAA records::

    >>> mdnsd(match={"TEST.local": ("192.168.0.100",
    ...                             "fe80::260:8ff:fe52:f9d8")})
filter: str | None = 'udp port 5353'
function_name = 'mdnsd'
optam0: Dict[str, Any]
optam1: Dict[str, Any]
optam2: Dict[str, Any]
optsend: Dict[str, Any]
optsniff: Dict[str, Any]