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
id
0
qr
BitField
(1 bit)0
opcode
0
c
BitField
(1 bit)0
tc
BitField
(1 bit)0
t
BitField
(1 bit)0
z
BitField
(4 bits)0
rcode
0
qdcount
None
ancount
None
nscount
None
arcount
None
qd
_DNSPacketListField
[]
an
_DNSPacketListField
[]
ns
_DNSPacketListField
[]
ar
_DNSPacketListField
[]
- 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
- 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
id
0
qr
BitField
(1 bit)1
opcode
0
c
BitField
(1 bit)0
tc
BitField
(1 bit)0
t
BitField
(1 bit)0
z
BitField
(4 bits)0
rcode
0
qdcount
None
ancount
None
nscount
None
arcount
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]