• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1% Tests for nlm module
2############
3############
4+  Packet creation tests
5
6= Create subpackets
7File_Object()
8NLM4_Cookie()
9Object_Name()
10
11= Create nlm Calls
12SHARE_Call()
13UNSHARE_Call()
14LOCK_Call()
15UNLOCK_Call()
16GRANTED_MSG_Call()
17GRANTED_RES_Call()
18CANCEL_Call()
19TEST_Call()
20
21= Create nlm Replies
22SHARE_Reply()
23UNSHARE_Reply()
24LOCK_Reply()
25UNLOCK_Reply()
26GRANTED_MSG_Reply()
27GRANTED_RES_Reply()
28CANCEL_Reply()
29TEST_Reply()
30
31+ Layer bindings tests
32
33= RPC Layer Bindings for NLM Calls
34from scapy.contrib.oncrpc import *
35pkt = RPC()/RPC_Call()/SHARE_Call()
36assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100021, 4, 20)
37pkt = RPC()/RPC_Call()/UNSHARE_Call()
38assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100021, 4, 21)
39pkt = RPC()/RPC_Call()/LOCK_Call()
40assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100021, 4, 2)
41pkt = RPC()/RPC_Call()/UNLOCK_Call()
42assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100021, 4, 4)
43pkt = RPC()/RPC_Call()/GRANTED_MSG_Call()
44assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100021, 4, 10)
45pkt = RPC()/RPC_Call()/GRANTED_RES_Call()
46assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100021, 4, 15)
47pkt = RPC()/RPC_Call()/CANCEL_Call()
48assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100021, 4, 3)
49pkt = RPC()/RPC_Call()/TEST_Call()
50assert (pkt.mtype, pkt.program, pkt.pversion, pkt.procedure) == (0, 100021, 4, 1)
51
52= RPC Layer Bindings for NLM Replies
53from scapy.contrib.oncrpc import *
54pkt = RPC()/RPC_Reply()/SHARE_Reply()
55assert pkt.mtype == 1
56pkt = RPC()/RPC_Reply()/UNSHARE_Reply()
57assert pkt.mtype == 1
58pkt = RPC()/RPC_Reply()/LOCK_Reply()
59assert pkt.mtype == 1
60pkt = RPC()/RPC_Reply()/UNLOCK_Reply()
61assert pkt.mtype == 1
62pkt = RPC()/RPC_Reply()/GRANTED_MSG_Reply()
63assert pkt.mtype == 1
64pkt = RPC()/RPC_Reply()/GRANTED_RES_Reply()
65assert pkt.mtype == 1
66pkt = RPC()/RPC_Reply()/CANCEL_Reply()
67assert pkt.mtype == 1
68pkt = RPC()/RPC_Reply()/TEST_Reply()
69assert pkt.mtype == 1
70
71+ Test Built Packets Against Raw Strings
72
73= Built NLM Calls vs Raw Strings
74pkt = SHARE_Call(
75    cookie=NLM4_Cookie(
76        length=6,
77        contents='COOKIE',
78        fill='\x00\x00'
79    ),
80    caller=Object_Name(
81        length=6,
82        _name='CALLER',
83        fill='\x00\x00'
84    ),
85    filehandle=File_Object(
86        length=4,
87        fh='file'
88    ),
89    owner=Object_Name(
90        length=5,
91        _name='OWNER',
92        fill='\x00'
93    ),
94    mode=1,
95    access=2,
96    reclaim='YES'
97)
98assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x06CALLER\x00\x00\x00\x00\x00\x04file\x00\x00\x00\x05OWNER\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01'
99
100pkt = UNSHARE_Call(
101    cookie=NLM4_Cookie(
102        length=6,
103        contents='COOKIE',
104        fill='\x00\x00'
105    ),
106    caller=Object_Name(
107        length=6,
108        _name='CALLER',
109        fill='\x00\x00'
110    ),
111    filehandle=File_Object(
112        length=4,
113        fh='file'
114    ),
115    owner=Object_Name(
116        length=5,
117        _name='OWNER',
118        fill='\x00'
119    ),
120    mode=1,
121    access=2,
122    reclaim='YES'
123)
124assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x06CALLER\x00\x00\x00\x00\x00\x04file\x00\x00\x00\x05OWNER\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01'
125
126pkt = LOCK_Call(
127    cookie=NLM4_Cookie(
128        length=6,
129        contents='COOKIE',
130        fill='\x00\x00'
131    ),
132    block='YES',
133    exclusive='YES',
134    caller=Object_Name(
135        length=6,
136        _name='CALLER',
137        fill='\x00\x00'
138    ),
139    filehandle=File_Object(
140        length=4,
141        fh='file'
142    ),
143    owner=Object_Name(
144        length=5,
145        _name='OWNER',
146        fill='\x00'
147    ),
148    svid=1,
149    l_offset=2,
150    l_len=3,
151    reclaim=1,
152    state=4
153)
154assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x06CALLER\x00\x00\x00\x00\x00\x04file\x00\x00\x00\x05OWNER\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x04'
155
156pkt = UNLOCK_Call(
157    cookie=NLM4_Cookie(
158        length=6,
159        contents='COOKIE',
160        fill='\x00\x00'
161    ),
162    caller=Object_Name(
163        length=6,
164        _name='CALLER',
165        fill='\x00\x00'
166    ),
167    filehandle=File_Object(
168        length=4,
169        fh='file'
170    ),
171    owner=Object_Name(
172        length=5,
173        _name='OWNER',
174        fill='\x00'
175    ),
176    svid=1,
177    l_offset=2,
178    l_len=3
179)
180assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x06CALLER\x00\x00\x00\x00\x00\x04file\x00\x00\x00\x05OWNER\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x03'
181
182pkt = GRANTED_MSG_Call(
183    cookie=NLM4_Cookie(
184        length=6,
185        contents='COOKIE',
186        fill='\x00\x00'
187    ),
188    exclusive='YES',
189    caller=Object_Name(
190        length=6,
191        _name='CALLER',
192        fill='\x00\x00'
193    ),
194    filehandle=File_Object(
195        length=4,
196        fh='file'
197    ),
198    owner=Object_Name(
199        length=5,
200        _name='OWNER',
201        fill='\x00'
202    ),
203    svid=1,
204    l_offset=2,
205    l_len=3
206)
207assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06CALLER\x00\x00\x00\x00\x00\x04file\x00\x00\x00\x05OWNER\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x03'
208
209pkt = GRANTED_RES_Call(
210    cookie=NLM4_Cookie(
211        length=6,
212        contents='COOKIE',
213        fill='\x00\x00'
214    ),
215    status='NLM4_BLOCKED'
216)
217assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x03'
218
219pkt = CANCEL_Call(
220    cookie=NLM4_Cookie(
221        length=6,
222        contents='COOKIE',
223        fill='\x00\x00'
224    ),
225    block='YES',
226    exclusive='YES',
227    caller=Object_Name(
228        length=6,
229        _name='CALLER',
230        fill='\x00\x00'
231    ),
232    filehandle=File_Object(
233        length=4,
234        fh='file'
235    ),
236    owner=Object_Name(
237        length=5,
238        _name='OWNER',
239        fill='\x00'
240    ),
241    svid=1,
242    l_offset=2,
243    l_len=3
244)
245assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x06CALLER\x00\x00\x00\x00\x00\x04file\x00\x00\x00\x05OWNER\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x03'
246
247pkt = TEST_Call(
248    cookie=NLM4_Cookie(
249        length=6,
250        contents='COOKIE',
251        fill='\x00\x00'
252    ),
253    exclusive='YES',
254    caller=Object_Name(
255        length=6,
256        _name='CALLER',
257        fill='\x00\x00'
258    ),
259    filehandle=File_Object(
260        length=4,
261        fh='file'
262    ),
263    owner=Object_Name(
264        length=5,
265        _name='OWNER',
266        fill='\x00'
267    ),
268    svid=1,
269    l_offset=2,
270    l_len=3
271)
272assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06CALLER\x00\x00\x00\x00\x00\x04file\x00\x00\x00\x05OWNER\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x03'
273
274
275= NLM Replies vs Raw Strings
276pkt = SHARE_Reply(
277    cookie=NLM4_Cookie(
278        length=6,
279        contents='COOKIE',
280        fill='\x00\x00'
281    ),
282    status='NLM4_DENIED',
283    sequence=1
284)
285assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01'
286
287pkt = UNSHARE_Reply(
288    cookie=NLM4_Cookie(
289        length=6,
290        contents='COOKIE',
291        fill='\x00\x00'
292    ),
293    status='NLM4_DENIED',
294    sequence=1
295)
296assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01'
297
298pkt = LOCK_Reply(
299    cookie=NLM4_Cookie(
300        length=6,
301        contents='COOKIE',
302        fill='\x00\x00'
303    ),
304    status='NLM4_DENIED'
305)
306assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x01'
307
308pkt = UNLOCK_Reply(
309    cookie=NLM4_Cookie(
310        length=6,
311        contents='COOKIE',
312        fill='\x00\x00'
313    ),
314    status='NLM4_DENIED'
315)
316assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x01'
317
318pkt = CANCEL_Reply(
319    cookie=NLM4_Cookie(
320        length=6,
321        contents='COOKIE',
322        fill='\x00\x00'
323    ),
324    status='NLM4_DENIED'
325)
326assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x01'
327
328pkt = TEST_Reply(
329    cookie=NLM4_Cookie(
330        length=6,
331        contents='COOKIE',
332        fill='\x00\x00'
333    ),
334    status='NLM4_DENIED'
335)
336assert bytes(pkt) == b'\x00\x00\x00\x06COOKIE\x00\x00\x00\x00\x00\x01'
337