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 = [<class 'scapy.layers.llmnr.LLMNRQuery'>, <class 'scapy.layers.dns.DNSCompressedPacket'>, <class 'scapy.packet.Packet'>]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ShortField (LLMNRQuery,LLMNRResponse).id>, <BitField (LLMNRQuery,LLMNRResponse).qr>, <BitEnumField (LLMNRQuery,LLMNRResponse).opcode>, <BitField (LLMNRQuery,LLMNRResponse).c>, <BitField (LLMNRQuery,LLMNRResponse).tc>, <BitField (LLMNRQuery,LLMNRResponse).t>, <BitField (LLMNRQuery,LLMNRResponse).z>, <BitEnumField (DNS,DNSTCP,LLMNRQuery,LLMNRResponse).rcode>, <FieldLenField (DNS,DNSTCP,LLMNRQuery,LLMNRResponse).qdcount>, <FieldLenField (DNS,DNSTCP,LLMNRQuery,LLMNRResponse).ancount>, <FieldLenField (DNS,DNSTCP,LLMNRQuery,LLMNRResponse).nscount>, <FieldLenField (DNS,DNSTCP,LLMNRQuery,LLMNRResponse).arcount>, <_DNSPacketListField (DNS,DNSTCP,LLMNRQuery,LLMNRResponse).qd>, <_DNSPacketListField (DNS,DNSTCP,LLMNRQuery,LLMNRResponse).an>, <_DNSPacketListField (DNS,DNSTCP,LLMNRQuery,LLMNRResponse).ns>, <_DNSPacketListField (DNS,DNSTCP,LLMNRQuery,LLMNRResponse).ar>]
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 = [<class 'scapy.layers.llmnr.LLMNRResponse'>, <class 'scapy.layers.llmnr.LLMNRQuery'>, <class 'scapy.layers.dns.DNSCompressedPacket'>, <class 'scapy.packet.Packet'>]
answers(other)[source]
fields_desc: ClassVar[List[Field[Any, Any] | _FieldContainer]] = [<ShortField (LLMNRQuery,LLMNRResponse).id>, <BitField (LLMNRQuery,LLMNRResponse).qr>, <BitEnumField (LLMNRQuery,LLMNRResponse).opcode>, <BitField (LLMNRQuery,LLMNRResponse).c>, <BitField (LLMNRQuery,LLMNRResponse).tc>, <BitField (LLMNRQuery,LLMNRResponse).t>, <BitField (LLMNRQuery,LLMNRResponse).z>, <BitEnumField (DNS,DNSTCP,LLMNRQuery,LLMNRResponse).rcode>, <FieldLenField (DNS,DNSTCP,LLMNRQuery,LLMNRResponse).qdcount>, <FieldLenField (DNS,DNSTCP,LLMNRQuery,LLMNRResponse).ancount>, <FieldLenField (DNS,DNSTCP,LLMNRQuery,LLMNRResponse).nscount>, <FieldLenField (DNS,DNSTCP,LLMNRQuery,LLMNRResponse).arcount>, <_DNSPacketListField (DNS,DNSTCP,LLMNRQuery,LLMNRResponse).qd>, <_DNSPacketListField (DNS,DNSTCP,LLMNRQuery,LLMNRResponse).an>, <_DNSPacketListField (DNS,DNSTCP,LLMNRQuery,LLMNRResponse).ns>, <_DNSPacketListField (DNS,DNSTCP,LLMNRQuery,LLMNRResponse).ar>]
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'