Skip to content

Commit 30f63f0

Browse files
committed
SEND refactor + tests
1 parent 92b8208 commit 30f63f0

2 files changed

Lines changed: 38 additions & 3 deletions

File tree

scapy/contrib/send.uts

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,35 @@
11
+ SEND (IPv6) tests
22

3-
= Several basic SEND builds
3+
= ICMPv6NDOptRsaSig build and dissection
44

5-
pkt = Ether()/IPv6()/ICMPv6NDOptNonce()
5+
pkt = Ether()/IPv6()/ICMPv6ND_NS()/ICMPv6NDOptRsaSig(signature_pad = b"\x01" * 12)
6+
pkt = Ether(raw(pkt))
7+
8+
assert ICMPv6NDOptRsaSig in pkt
9+
assert pkt[ICMPv6NDOptRsaSig].signature_pad == b"\x01" * 12
10+
11+
= ICMPv6NDOptCGA build and dissection
12+
13+
pkt = Ether()/IPv6()/ICMPv6ND_NS()/ICMPv6NDOptCGA(CGA_PARAMS=CGA_Params())
14+
pkt = Ether(raw(pkt))
15+
16+
assert ICMPv6NDOptCGA in pkt
17+
assert isinstance(pkt[ICMPv6NDOptCGA].CGA_PARAMS.pubkey, X509_SubjectPublicKeyInfo)
18+
assert len(pkt) == 142
19+
20+
= ICMPv6NDOptTmstp build and dissection
21+
22+
pkt = Ether()/IPv6()/ICMPv6ND_NS()/ICMPv6NDOptTmstp(timestamp=int(time.mktime(time.gmtime())))
23+
pkt = Ether(raw(pkt))
24+
pkt.show()
25+
26+
assert ICMPv6NDOptTmstp in pkt
27+
assert pkt[ICMPv6NDOptTmstp].len == 2
28+
29+
= ICMPv6NDOptNonce build and dissection
30+
31+
pkt = Ether()/IPv6()/ICMPv6ND_NS()/ICMPv6NDOptNonce(nonce=b"\x31\x32\x33\x34\x35\x36")
32+
pkt = Ether(raw(pkt))
33+
34+
assert ICMPv6NDOptNonce in pkt
35+
assert raw(ICMPv6NDOptNonce(nonce=b"\x31\x32\x33\x34\x35\x36")) == b'\x0e\x01123456'

scapy/volatile.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,12 @@ def __mul__(self, n):
281281

282282
class RandBin(RandString):
283283
def __init__(self, size=None):
284-
RandString.__init__(self, size, "".join(map(chr, range(256))))
284+
RandString.__init__(self, size, b"".join(map(chb, range(256))))
285+
def _fix(self):
286+
s = b""
287+
for _ in range(self.size):
288+
s += chb(random.choice(self.chars))
289+
return s
285290

286291

287292
class RandTermString(RandString):

0 commit comments

Comments
 (0)