diff --git a/scapy/layers/llmnr.py b/scapy/layers/llmnr.py index 01e211939ca..9cce97cd8c0 100644 --- a/scapy/layers/llmnr.py +++ b/scapy/layers/llmnr.py @@ -55,12 +55,12 @@ def hashret(self): def mysummary(self): if self.an: return "LLMNRResponse '%s' is at '%s'" % ( - self.an.rrname.decode(), + self.an.rrname.decode(errors="backslashreplace"), self.an.rdata, ), [UDP] if self.qd: return "LLMNRQuery who has '%s'" % ( - self.qd.qname.decode(), + self.qd.qname.decode(errors="backslashreplace"), ), [UDP] diff --git a/test/scapy/layers/llmnr.uts b/test/scapy/layers/llmnr.uts index fe95e259b8f..2da7a907859 100644 --- a/test/scapy/layers/llmnr.uts +++ b/test/scapy/layers/llmnr.uts @@ -36,3 +36,9 @@ b = Ether(b'\x14\x0cv\x8f\xfe(\xd0P\x99V\xdd\xf9\x08\x00E\x00\x00(\x00\x01\x00\x assert b.answers(a) assert not a.answers(b) += Summary +q = LLMNRQuery(b'Yy\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x01\xff\x00\x00\x01\x00\x01') +assert q.mysummary()[0] == r"LLMNRQuery who has '\xff.'" + +r = LLMNRResponse(b'\n\xe6\x80\x00\x00\x01\x00\x01\x00\x00\x00\x00\x01\xff\x00\x00\x1c\x00\x01\xc0\x0c\x00\x1c\x00\x01\x00\x00\x00\x1e\x00\x10\xfe\x80\x00\x00\x00\x00\x00\x00xu\x17\xff\xfe\xbc\xac\xcb') +assert r.mysummary()[0] == r"LLMNRResponse '\xff.' is at 'fe80::7875:17ff:febc:accb'"