1 # Unit and integration tests for traffic_packet.py
3 # Copyright (C) Catalyst IT Ltd. 2017
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 3 of the License, or
8 # (at your option) any later version.
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this program. If not, see <http://www.gnu.org/licenses/>.
23 from samba.auth import system_session
25 from samba.credentials import MUST_USE_KERBEROS, DONT_USE_KERBEROS
26 from samba.emulate import traffic_packets as p
27 from samba.emulate import traffic
28 from samba.emulate.traffic import Packet
30 from samba.samdb import SamDB
32 from samba import sd_utils
35 class TrafficEmulatorPacketTests(samba.tests.TestCase):
37 super(TrafficEmulatorPacketTests, self).setUp()
38 self.server = os.environ["SERVER"]
39 self.domain = os.environ["DOMAIN"]
40 self.host = os.environ["SERVER_IP"]
41 self.lp = self.get_loadparm()
42 self.session = system_session()
43 self.credentials = self.get_credentials()
45 self.ldb = SamDB(url="ldap://%s" % self.host,
46 session_info=self.session,
47 credentials=self.credentials,
49 self.domain_sid = self.ldb.get_domain_sid()
51 traffic.clean_up_accounts(self.ldb, 1)
52 self.tempdir = tempfile.mkdtemp(prefix="traffic_packet_test_")
53 self.context = traffic.ReplayContext(server=self.server,
55 creds=self.credentials,
57 ou=traffic.ou_name(self.ldb, 1),
58 domain_sid=self.domain_sid)
60 self.conversation = traffic.Conversation()
61 self.conversation.conversation_id = 1
62 self.machinename = "STGM-1-1"
63 self.machinepass = samba.generate_random_password(32, 32)
64 self.username = "STGU-1-1"
65 self.userpass = samba.generate_random_password(32, 32)
66 account = traffic.ConversationAccounts(
72 traffic.create_ou(self.ldb, 1)
73 traffic.create_machine_account(self.ldb,
77 traffic.create_user_account(self.ldb,
82 self.context.generate_process_local_config(account, self.conversation)
84 # grant user write permission to do things like write account SPN
85 sdutils = sd_utils.SDUtils(self.ldb)
87 sdutils.dacl_add_ace(self.context.user_dn, mod)
90 super(TrafficEmulatorPacketTests, self).tearDown()
91 traffic.clean_up_accounts(self.ldb, 1)
92 shutil.rmtree(self.tempdir)
94 def test_packet_cldap_03(self):
95 packet = Packet.from_line(
96 "0.0\t11\t1\t2\t1\tcldap\t3\tsearchRequest\t")
97 self.assertTrue(p.packet_cldap_3(packet,
101 def test_packet_cldap_05(self):
102 packet = Packet.from_line(
103 "0.0\t11\t1\t1\t2\tcldap\t5\tsearchResDone\t")
104 self.assertFalse(p.packet_cldap_5(packet,
108 def test_packet_dcerpc_00(self):
109 packet = Packet.from_line("0.0\t11\t1\t2\t1\tdcerpc\t0\tRequest\t")
110 self.assertFalse(p.packet_dcerpc_0(packet,
114 def test_packet_dcerpc_02(self):
115 packet = Packet.from_line("0.0\t11\t1\t1\t2\tdcerpc\t2\tResponse\t")
116 self.assertFalse(p.packet_dcerpc_2(packet,
120 def test_packet_dcerpc_03(self):
121 packet = Packet.from_line("0.0\t11\t1\t1\t2\tdcerpc\t3\t\t")
122 self.assertFalse(p.packet_dcerpc_3(packet,
126 def test_packet_dcerpc_11(self):
127 packet = Packet.from_line("0.0\t11\t1\t2\t1\tdcerpc\t11\tBind\t")
128 self.assertFalse(p.packet_dcerpc_11(packet,
132 def test_packet_dcerpc_13(self):
133 packet = Packet.from_line("0.0\t11\t1\t2\t1\tdcerpc\t13\t\t")
134 self.assertFalse(p.packet_dcerpc_13(packet,
138 def test_packet_dcerpc_14(self):
139 packet = Packet.from_line(
140 "0.0\t11\t1\t2\t1\tdcerpc\t14\tAlter_context\t")
141 self.assertFalse(p.packet_dcerpc_14(packet,
145 def test_packet_dcerpc_15(self):
146 packet = Packet.from_line(
147 "0.0\t11\t1\t1\t2\tdcerpc\t15\tAlter_context_resp\t")
148 # Set user_creds MUST_USE_KERBEROS to suppress the warning message.
149 self.context.user_creds.set_kerberos_state(MUST_USE_KERBEROS)
150 self.assertFalse(p.packet_dcerpc_15(packet,
154 def test_packet_dcerpc_16(self):
155 packet = Packet.from_line(
156 "0.0\t11\t1\t1\t2\tdcerpc\t16\tAUTH3\t")
157 self.assertFalse(p.packet_dcerpc_16(packet,
161 def test_packet_dns_01(self):
162 packet = Packet.from_line(
163 "0.0\t11\t1\t1\t2\tdns\t1\tresponse\t")
164 self.assertFalse(p.packet_dns_1(packet,
168 def test_packet_drsuapi_00(self):
169 packet = Packet.from_line(
170 "0.0\t06\t1\t1\t2\tdrsuapi\t0\tDsBind\t")
171 self.assertTrue(p.packet_drsuapi_0(packet,
175 def test_packet_drsuapi_01(self):
176 packet = Packet.from_line(
177 "0.0\t06\t1\t1\t2\tdrsuapi\t1\tDsUnBind\t")
178 self.assertTrue(p.packet_drsuapi_1(packet,
182 def test_packet_drsuapi_02(self):
183 packet = Packet.from_line(
184 "0.0\t06\t1\t1\t2\tdrsuapi\t2\tDsReplicaSync\t")
185 self.assertFalse(p.packet_drsuapi_2(packet,
189 def test_packet_drsuapi_03(self):
190 packet = Packet.from_line(
191 "0.0\t06\t1\t1\t2\tdrsuapi\t3\tDsGetNCChanges\t")
192 self.assertFalse(p.packet_drsuapi_3(packet,
196 def test_packet_drsuapi_04(self):
197 packet = Packet.from_line(
198 "0.0\t06\t1\t1\t2\tdrsuapi\t4\tDsReplicaUpdateRefs\t")
199 self.assertFalse(p.packet_drsuapi_4(packet,
203 def test_packet_drsuapi_12(self):
204 packet = Packet.from_line(
205 "0.0\t06\t1\t1\t2\tdrsuapi\t12\tDsCrackNames\t")
206 self.assertTrue(p.packet_drsuapi_12(packet,
210 def test_packet_drsuapi_13(self):
211 packet = Packet.from_line(
212 "0.0\t06\t1\t1\t2\tdrsuapi\t13\tDsWriteAccountSpn\t")
213 self.assertTrue(p.packet_drsuapi_13(packet,
217 def test_packet_epm_03(self):
218 packet = Packet.from_line(
219 "0.0\t06\t1\t1\t2\tepm\t3\tMap\t")
220 self.assertFalse(p.packet_epm_3(packet,
224 def test_packet_kerberos(self):
225 """Kerberos packets are not generated, but are used as a hint to
228 packet = Packet.from_line(
229 "0.0\t11\t1\t1\t2\tkerberos\t\t\t")
230 self.assertFalse(p.packet_kerberos_(packet,
233 self.assertEqual(MUST_USE_KERBEROS,
234 self.context.user_creds.get_kerberos_state())
235 self.assertEqual(MUST_USE_KERBEROS,
236 self.context.user_creds_bad.get_kerberos_state())
237 self.assertEqual(MUST_USE_KERBEROS,
238 self.context.machine_creds.get_kerberos_state())
239 self.assertEqual(MUST_USE_KERBEROS,
240 self.context.machine_creds_bad.get_kerberos_state())
241 self.assertEqual(MUST_USE_KERBEROS,
242 self.context.creds.get_kerberos_state())
244 # Need to restore kerberos creds on the admin creds otherwise
245 # subsequent tests fail
246 self.credentials.set_kerberos_state(DONT_USE_KERBEROS)
248 def test_packet_ldap(self):
249 packet = Packet.from_line(
250 "0.0\t06\t1\t1\t2\tldap\t\t*** Unknown ***\t")
251 self.assertFalse(p.packet_ldap_(packet,
255 def test_packet_ldap_00_sasl(self):
256 packet = Packet.from_line(
257 "0.0\t06\t1\t2\t1\tldap\t0\tbindRequest"
258 "\t\t\t\t\t3\tsasl\t1.3.6.1.5.5.2")
259 self.assertTrue(p.packet_ldap_0(packet,
263 def test_packet_ldap_00_simple(self):
264 packet = Packet.from_line(
265 "0.0\t06\t1\t2\t1\tldap\t0\tbindRequest"
266 "\t\t\t\t\t0\tsimple\t")
267 self.assertTrue(p.packet_ldap_0(packet,
271 def test_packet_ldap_01(self):
272 packet = Packet.from_line(
273 "0.0\t06\t1\t1\t2\tldap\t1\tbindResponse\t")
274 self.assertFalse(p.packet_ldap_1(packet,
278 def test_packet_ldap_02(self):
279 packet = Packet.from_line(
280 "0.0\t06\t1\t2\t1\tldap\t2\tunbindRequest\t")
281 self.assertFalse(p.packet_ldap_2(packet,
285 def test_packet_ldap_03(self):
286 packet = Packet.from_line(
287 "0.0\t06\t1\t2\t1\tldap\t3\tsearchRequest"
288 "\t2\tDC,DC\t\tcn\t\t\t")
289 self.assertTrue(p.packet_ldap_3(packet,
293 def test_packet_ldap_04(self):
294 packet = Packet.from_line(
295 "0.0\t06\t1\t1\t2\tldap\t4\tsearchResEntry\t")
296 self.assertFalse(p.packet_ldap_4(packet,
300 def test_packet_ldap_05(self):
301 packet = Packet.from_line(
302 "0.0\t06\t1\t1\t2\tldap\t5\tsearchResDone\t")
303 self.assertFalse(p.packet_ldap_5(packet,
307 def test_packet_ldap_06(self):
308 packet = Packet.from_line(
309 "0.0\t06\t1\t2\t1\tldap\t6\tmodifyRequest\t"
311 self.assertFalse(p.packet_ldap_6(packet,
315 def test_packet_ldap_07(self):
316 packet = Packet.from_line(
317 "0.0\t06\t1\t1\t2\tldap\t7\tmodifyResponse\t")
318 self.assertFalse(p.packet_ldap_7(packet,
322 def test_packet_ldap_08(self):
323 packet = Packet.from_line(
324 "0.0\t06\t1\t2\t1\tldap\t8\taddRequest\t")
325 self.assertFalse(p.packet_ldap_8(packet,
329 def test_packet_ldap_09(self):
330 packet = Packet.from_line(
331 "0.0\t06\t1\t1\t2\tldap\t9\taddResponse\t")
332 self.assertFalse(p.packet_ldap_9(packet,
336 def test_packet_ldap_16(self):
337 packet = Packet.from_line(
338 "0.0\t06\t1\t2\t1\tldap\t16\tabandonRequest\t")
339 self.assertFalse(p.packet_ldap_16(packet,
343 def test_packet_lsarpc_00(self):
344 packet = Packet.from_line(
345 "0.0\t06\t1\t2\t1\tlsarpc\t0\tlsa_Close\t")
346 self.assertFalse(p.packet_lsarpc_1(packet,
350 def test_packet_lsarpc_01(self):
351 packet = Packet.from_line(
352 "0.0\t06\t1\t2\t1\tlsarpc\t1\tlsa_Delete\t")
353 self.assertFalse(p.packet_lsarpc_1(packet,
357 def test_packet_lsarpc_02(self):
358 packet = Packet.from_line(
359 "0.0\t06\t1\t2\t1\tlsarpc\t2\tlsa_EnumeratePrivileges\t")
360 self.assertFalse(p.packet_lsarpc_2(packet,
364 def test_packet_lsarpc_03(self):
365 packet = Packet.from_line(
366 "0.0\t06\t1\t2\t1\tlsarpc\t3\tlsa_QuerySecurityObject\t")
367 self.assertFalse(p.packet_lsarpc_3(packet,
371 def test_packet_lsarpc_04(self):
372 packet = Packet.from_line(
373 "0.0\t06\t1\t2\t1\tlsarpc\t4\tlsa_SetSecurityObject\t")
374 self.assertFalse(p.packet_lsarpc_4(packet,
378 def test_packet_lsarpc_05(self):
379 packet = Packet.from_line(
380 "0.0\t06\t1\t2\t1\tlsarpc\t5\tlsa_ChangePassword\t")
381 self.assertFalse(p.packet_lsarpc_5(packet,
385 def test_packet_lsarpc_06(self):
386 packet = Packet.from_line(
387 "0.0\t06\t1\t2\t1\tlsarpc\t6\tlsa_OpenPolicy\t")
388 self.assertFalse(p.packet_lsarpc_6(packet,
392 def test_packet_lsarpc_14(self):
393 packet = Packet.from_line(
394 "0.0\t06\t1\t2\t1\tlsarpc\t14\tlsa_LookupNames\t")
395 self.assertTrue(p.packet_lsarpc_14(packet,
399 def test_packet_lsarpc_15(self):
400 packet = Packet.from_line(
401 "0.0\t06\t1\t2\t1\tlsarpc\t15\tlsa_LookupSids\t")
402 self.assertTrue(p.packet_lsarpc_15(packet,
406 def test_packet_lsarpc_39(self):
407 packet = Packet.from_line(
408 "0.0\t06\t1\t2\t1\tlsarpc\t39\tlsa_QueryTrustedDomainInfoBySid\t")
409 self.assertTrue(p.packet_lsarpc_39(packet,
413 def test_packet_lsarpc_40(self):
414 packet = Packet.from_line(
415 "0.0\t06\t1\t2\t1\tlsarpc\t40\tlsa_SetTrustedDomainInfo\t")
416 self.assertFalse(p.packet_lsarpc_40(packet,
420 def test_packet_lsarpc_43(self):
421 packet = Packet.from_line(
422 "0.0\t06\t1\t2\t1\tlsarpc\t43\tlsa_StorePrivateData\t")
423 self.assertFalse(p.packet_lsarpc_43(packet,
427 def test_packet_lsarpc_44(self):
428 packet = Packet.from_line(
429 "0.0\t06\t1\t2\t1\tlsarpc\t44\tlsa_RetrievePrivateData\t")
430 self.assertFalse(p.packet_lsarpc_44(packet,
434 def test_packet_lsarpc_68(self):
435 packet = Packet.from_line(
436 "0.0\t06\t1\t2\t1\tlsarpc\t68\tlsa_LookupNames3\t")
437 self.assertFalse(p.packet_lsarpc_68(packet,
441 def test_packet_lsarpc_76(self):
442 packet = Packet.from_line(
443 "0.0\t06\t1\t2\t1\tlsarpc\t76\tlsa_LookupSids3\t")
444 self.assertTrue(p.packet_lsarpc_76(packet,
448 def test_packet_lsarpc_77(self):
449 packet = Packet.from_line(
450 "0.0\t06\t1\t2\t1\tlsarpc\t77\tlsa_LookupNames4\t")
451 self.assertTrue(p.packet_lsarpc_77(packet,
455 def test_packet_nbns_00(self):
456 packet = Packet.from_line(
457 "0.0\t06\t1\t2\t1\tnbns\t0\tquery\t")
458 self.assertTrue(p.packet_nbns_0(packet,
462 def test_packet_nbns_01(self):
463 packet = Packet.from_line(
464 "0.0\t06\t1\t1\t2\tnbns\t1\tresponse\t")
465 self.assertTrue(p.packet_nbns_0(packet,
469 def test_packet_rpc_netlogon_00(self):
470 packet = Packet.from_line(
471 "0.0\t06\t1\t2\t1\trpc_netlogon\t0\tNetrLogonUasLogon\t")
472 self.assertFalse(p.packet_rpc_netlogon_0(packet,
476 def test_packet_rpc_netlogon_01(self):
477 packet = Packet.from_line(
478 "0.0\t06\t1\t2\t1\trpc_netlogon\t1\tNetrLogonUasLogoff\t")
479 self.assertFalse(p.packet_rpc_netlogon_1(packet,
483 def test_packet_rpc_netlogon_04(self):
484 packet = Packet.from_line(
485 "0.0\t06\t1\t2\t1\trpc_netlogon\t4\tNetrServerReqChallenge\t")
486 self.assertFalse(p.packet_rpc_netlogon_4(packet,
490 def test_packet_rpc_netlogon_14(self):
491 packet = Packet.from_line(
492 "0.0\t06\t1\t2\t1\trpc_netlogon\t14\tNetrLogonControl2\t")
493 self.assertFalse(p.packet_rpc_netlogon_14(packet,
497 def test_packet_rpc_netlogon_15(self):
498 packet = Packet.from_line(
499 "0.0\t06\t1\t2\t1\trpc_netlogon\t15\tNetrServerAuthenticate2\t")
500 self.assertFalse(p.packet_rpc_netlogon_15(packet,
504 def test_packet_rpc_netlogon_21(self):
505 packet = Packet.from_line(
506 "0.0\t06\t1\t2\t1\trpc_netlogon\t21\tNetrLogonDummyRoutine1\t")
507 self.assertFalse(p.packet_rpc_netlogon_21(packet,
511 def test_packet_rpc_netlogon_26(self):
512 packet = Packet.from_line(
513 "0.0\t06\t1\t2\t1\trpc_netlogon\t26\tNetrServerAuthenticate3\t")
514 self.assertFalse(p.packet_rpc_netlogon_26(packet,
518 def test_packet_rpc_netlogon_29(self):
519 packet = Packet.from_line(
520 "0.0\t06\t1\t2\t1\trpc_netlogon\t29\tNetrLogonGetDomainInfo\t")
521 self.assertTrue(p.packet_rpc_netlogon_29(packet,
525 def test_packet_rpc_netlogon_30(self):
526 packet = Packet.from_line(
527 "0.0\t06\t1\t2\t1\trpc_netlogon\t30\tNetrServerPasswordSet2\t")
528 self.assertTrue(p.packet_rpc_netlogon_30(packet,
532 def test_packet_rpc_netlogon_34(self):
533 packet = Packet.from_line(
534 "0.0\t06\t1\t2\t1\trpc_netlogon\t34\tDsrGetDcNameEx2\t")
535 self.assertFalse(p.packet_rpc_netlogon_34(packet,
539 def test_packet_rpc_netlogon_39(self):
540 packet = Packet.from_line(
541 "0.0\t06\t1\t2\t1\trpc_netlogon\t39\tNetrLogonSamLogonEx\t")
542 self.assertTrue(p.packet_rpc_netlogon_39(packet,
546 def test_packet_rpc_netlogon_40(self):
547 packet = Packet.from_line(
548 "0.0\t06\t1\t2\t1\trpc_netlogon\t40\tDsrEnumerateDomainTrusts\t")
549 self.assertTrue(p.packet_rpc_netlogon_40(packet,
553 def test_packet_rpc_netlogon_45(self):
554 packet = Packet.from_line(
555 "0.0\t06\t1\t2\t1\trpc_netlogon\t45\tNetrLogonSamLogonWithFlags\t")
556 self.assertTrue(p.packet_rpc_netlogon_45(packet,
560 def test_packet_samr_00(self):
561 packet = Packet.from_line(
562 "0.0\t06\t1\t2\t1\tsamr\t0\tConnect\t")
563 self.assertTrue(p.packet_samr_0(packet,
567 def test_packet_samr_01(self):
568 packet = Packet.from_line(
569 "0.0\t06\t1\t2\t1\tsamr\t1\tClose\t")
570 self.assertTrue(p.packet_samr_1(packet,
574 def test_packet_samr_03(self):
575 packet = Packet.from_line(
576 "0.0\t06\t1\t2\t1\tsamr\t3\tQuerySecurity\t")
577 self.assertTrue(p.packet_samr_3(packet,
581 def test_packet_samr_05(self):
582 packet = Packet.from_line(
583 "0.0\t06\t1\t2\t1\tsamr\t5\tLookupDomain\t")
584 self.assertTrue(p.packet_samr_5(packet,
588 def test_packet_samr_06(self):
589 packet = Packet.from_line(
590 "0.0\t06\t1\t2\t1\tsamr\t6\tEnumDomains\t")
591 self.assertTrue(p.packet_samr_6(packet,
595 def test_packet_samr_07(self):
596 packet = Packet.from_line(
597 "0.0\t06\t1\t2\t1\tsamr\t7\tOpenDomain\t")
598 self.assertTrue(p.packet_samr_7(packet,
602 def test_packet_samr_08(self):
603 packet = Packet.from_line(
604 "0.0\t06\t1\t2\t1\tsamr\t8\tQueryDomainInfo'\t")
605 self.assertTrue(p.packet_samr_8(packet,
609 def test_packet_samr_14(self):
610 packet = Packet.from_line(
611 "0.0\t06\t1\t2\t1\tsamr\t14\tCreateDomAlias\t")
612 self.assertFalse(p.packet_samr_14(packet,
616 def test_packet_samr_15(self):
617 packet = Packet.from_line(
618 "0.0\t06\t1\t2\t1\tsamr\t15\tEnumDomainAliases\t")
619 self.assertTrue(p.packet_samr_15(packet,
623 def test_packet_samr_16(self):
624 packet = Packet.from_line(
625 "0.0\t06\t1\t2\t1\tsamr\t16\tGetAliasMembership\t")
626 self.assertTrue(p.packet_samr_16(packet,
630 def test_packet_samr_17(self):
631 packet = Packet.from_line(
632 "0.0\t06\t1\t2\t1\tsamr\t17\tLookupNames\t")
633 self.assertTrue(p.packet_samr_17(packet,
637 def test_packet_samr_18(self):
638 packet = Packet.from_line(
639 "0.0\t06\t1\t2\t1\tsamr\t18\tLookupRids\t")
640 self.assertTrue(p.packet_samr_18(packet,
644 def test_packet_samr_19(self):
645 packet = Packet.from_line(
646 "0.0\t06\t1\t2\t1\tsamr\t19\tOpenGroup\t")
647 self.assertTrue(p.packet_samr_19(packet,
651 def test_packet_samr_25(self):
652 packet = Packet.from_line(
653 "0.0\t06\t1\t2\t1\tsamr\t25\tQueryGroupMember\t")
654 self.assertTrue(p.packet_samr_25(packet,
658 def test_packet_samr_34(self):
659 packet = Packet.from_line(
660 "0.0\t06\t1\t2\t1\tsamr\t34\tOpenUser\t")
661 self.assertTrue(p.packet_samr_34(packet,
665 def test_packet_samr_36(self):
666 packet = Packet.from_line(
667 "0.0\t06\t1\t2\t1\tsamr\t36\tQueryUserInfo\t")
668 self.assertTrue(p.packet_samr_36(packet,
672 def test_packet_samr_37(self):
673 packet = Packet.from_line(
674 "0.0\t06\t1\t2\t1\tsamr\t37\tSetUserInfo\t")
675 self.assertFalse(p.packet_samr_37(packet,
679 def test_packet_samr_39(self):
680 packet = Packet.from_line(
681 "0.0\t06\t1\t2\t1\tsamr\t39\tGetGroupsForUser\t")
682 self.assertTrue(p.packet_samr_39(packet,
686 def test_packet_samr_40(self):
687 packet = Packet.from_line(
688 "0.0\t06\t1\t2\t1\tsamr\t40\tQueryDisplayInfo\t")
689 self.assertFalse(p.packet_samr_40(packet,
693 def test_packet_samr_44(self):
694 packet = Packet.from_line(
695 "0.0\t06\t1\t2\t1\tsamr\t44\tGetUserPwInfo\t")
696 self.assertFalse(p.packet_samr_44(packet,
700 def test_packet_samr_57(self):
701 packet = Packet.from_line(
702 "0.0\t06\t1\t2\t1\tsamr\t57\tConnect2\t")
703 self.assertTrue(p.packet_samr_57(packet,
707 def test_packet_samr_64(self):
708 packet = Packet.from_line(
709 "0.0\t06\t1\t2\t1\tsamr\t64\tConnect5\t")
710 self.assertTrue(p.packet_samr_64(packet,
714 def test_packet_samr_68(self):
715 packet = Packet.from_line(
716 "0.0\t06\t1\t2\t1\tsamr\t68\t\t")
717 self.assertFalse(p.packet_samr_68(packet,
721 def test_packet_srvsvc_16(self):
722 packet = Packet.from_line(
723 "0.0\t06\t1\t2\t1\tsrvsvc\t16\tNetShareGetInfo\t")
724 self.assertTrue(p.packet_srvsvc_16(packet,
728 def test_packet_srvsvc_21(self):
729 packet = Packet.from_line(
730 "0.0\t06\t1\t2\t1\tsrvsvc\t21\tNetSrvGetInfo\t")
731 self.assertTrue(p.packet_srvsvc_21(packet,