File: ospf.uts

package info (click to toggle)
scapy 2.6.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 13,956 kB
  • sloc: python: 163,618; sh: 90; makefile: 11
file content (82 lines) | stat: -rw-r--r-- 5,298 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# OSPF Related regression tests
#
# Type the following command to launch start the tests:
# $ test/run_tests -P "load_contrib('ospf')" -t test/contrib/ospf.uts

+ OSPF

= OSPF, basic instantiation

data = b'\x01\x00^\x00\x00\x05\x00\xe0\x18\xb1\x0c\xad\x08\x00E\xc0\x00T\x08\x19\x00\x00\x01Ye\xc2\xc0\xa8\xaa\x08\xe0\x00\x00\x05\x02\x04\x00@\xc0\xa8\xaa\x08\x00\x00\x00\x01\x96\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\xe2\x02\x01\xc0\xa8\xaa\x08\xc0\xa8\xaa\x08\x80\x00\r\xc3%\x06\x00$\x02\x00\x00\x01\xc0\xa8\xaa\x00\xff\xff\xff\x00\x03\x00\x00\n'

p = Ether(data)

assert (p[OSPF_LSUpd][OSPF_Router_LSA].age == 994)
assert (p[OSPF_LSUpd][OSPF_Router_LSA].type == 1)
assert (p[OSPF_LSUpd][OSPF_Router_LSA].id == '192.168.170.8')
assert (p[OSPF_LSUpd][OSPF_Router_LSA].adrouter == '192.168.170.8')
assert (p[OSPF_LSUpd][OSPF_Router_LSA].seq == 0x80000dc3)
assert (p[OSPF_LSUpd][OSPF_Router_LSA].chksum == 0x2506)
assert (p[OSPF_LSUpd][OSPF_Router_LSA].len == 36)
assert (p[OSPF_LSUpd][OSPF_Router_LSA].reserved == 0)
assert (p[OSPF_LSUpd][OSPF_Router_LSA].linkcount == 1)

assert (p[OSPF_LSUpd][OSPF_Router_LSA].linklist[0][OSPF_Link].id == '192.168.170.0')
assert (p[OSPF_LSUpd][OSPF_Router_LSA].linklist[0][OSPF_Link].data == '255.255.255.0')
assert (p[OSPF_LSUpd][OSPF_Router_LSA].linklist[0][OSPF_Link].type == 3)
assert (p[OSPF_LSUpd][OSPF_Router_LSA].linklist[0][OSPF_Link].toscount == 0)
assert (p[OSPF_LSUpd][OSPF_Router_LSA].linklist[0][OSPF_Link].metric == 10)

= OSPF - build

pkt = Ether(dst="01:00:5e:00:00:05", src="ca:11:09:b3:00:1c")/IP(tos=0xc0, ttl=1, ihl=5, id=36333, dst="224.0.0.5", src="10.75.0.254")/OSPF_Hdr(src="75.1.3.1")/\
      OSPF_Hello(options=0x12, router="10.75.0.254", backup="10.75.0.1", neighbors=["75.1.0.1"])/OSPF_LLS_Hdr(llstlv=[LLS_Extended_Options(options='\x00\x00\x00\x01')])
assert raw(pkt) == b'\x01\x00^\x00\x00\x05\xca\x11\t\xb3\x00\x1c\x08\x00E\xc0\x00P\x8d\xed\x00\x00\x01Y?Z\nK\x00\xfe\xe0\x00\x00\x05\x02\x01\x000K\x01\x03\x01\x00\x00\x00\x00>\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\x00\x00\n\x12\x01\x00\x00\x00(\nK\x00\xfe\nK\x00\x01K\x01\x00\x01\xff\xf6\x00\x03\x00\x01\x00\x04\x00\x00\x00\x01'

= OSPF - answers

a = OSPF_Hdr(area="1.1.1.1")/OSPF_LSAck(lsaheaders=[OSPF_LSA_Hdr(type=1, seq=0x80000003)])
b = OSPF_Hdr(area="1.1.1.1")/OSPF_LSUpd(lsalist=[OSPF_Router_LSA(type=1, seq=0x80000003)])
assert a.answers(b)
a = OSPF_Hdr(raw(a))
b = OSPF_Hdr(raw(b))
assert a.answers(b)

= OSPFv3 - build

pkt = Ether(dst="01:00:5e:00:00:05", src="ca:11:09:b3:00:1c")/IPv6(dst="::1", src="fe80::160c:12aa:fe7e:cd28")/OSPFv3_Hdr(src="75.1.3.1")/\
      OSPFv3_Hello(options=0x12, router="10.75.0.254", backup="10.75.0.1", neighbors=["75.1.0.1"])
assert raw(pkt) == b'\x01\x00^\x00\x00\x05\xca\x11\t\xb3\x00\x1c\x86\xdd`\x00\x00\x00\x00(Y@\xfe\x80\x00\x00\x00\x00\x00\x00\x16\x0c\x12\xaa\xfe~\xcd(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\x01\x00(K\x01\x03\x01\x00\x00\x00\x00Y\x98\x00\x00\x00\x00\x00\x00\x01\x00\x00\x12\x00\n\x00(\nK\x00\xfe\nK\x00\x01K\x01\x00\x01'

= OSPFv2 Opaque lsa

data = b'\x01\x00^\x00\x00\x05\x00\x90\x92\x9d\x94\x01\x08\x00E\xc0\x00\xb4?\x99\x00\x00\x01Y\xc6\x91\xd2\x00\x00\x01\xe0\x00\x00\x05\x02\x04\x00\xa0\x11\x03\x03\x03\x00\x00\x00d9\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x01 \n\x01\x00\x00\x00\x11\x03\x03\x03\x80\x00\x00\x1f\xab\xd9\x00\x84\x00\x01\x00\x04\x11\x03\x03\x03\x00\x02\x00d\x00\x01\x00\x01\x02\x00\x00\x00\x00\x02\x00\x04\xd2\x00\x00\x02\x00\x03\x00\x04\xd2\x00\x00\x01\x00\x04\x00\x04\xd2\x00\x00\x02\x00\x05\x00\x04\x00\x00\x03\xe8\x00\x06\x00\x04I\x98\x96\x80\x00\x07\x00\x04I\x98\x96\x80\x00\x08\x00 I\x18\x96\x80I\x18\x96\x80I\x18\x96\x80I\x18\x96\x80I\x18\x96\x80I\x18\x96\x80I\x18\x96\x80I\x18\x96\x80\x00\t\x00\x04\x00\x00\x00\x00\x92\xe6\xb6:'

p = Ether(data)

assert (p[OSPF_LSUpd][OSPF_Area_Scope_Opaque_LSA].age == 1)
assert (p[OSPF_LSUpd][OSPF_Area_Scope_Opaque_LSA].type == 10)
assert (p[OSPF_LSUpd][OSPF_Area_Scope_Opaque_LSA].id == '1.0.0.0')
assert (p[OSPF_LSUpd][OSPF_Area_Scope_Opaque_LSA].adrouter == '17.3.3.3')
assert (p[OSPF_LSUpd][OSPF_Area_Scope_Opaque_LSA].seq == 0x8000001f)
assert (p[OSPF_LSUpd][OSPF_Area_Scope_Opaque_LSA].chksum == 0xabd9)
assert (p[OSPF_LSUpd][OSPF_Area_Scope_Opaque_LSA].len == 132)
assert (p[OSPF_LSUpd][OSPF_Area_Scope_Opaque_LSA].opaqueid() == 0)
assert (p[OSPF_LSUpd][OSPF_Area_Scope_Opaque_LSA].opaquetype() == 1)

opaque_data=b'\x00\x01\x00\x04\x11\x03\x03\x03\x00\x02\x00d\x00\x01\x00\x01\x02\x00\x00\x00\x00\x02\x00\x04\xd2\x00\x00\x02\x00\x03\x00\x04\xd2\x00\x00\x01\x00\x04\x00\x04\xd2\x00\x00\x02\x00\x05\x00\x04\x00\x00\x03\xe8\x00\x06\x00\x04I\x98\x96\x80\x00\x07\x00\x04I\x98\x96\x80\x00\x08\x00 I\x18\x96\x80I\x18\x96\x80I\x18\x96\x80I\x18\x96\x80I\x18\x96\x80I\x18\x96\x80I\x18\x96\x80I\x18\x96\x80\x00\t\x00\x04\x00\x00\x00\x00'

p = OSPF_Link_Scope_Opaque_LSA(seq=0x80000003,data=opaque_data)
assert (p.type == 9)
assert (p.seq == 0x80000003)
assert (len(p) == 132)

p = OSPF_Area_Scope_Opaque_LSA(seq=0x80000004,data=opaque_data)
assert (p.type == 10)
assert (p.seq == 0x80000004)
assert (len(p) == 132)

p = OSPF_AS_Scope_Opaque_LSA(seq=0x80000005,data=opaque_data)
assert (p.type == 11)
assert (p.seq == 0x80000005)
assert (len(p) == 132)