mirror of https://github.com/secdev/scapy.git
commit
8dbc7796b5
|
@ -2222,7 +2222,7 @@ icmp6_niqtypes = { 0: "NOOP",
|
||||||
|
|
||||||
class _ICMPv6NIHashret:
|
class _ICMPv6NIHashret:
|
||||||
def hashret(self):
|
def hashret(self):
|
||||||
return self.nonce
|
return raw(self.nonce)
|
||||||
|
|
||||||
class _ICMPv6NIAnswers:
|
class _ICMPv6NIAnswers:
|
||||||
def answers(self, other):
|
def answers(self, other):
|
||||||
|
@ -2357,7 +2357,6 @@ class NIQueryDataField(StrField):
|
||||||
return (1, x)
|
return (1, x)
|
||||||
|
|
||||||
def i2repr(self, pkt, x):
|
def i2repr(self, pkt, x):
|
||||||
x = plain_str(x)
|
|
||||||
t,val = x
|
t,val = x
|
||||||
if t == 1: # DNS Name
|
if t == 1: # DNS Name
|
||||||
# we don't use dnsrepr2names() to deal with
|
# we don't use dnsrepr2names() to deal with
|
||||||
|
@ -2368,7 +2367,7 @@ class NIQueryDataField(StrField):
|
||||||
val = val[1:]
|
val = val[1:]
|
||||||
if l == 0:
|
if l == 0:
|
||||||
break
|
break
|
||||||
res.append(val[:l]+".")
|
res.append(plain_str(val[:l])+".")
|
||||||
val = val[l:]
|
val = val[l:]
|
||||||
tmp = "".join(res)
|
tmp = "".join(res)
|
||||||
if tmp and tmp[-1] == '.':
|
if tmp and tmp[-1] == '.':
|
||||||
|
@ -2590,7 +2589,8 @@ class NIReplyDataField(StrField):
|
||||||
if t == 2: # DNS names
|
if t == 2: # DNS names
|
||||||
ttl,l = val
|
ttl,l = val
|
||||||
l = dnsrepr2names(l)
|
l = dnsrepr2names(l)
|
||||||
return "ttl:%d %s" % (ttl, ", ".join(l))
|
names_list = (plain_str(name) for name in l)
|
||||||
|
return "ttl:%d %s" % (ttl, ",".join(names_list))
|
||||||
elif t == 3 or t == 4:
|
elif t == 3 or t == 4:
|
||||||
return "[ %s ]" % (", ".join(map(lambda x_y: "(%d, %s)" % (x_y[0], x_y[1]), val)))
|
return "[ %s ]" % (", ".join(map(lambda x_y: "(%d, %s)" % (x_y[0], x_y[1]), val)))
|
||||||
return repr(val)
|
return repr(val)
|
||||||
|
|
|
@ -2981,6 +2981,12 @@ s = raw(IPv6()/ICMPv6NIQueryName(data="n.d.org"))
|
||||||
p = IPv6(s)
|
p = IPv6(s)
|
||||||
ICMPv6NIQueryName in p and p[ICMPv6NIQueryName].data == b"n.d.org"
|
ICMPv6NIQueryName in p and p[ICMPv6NIQueryName].data == b"n.d.org"
|
||||||
|
|
||||||
|
= ICMPv6NIQueryName - dissection
|
||||||
|
s = b'\x8b\x00z^\x00\x02\x00\x00\x00\x03g\x90\xc7\xa3\xdd[\xff\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01'
|
||||||
|
p = ICMPv6NIQueryName(s)
|
||||||
|
p.show()
|
||||||
|
assert ICMPv6NIQueryName in p and p.data == "ff02::1"
|
||||||
|
|
||||||
|
|
||||||
############
|
############
|
||||||
############
|
############
|
||||||
|
@ -3049,6 +3055,20 @@ type(a) is tuple and len(a) == 2 and a[0] == 2 and a[1] == '169.254.253.252'
|
||||||
= ICMPv6NIQueryIPv4 - IPv4 address
|
= ICMPv6NIQueryIPv4 - IPv4 address
|
||||||
ICMPv6NIQueryIPv4(data="169.254.253.252").data == '169.254.253.252'
|
ICMPv6NIQueryIPv4(data="169.254.253.252").data == '169.254.253.252'
|
||||||
|
|
||||||
|
= ICMPv6NIQueryIPv4 - dissection
|
||||||
|
s = b'\x8b\x01\x00\x00\x00\x04\x00\x00\xc2\xb9\xc2\x96\xc3\xa1.H\x07freebsd\x00\x00'
|
||||||
|
p = ICMPv6NIQueryIPv4(s)
|
||||||
|
p.show()
|
||||||
|
assert ICMPv6NIQueryIPv4 in p and p.data == b"freebsd"
|
||||||
|
|
||||||
|
= ICMPv6NIQueryIPv4 - hashret()
|
||||||
|
~ not_pypy random_weird_py3
|
||||||
|
random.seed(0x2807)
|
||||||
|
p = IPv6()/ICMPv6NIQueryIPv4(data="freebsd")
|
||||||
|
h_py2 = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00:\xe10S7\x9d\x91\x84\xc9'
|
||||||
|
h_py3 = b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00:\xa8\x19uE\x01\xcf\xe3\x04'
|
||||||
|
assert p.hashret() in [h_py2, h_py3]
|
||||||
|
|
||||||
|
|
||||||
############
|
############
|
||||||
############
|
############
|
||||||
|
@ -3278,6 +3298,13 @@ type(a) is tuple and len(a) == 2 and a[0] == 2 and type(a[1]) is list and len(a[
|
||||||
= ICMPv6NIReplyName - [ttl, single-label, single-label, fqdn]
|
= ICMPv6NIReplyName - [ttl, single-label, single-label, fqdn]
|
||||||
ICMPv6NIReplyName(data=[42, "abricot", "poire", "n.d.tld"]).data == [42, b"abricot", b"poire", b"n.d.tld"]
|
ICMPv6NIReplyName(data=[42, "abricot", "poire", "n.d.tld"]).data == [42, b"abricot", b"poire", b"n.d.tld"]
|
||||||
|
|
||||||
|
= ICMPv6NIReplyName - dissection
|
||||||
|
|
||||||
|
s = b'\x8c\x00\xd1\x0f\x00\x02\x00\x00\x00\x00\xd9$\x94\x8d\xc6%\x00\x00\x00\x00\x07freebsd\x00\x00'
|
||||||
|
p = ICMPv6NIReplyName(s)
|
||||||
|
p.show()
|
||||||
|
assert ICMPv6NIReplyName in p and p.data == [0, b'freebsd']
|
||||||
|
|
||||||
|
|
||||||
############
|
############
|
||||||
############
|
############
|
||||||
|
|
Loading…
Reference in New Issue