scapy.layers.llmnr

LLMNR (Link Local Multicast Node Resolution).

[RFC 4795]

LLMNR is based on the DNS packet format (RFC1035 Section 4) RFC also envisions LLMNR over TCP. Like vista, we don’t support it – arno

class scapy.layers.llmnr.LLMNRQuery(_pkt, /, *, id=0, qr=0, opcode=0, c=0, tc=0, t=0, z=0, rcode=0, qdcount=None, ancount=None, nscount=None, arcount=None, qd=[], an=[], ns=[], ar=[])[source]

Bases: DNSCompressedPacket

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

                         Fig. LLMNRQuery                          
LLMNRQuery fields

id

ShortField

0

qr

BitField (1 bit)

0

opcode

BitEnumField

0

c

BitField (1 bit)

0

tc

BitField (1 bit)

0

t

BitField (1 bit)

0

z

BitField (4 bits)

0

rcode

BitEnumField

0

qdcount

FieldLenField

None

ancount

FieldLenField

None

nscount

FieldLenField

None

arcount

FieldLenField

None

qd

_DNSPacketListField

[]

an

_DNSPacketListField

[]

ns

_DNSPacketListField

[]

ar

_DNSPacketListField

[]

get_full()[source]
hashret()[source]
mysummary()[source]
class scapy.layers.llmnr.LLMNRResponse(_pkt, /, *, id=0, qr=1, opcode=0, c=0, tc=0, t=0, z=0, rcode=0, qdcount=None, ancount=None, nscount=None, arcount=None, qd=[], an=[], ns=[], ar=[])[source]

Bases: LLMNRQuery

aliastypes
answers(other)[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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               ID              |Q| OPCODE|C|T|T|   Z   | RCODE |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            QDCOUNT            |            ANCOUNT            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            NSCOUNT            |            ARCOUNT            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               QD              |               AN              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               NS              |               AR              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                        Fig. LLMNRResponse                        
LLMNRResponse fields

id

ShortField

0

qr

BitField (1 bit)

1

opcode

BitEnumField

0

c

BitField (1 bit)

0

tc

BitField (1 bit)

0

t

BitField (1 bit)

0

z

BitField (4 bits)

0

rcode

BitEnumField

0

qdcount

FieldLenField

None

ancount

FieldLenField

None

nscount

FieldLenField

None

arcount

FieldLenField

None

qd

_DNSPacketListField

[]

an

_DNSPacketListField

[]

ns

_DNSPacketListField

[]

ar

_DNSPacketListField

[]

class scapy.layers.llmnr.LLMNR_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

LLMNR answering machine.

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

Example:

>>> llmnrd(joker="192.168.0.2", iface="eth0")
>>> llmnrd(match={"TEST": "192.168.0.2"})
cls[source]

alias of LLMNRQuery

filter: str | None = 'udp port 5355'
function_name = 'llmnrd'
optam0: Dict[str, Any]
optam1: Dict[str, Any]
optam2: Dict[str, Any]
optsend: Dict[str, Any]
optsniff: Dict[str, Any]