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
29 from samba.samdb import SamDB
31 from samba import sd_utils
34 class TrafficEmulatorPacketTests(samba.tests.TestCase):
36 super(TrafficEmulatorPacketTests, self).setUp()
37 self.server = os.environ["SERVER"]
38 self.domain = os.environ["DOMAIN"]
39 self.host = os.environ["SERVER_IP"]
40 self.lp = self.get_loadparm()
41 self.session = system_session()
42 self.credentials = self.get_credentials()
44 self.ldb = SamDB(url="ldap://%s" % self.host,
45 session_info=self.session,
46 credentials=self.credentials,
48 self.domain_sid = self.ldb.get_domain_sid()
50 traffic.clean_up_accounts(self.ldb, 1)
51 self.tempdir = tempfile.mkdtemp(prefix="traffic_packet_test_")
52 self.context = traffic.ReplayContext(server=self.server,
54 creds=self.credentials,
56 ou=traffic.ou_name(self.ldb, 1),
57 domain_sid=self.domain_sid)
59 self.conversation = traffic.Conversation()
60 self.conversation.conversation_id = 1
61 self.machinename = "STGM-1-1"
62 self.machinepass = samba.generate_random_password(32, 32)
63 self.username = "STGU-1-1"
64 self.userpass = samba.generate_random_password(32, 32)
65 account = traffic.ConversationAccounts(
71 traffic.create_ou(self.ldb, 1)
72 traffic.create_machine_account(self.ldb,
76 traffic.create_user_account(self.ldb,
81 self.context.generate_process_local_config(account, self.conversation)
83 # grant user write permission to do things like write account SPN
84 sdutils = sd_utils.SDUtils(self.ldb)
86 sdutils.dacl_add_ace(self.context.user_dn, mod)
89 super(TrafficEmulatorPacketTests, self).tearDown()
90 traffic.clean_up_accounts(self.ldb, 1)
91 shutil.rmtree(self.tempdir)
93 def test_packet_cldap_03(self):
94 packet = traffic.Packet("0.0\t11\t1\t2\t1\tcldap\t3\tsearchRequest\t")
95 self.assertTrue(p.packet_cldap_3(packet,
99 def test_packet_cldap_05(self):
100 packet = traffic.Packet("0.0\t11\t1\t1\t2\tcldap\t5\tsearchResDone\t")
101 self.assertFalse(p.packet_cldap_5(packet,
105 def test_packet_dcerpc_00(self):
106 packet = traffic.Packet("0.0\t11\t1\t2\t1\tdcerpc\t0\tRequest\t")
107 self.assertFalse(p.packet_dcerpc_0(packet,
111 def test_packet_dcerpc_02(self):
112 packet = traffic.Packet("0.0\t11\t1\t1\t2\tdcerpc\t2\tResponse\t")
113 self.assertFalse(p.packet_dcerpc_2(packet,
117 def test_packet_dcerpc_03(self):
118 packet = traffic.Packet("0.0\t11\t1\t1\t2\tdcerpc\t3\t\t")
119 self.assertFalse(p.packet_dcerpc_3(packet,
123 def test_packet_dcerpc_11(self):
124 packet = traffic.Packet("0.0\t11\t1\t2\t1\tdcerpc\t11\tBind\t")
125 self.assertFalse(p.packet_dcerpc_11(packet,
129 def test_packet_dcerpc_13(self):
130 packet = traffic.Packet("0.0\t11\t1\t2\t1\tdcerpc\t13\t\t")
131 self.assertFalse(p.packet_dcerpc_13(packet,
135 def test_packet_dcerpc_14(self):
136 packet = traffic.Packet(
137 "0.0\t11\t1\t2\t1\tdcerpc\t14\tAlter_context\t")
138 self.assertFalse(p.packet_dcerpc_14(packet,
142 def test_packet_dcerpc_15(self):
143 packet = traffic.Packet(
144 "0.0\t11\t1\t1\t2\tdcerpc\t15\tAlter_context_resp\t")
145 # Set user_creds MUST_USE_KERBEROS to suppress the warning message.
146 self.context.user_creds.set_kerberos_state(MUST_USE_KERBEROS)
147 self.assertFalse(p.packet_dcerpc_15(packet,
151 def test_packet_dcerpc_16(self):
152 packet = traffic.Packet(
153 "0.0\t11\t1\t1\t2\tdcerpc\t16\tAUTH3\t")
154 self.assertFalse(p.packet_dcerpc_16(packet,
158 def test_packet_dns_01(self):
159 packet = traffic.Packet(
160 "0.0\t11\t1\t1\t2\tdns\t1\tresponse\t")
161 self.assertFalse(p.packet_dns_1(packet,
165 def test_packet_drsuapi_00(self):
166 packet = traffic.Packet(
167 "0.0\t06\t1\t1\t2\tdrsuapi\t0\tDsBind\t")
168 self.assertTrue(p.packet_drsuapi_0(packet,
172 def test_packet_drsuapi_01(self):
173 packet = traffic.Packet(
174 "0.0\t06\t1\t1\t2\tdrsuapi\t1\tDsUnBind\t")
175 self.assertTrue(p.packet_drsuapi_1(packet,
179 def test_packet_drsuapi_02(self):
180 packet = traffic.Packet(
181 "0.0\t06\t1\t1\t2\tdrsuapi\t2\tDsReplicaSync\t")
182 self.assertFalse(p.packet_drsuapi_2(packet,
186 def test_packet_drsuapi_03(self):
187 packet = traffic.Packet(
188 "0.0\t06\t1\t1\t2\tdrsuapi\t3\tDsGetNCChanges\t")
189 self.assertFalse(p.packet_drsuapi_3(packet,
193 def test_packet_drsuapi_04(self):
194 packet = traffic.Packet(
195 "0.0\t06\t1\t1\t2\tdrsuapi\t4\tDsReplicaUpdateRefs\t")
196 self.assertFalse(p.packet_drsuapi_4(packet,
200 def test_packet_drsuapi_12(self):
201 packet = traffic.Packet(
202 "0.0\t06\t1\t1\t2\tdrsuapi\t12\tDsCrackNames\t")
203 self.assertTrue(p.packet_drsuapi_12(packet,
207 def test_packet_drsuapi_13(self):
208 packet = traffic.Packet(
209 "0.0\t06\t1\t1\t2\tdrsuapi\t13\tDsWriteAccountSpn\t")
210 self.assertTrue(p.packet_drsuapi_13(packet,
214 def test_packet_epm_03(self):
215 packet = traffic.Packet(
216 "0.0\t06\t1\t1\t2\tepm\t3\tMap\t")
217 self.assertFalse(p.packet_epm_3(packet,
221 def test_packet_kerberos(self):
222 """Kerberos packets are not generated, but are used as a hint to
225 packet = traffic.Packet(
226 "0.0\t11\t1\t1\t2\tkerberos\t\t\t")
227 self.assertFalse(p.packet_kerberos_(packet,
230 self.assertEqual(MUST_USE_KERBEROS,
231 self.context.user_creds.get_kerberos_state())
232 self.assertEqual(MUST_USE_KERBEROS,
233 self.context.user_creds_bad.get_kerberos_state())
234 self.assertEqual(MUST_USE_KERBEROS,
235 self.context.machine_creds.get_kerberos_state())
236 self.assertEqual(MUST_USE_KERBEROS,
237 self.context.machine_creds_bad.get_kerberos_state())
238 self.assertEqual(MUST_USE_KERBEROS,
239 self.context.creds.get_kerberos_state())
241 # Need to restore kerberos creds on the admin creds otherwise
242 # subsequent tests fail
243 self.credentials.set_kerberos_state(DONT_USE_KERBEROS)
245 def test_packet_ldap(self):
246 packet = traffic.Packet(
247 "0.0\t06\t1\t1\t2\tldap\t\t*** Unknown ***\t")
248 self.assertFalse(p.packet_ldap_(packet,
252 def test_packet_ldap_00_sasl(self):
253 packet = traffic.Packet(
254 "0.0\t06\t1\t2\t1\tldap\t0\tbindRequest"
255 "\t\t\t\t\t3\tsasl\t1.3.6.1.5.5.2")
256 self.assertTrue(p.packet_ldap_0(packet,
260 def test_packet_ldap_00_simple(self):
261 packet = traffic.Packet(
262 "0.0\t06\t1\t2\t1\tldap\t0\tbindRequest"
263 "\t\t\t\t\t0\tsimple\t")
264 self.assertTrue(p.packet_ldap_0(packet,
268 def test_packet_ldap_01(self):
269 packet = traffic.Packet(
270 "0.0\t06\t1\t1\t2\tldap\t1\tbindResponse\t")
271 self.assertFalse(p.packet_ldap_1(packet,
275 def test_packet_ldap_02(self):
276 packet = traffic.Packet(
277 "0.0\t06\t1\t2\t1\tldap\t2\tunbindRequest\t")
278 self.assertFalse(p.packet_ldap_2(packet,
282 def test_packet_ldap_03(self):
283 packet = traffic.Packet(
284 "0.0\t06\t1\t2\t1\tldap\t3\tsearchRequest"
285 "\t2\tDC,DC\t\tcn\t\t\t")
286 self.assertTrue(p.packet_ldap_3(packet,
290 def test_packet_ldap_04(self):
291 packet = traffic.Packet(
292 "0.0\t06\t1\t1\t2\tldap\t4\tsearchResEntry\t")
293 self.assertFalse(p.packet_ldap_4(packet,
297 def test_packet_ldap_05(self):
298 packet = traffic.Packet(
299 "0.0\t06\t1\t1\t2\tldap\t5\tsearchResDone\t")
300 self.assertFalse(p.packet_ldap_5(packet,
304 def test_packet_ldap_06(self):
305 packet = traffic.Packet(
306 "0.0\t06\t1\t2\t1\tldap\t6\tmodifyRequest\t"
308 self.assertFalse(p.packet_ldap_6(packet,
312 def test_packet_ldap_07(self):
313 packet = traffic.Packet(
314 "0.0\t06\t1\t1\t2\tldap\t7\tmodifyResponse\t")
315 self.assertFalse(p.packet_ldap_7(packet,
319 def test_packet_ldap_08(self):
320 packet = traffic.Packet(
321 "0.0\t06\t1\t2\t1\tldap\t8\taddRequest\t")
322 self.assertFalse(p.packet_ldap_8(packet,
326 def test_packet_ldap_09(self):
327 packet = traffic.Packet(
328 "0.0\t06\t1\t1\t2\tldap\t9\taddResponse\t")
329 self.assertFalse(p.packet_ldap_9(packet,
333 def test_packet_ldap_16(self):
334 packet = traffic.Packet(
335 "0.0\t06\t1\t2\t1\tldap\t16\tabandonRequest\t")
336 self.assertFalse(p.packet_ldap_16(packet,
340 def test_packet_lsarpc_00(self):
341 packet = traffic.Packet(
342 "0.0\t06\t1\t2\t1\tlsarpc\t0\tlsa_Close\t")
343 self.assertFalse(p.packet_lsarpc_1(packet,
347 def test_packet_lsarpc_01(self):
348 packet = traffic.Packet(
349 "0.0\t06\t1\t2\t1\tlsarpc\t1\tlsa_Delete\t")
350 self.assertFalse(p.packet_lsarpc_1(packet,
354 def test_packet_lsarpc_02(self):
355 packet = traffic.Packet(
356 "0.0\t06\t1\t2\t1\tlsarpc\t2\tlsa_EnumeratePrivileges\t")
357 self.assertFalse(p.packet_lsarpc_2(packet,
361 def test_packet_lsarpc_03(self):
362 packet = traffic.Packet(
363 "0.0\t06\t1\t2\t1\tlsarpc\t3\tlsa_QuerySecurityObject\t")
364 self.assertFalse(p.packet_lsarpc_3(packet,
368 def test_packet_lsarpc_04(self):
369 packet = traffic.Packet(
370 "0.0\t06\t1\t2\t1\tlsarpc\t4\tlsa_SetSecurityObject\t")
371 self.assertFalse(p.packet_lsarpc_4(packet,
375 def test_packet_lsarpc_05(self):
376 packet = traffic.Packet(
377 "0.0\t06\t1\t2\t1\tlsarpc\t5\tlsa_ChangePassword\t")
378 self.assertFalse(p.packet_lsarpc_5(packet,
382 def test_packet_lsarpc_06(self):
383 packet = traffic.Packet(
384 "0.0\t06\t1\t2\t1\tlsarpc\t6\tlsa_OpenPolicy\t")
385 self.assertFalse(p.packet_lsarpc_6(packet,
389 def test_packet_lsarpc_14(self):
390 packet = traffic.Packet(
391 "0.0\t06\t1\t2\t1\tlsarpc\t14\tlsa_LookupNames\t")
392 self.assertTrue(p.packet_lsarpc_14(packet,
396 def test_packet_lsarpc_15(self):
397 packet = traffic.Packet(
398 "0.0\t06\t1\t2\t1\tlsarpc\t15\tlsa_LookupSids\t")
399 self.assertTrue(p.packet_lsarpc_15(packet,
403 def test_packet_lsarpc_39(self):
404 packet = traffic.Packet(
405 "0.0\t06\t1\t2\t1\tlsarpc\t39\tlsa_QueryTrustedDomainInfoBySid\t")
406 self.assertTrue(p.packet_lsarpc_39(packet,
410 def test_packet_lsarpc_40(self):
411 packet = traffic.Packet(
412 "0.0\t06\t1\t2\t1\tlsarpc\t40\tlsa_SetTrustedDomainInfo\t")
413 self.assertFalse(p.packet_lsarpc_40(packet,
417 def test_packet_lsarpc_43(self):
418 packet = traffic.Packet(
419 "0.0\t06\t1\t2\t1\tlsarpc\t43\tlsa_StorePrivateData\t")
420 self.assertFalse(p.packet_lsarpc_43(packet,
424 def test_packet_lsarpc_44(self):
425 packet = traffic.Packet(
426 "0.0\t06\t1\t2\t1\tlsarpc\t44\tlsa_RetrievePrivateData\t")
427 self.assertFalse(p.packet_lsarpc_44(packet,
431 def test_packet_lsarpc_68(self):
432 packet = traffic.Packet(
433 "0.0\t06\t1\t2\t1\tlsarpc\t68\tlsa_LookupNames3\t")
434 self.assertFalse(p.packet_lsarpc_68(packet,
438 def test_packet_lsarpc_76(self):
439 packet = traffic.Packet(
440 "0.0\t06\t1\t2\t1\tlsarpc\t76\tlsa_LookupSids3\t")
441 self.assertTrue(p.packet_lsarpc_76(packet,
445 def test_packet_lsarpc_77(self):
446 packet = traffic.Packet(
447 "0.0\t06\t1\t2\t1\tlsarpc\t77\tlsa_LookupNames4\t")
448 self.assertTrue(p.packet_lsarpc_77(packet,
452 def test_packet_nbns_00(self):
453 packet = traffic.Packet(
454 "0.0\t06\t1\t2\t1\tnbns\t0\tquery\t")
455 self.assertTrue(p.packet_nbns_0(packet,
459 def test_packet_nbns_01(self):
460 packet = traffic.Packet(
461 "0.0\t06\t1\t1\t2\tnbns\t1\tresponse\t")
462 self.assertTrue(p.packet_nbns_0(packet,
466 def test_packet_rpc_netlogon_00(self):
467 packet = traffic.Packet(
468 "0.0\t06\t1\t2\t1\trpc_netlogon\t0\tNetrLogonUasLogon\t")
469 self.assertFalse(p.packet_rpc_netlogon_0(packet,
473 def test_packet_rpc_netlogon_01(self):
474 packet = traffic.Packet(
475 "0.0\t06\t1\t2\t1\trpc_netlogon\t1\tNetrLogonUasLogoff\t")
476 self.assertFalse(p.packet_rpc_netlogon_1(packet,
480 def test_packet_rpc_netlogon_04(self):
481 packet = traffic.Packet(
482 "0.0\t06\t1\t2\t1\trpc_netlogon\t4\tNetrServerReqChallenge\t")
483 self.assertFalse(p.packet_rpc_netlogon_4(packet,
487 def test_packet_rpc_netlogon_14(self):
488 packet = traffic.Packet(
489 "0.0\t06\t1\t2\t1\trpc_netlogon\t14\tNetrLogonControl2\t")
490 self.assertFalse(p.packet_rpc_netlogon_14(packet,
494 def test_packet_rpc_netlogon_15(self):
495 packet = traffic.Packet(
496 "0.0\t06\t1\t2\t1\trpc_netlogon\t15\tNetrServerAuthenticate2\t")
497 self.assertFalse(p.packet_rpc_netlogon_15(packet,
501 def test_packet_rpc_netlogon_21(self):
502 packet = traffic.Packet(
503 "0.0\t06\t1\t2\t1\trpc_netlogon\t21\tNetrLogonDummyRoutine1\t")
504 self.assertFalse(p.packet_rpc_netlogon_21(packet,
508 def test_packet_rpc_netlogon_26(self):
509 packet = traffic.Packet(
510 "0.0\t06\t1\t2\t1\trpc_netlogon\t26\tNetrServerAuthenticate3\t")
511 self.assertFalse(p.packet_rpc_netlogon_26(packet,
515 def test_packet_rpc_netlogon_29(self):
516 packet = traffic.Packet(
517 "0.0\t06\t1\t2\t1\trpc_netlogon\t29\tNetrLogonGetDomainInfo\t")
518 self.assertTrue(p.packet_rpc_netlogon_29(packet,
522 def test_packet_rpc_netlogon_30(self):
523 packet = traffic.Packet(
524 "0.0\t06\t1\t2\t1\trpc_netlogon\t30\tNetrServerPasswordSet2\t")
525 self.assertTrue(p.packet_rpc_netlogon_30(packet,
529 def test_packet_rpc_netlogon_34(self):
530 packet = traffic.Packet(
531 "0.0\t06\t1\t2\t1\trpc_netlogon\t34\tDsrGetDcNameEx2\t")
532 self.assertFalse(p.packet_rpc_netlogon_34(packet,
536 def test_packet_rpc_netlogon_39(self):
537 packet = traffic.Packet(
538 "0.0\t06\t1\t2\t1\trpc_netlogon\t39\tNetrLogonSamLogonEx\t")
539 self.assertTrue(p.packet_rpc_netlogon_39(packet,
543 def test_packet_rpc_netlogon_40(self):
544 packet = traffic.Packet(
545 "0.0\t06\t1\t2\t1\trpc_netlogon\t40\tDsrEnumerateDomainTrusts\t")
546 self.assertTrue(p.packet_rpc_netlogon_40(packet,
550 def test_packet_rpc_netlogon_45(self):
551 packet = traffic.Packet(
552 "0.0\t06\t1\t2\t1\trpc_netlogon\t45\tNetrLogonSamLogonWithFlags\t")
553 self.assertTrue(p.packet_rpc_netlogon_45(packet,
557 def test_packet_samr_00(self):
558 packet = traffic.Packet(
559 "0.0\t06\t1\t2\t1\tsamr\t0\tConnect\t")
560 self.assertTrue(p.packet_samr_0(packet,
564 def test_packet_samr_01(self):
565 packet = traffic.Packet(
566 "0.0\t06\t1\t2\t1\tsamr\t1\tClose\t")
567 self.assertTrue(p.packet_samr_1(packet,
571 def test_packet_samr_03(self):
572 packet = traffic.Packet(
573 "0.0\t06\t1\t2\t1\tsamr\t3\tQuerySecurity\t")
574 self.assertTrue(p.packet_samr_3(packet,
578 def test_packet_samr_05(self):
579 packet = traffic.Packet(
580 "0.0\t06\t1\t2\t1\tsamr\t5\tLookupDomain\t")
581 self.assertTrue(p.packet_samr_5(packet,
585 def test_packet_samr_06(self):
586 packet = traffic.Packet(
587 "0.0\t06\t1\t2\t1\tsamr\t6\tEnumDomains\t")
588 self.assertTrue(p.packet_samr_6(packet,
592 def test_packet_samr_07(self):
593 packet = traffic.Packet(
594 "0.0\t06\t1\t2\t1\tsamr\t7\tOpenDomain\t")
595 self.assertTrue(p.packet_samr_7(packet,
599 def test_packet_samr_08(self):
600 packet = traffic.Packet(
601 "0.0\t06\t1\t2\t1\tsamr\t8\tQueryDomainInfo'\t")
602 self.assertTrue(p.packet_samr_8(packet,
606 def test_packet_samr_14(self):
607 packet = traffic.Packet(
608 "0.0\t06\t1\t2\t1\tsamr\t14\tCreateDomAlias\t")
609 self.assertFalse(p.packet_samr_14(packet,
613 def test_packet_samr_15(self):
614 packet = traffic.Packet(
615 "0.0\t06\t1\t2\t1\tsamr\t15\tEnumDomainAliases\t")
616 self.assertTrue(p.packet_samr_15(packet,
620 def test_packet_samr_16(self):
621 packet = traffic.Packet(
622 "0.0\t06\t1\t2\t1\tsamr\t16\tGetAliasMembership\t")
623 self.assertTrue(p.packet_samr_16(packet,
627 def test_packet_samr_17(self):
628 packet = traffic.Packet(
629 "0.0\t06\t1\t2\t1\tsamr\t17\tLookupNames\t")
630 self.assertTrue(p.packet_samr_17(packet,
634 def test_packet_samr_18(self):
635 packet = traffic.Packet(
636 "0.0\t06\t1\t2\t1\tsamr\t18\tLookupRids\t")
637 self.assertTrue(p.packet_samr_18(packet,
641 def test_packet_samr_19(self):
642 packet = traffic.Packet(
643 "0.0\t06\t1\t2\t1\tsamr\t19\tOpenGroup\t")
644 self.assertTrue(p.packet_samr_19(packet,
648 def test_packet_samr_25(self):
649 packet = traffic.Packet(
650 "0.0\t06\t1\t2\t1\tsamr\t25\tQueryGroupMember\t")
651 self.assertTrue(p.packet_samr_25(packet,
655 def test_packet_samr_34(self):
656 packet = traffic.Packet(
657 "0.0\t06\t1\t2\t1\tsamr\t34\tOpenUser\t")
658 self.assertTrue(p.packet_samr_34(packet,
662 def test_packet_samr_36(self):
663 packet = traffic.Packet(
664 "0.0\t06\t1\t2\t1\tsamr\t36\tQueryUserInfo\t")
665 self.assertTrue(p.packet_samr_36(packet,
669 def test_packet_samr_37(self):
670 packet = traffic.Packet(
671 "0.0\t06\t1\t2\t1\tsamr\t37\tSetUserInfo\t")
672 self.assertFalse(p.packet_samr_37(packet,
676 def test_packet_samr_39(self):
677 packet = traffic.Packet(
678 "0.0\t06\t1\t2\t1\tsamr\t39\tGetGroupsForUser\t")
679 self.assertTrue(p.packet_samr_39(packet,
683 def test_packet_samr_40(self):
684 packet = traffic.Packet(
685 "0.0\t06\t1\t2\t1\tsamr\t40\tQueryDisplayInfo\t")
686 self.assertFalse(p.packet_samr_40(packet,
690 def test_packet_samr_44(self):
691 packet = traffic.Packet(
692 "0.0\t06\t1\t2\t1\tsamr\t44\tGetUserPwInfo\t")
693 self.assertFalse(p.packet_samr_44(packet,
697 def test_packet_samr_57(self):
698 packet = traffic.Packet(
699 "0.0\t06\t1\t2\t1\tsamr\t57\tConnect2\t")
700 self.assertTrue(p.packet_samr_57(packet,
704 def test_packet_samr_64(self):
705 packet = traffic.Packet(
706 "0.0\t06\t1\t2\t1\tsamr\t64\tConnect5\t")
707 self.assertTrue(p.packet_samr_64(packet,
711 def test_packet_samr_68(self):
712 packet = traffic.Packet(
713 "0.0\t06\t1\t2\t1\tsamr\t68\t\t")
714 self.assertFalse(p.packet_samr_68(packet,
718 def test_packet_srvsvc_16(self):
719 packet = traffic.Packet(
720 "0.0\t06\t1\t2\t1\tsrvsvc\t16\tNetShareGetInfo\t")
721 self.assertTrue(p.packet_srvsvc_16(packet,
725 def test_packet_srvsvc_21(self):
726 packet = traffic.Packet(
727 "0.0\t06\t1\t2\t1\tsrvsvc\t21\tNetSrvGetInfo\t")
728 self.assertTrue(p.packet_srvsvc_21(packet,