github.com/n00py/Slackor@v0.0.0-20200610224921-d007fcea1740/impacket/tests/SMB_RPC/test_srvs.py (about) 1 ############################################################################### 2 # Tested so far: 3 # 4 # NetrConnectionEnum 5 # NetrFileEnum 6 # NetrFileGetInfo 7 # NetrFileClose 8 # NetrSessionEnum 9 # NetrSessionDel 10 # NetrShareAdd 11 # NetrShareDel 12 # NetrShareEnum 13 # NetrShareEnumSticky 14 # NetrShareGetInfo 15 # NetrShareDelSticky 16 # NetrShareDelStart 17 # NetrShareDelCommit 18 # NetrShareCheck 19 # NetrServerGetInfo 20 # NetrServerDiskEnum 21 # NetrServerStatisticsGet 22 # NetrRemoteTOD 23 # NetrServerTransportEnum 24 # NetrpGetFileSecurity 25 # NetprPathType 26 # NetprPathCanonicalize 27 # NetprPathCompare 28 # NetprNameValidate 29 # NetprNameCanonicalize 30 # NetprNameCompare 31 # NetrDfsGetVersion 32 # NetrDfsModifyPrefix 33 # NetrDfsFixLocalVolume 34 # NetrDfsManagerReportSiteInfo 35 # NetrServerAliasAdd 36 # NetrServerAliasEnum 37 # NetrServerAliasDel 38 # NetrShareDelEx 39 # NetrServerTransportAdd 40 # NetrServerTransportDel 41 # NetrServerTransportAddEx 42 # NetrServerTransportDelEx 43 # NetrDfsCreateLocalPartition 44 # NetrDfsDeleteLocalPartition 45 # NetrDfsSetLocalVolumeState 46 # NetrDfsCreateExitPoint 47 # NetrDfsDeleteExitPoint 48 # NetrShareSetInfo 49 # 50 # Not yet: 51 # 52 # NetrServerSetInfo 53 # 54 # Shouldn't dump errors against a win7 55 # 56 ################################################################################ 57 58 from __future__ import division 59 from __future__ import print_function 60 import unittest 61 try: 62 import ConfigParser 63 except ImportError: 64 import configparser as ConfigParser 65 66 from impacket.dcerpc.v5 import transport 67 from impacket.dcerpc.v5 import srvs 68 from impacket.dcerpc.v5.dtypes import NULL, OWNER_SECURITY_INFORMATION 69 70 71 class SRVSTests(unittest.TestCase): 72 def connect(self): 73 rpctransport = transport.DCERPCTransportFactory(self.stringBinding) 74 if len(self.hashes) > 0: 75 lmhash, nthash = self.hashes.split(':') 76 else: 77 lmhash = '' 78 nthash = '' 79 if hasattr(rpctransport, 'set_credentials'): 80 # This method exists only for selected protocol sequences. 81 rpctransport.set_credentials(self.username,self.password, self.domain, lmhash, nthash) 82 dce = rpctransport.get_dce_rpc() 83 dce.connect() 84 dce.bind(srvs.MSRPC_UUID_SRVS, transfer_syntax = self.ts) 85 86 return dce, rpctransport 87 88 def test_NetrConnectionEnum(self): 89 dce, rpctransport = self.connect() 90 request = srvs.NetrConnectionEnum() 91 request['ServerName'] = '\\\\%s\x00' % self.machine 92 request['Qualifier'] = 'IPC$\x00' 93 request['InfoStruct']['Level'] = 1 94 request['InfoStruct']['ConnectInfo']['tag'] = 1 95 request['PreferedMaximumLength'] = 8192 96 resp = dce.request(request) 97 resp.dump() 98 99 request['InfoStruct']['Level'] = 0 100 request['InfoStruct']['ConnectInfo']['tag'] = 0 101 resp = dce.request(request) 102 resp.dump() 103 104 def test_hNetrConnectionEnum(self): 105 dce, rpctransport = self.connect() 106 resp = srvs.hNetrConnectionEnum(dce, 'IPC$\x00', 1) 107 resp.dump() 108 109 resp = srvs.hNetrConnectionEnum(dce, 'IPC$\x00', 0) 110 resp.dump() 111 112 def test_NetrFileEnum(self): 113 dce, rpctransport = self.connect() 114 request = srvs.NetrFileEnum() 115 request['ServerName'] = '\\\\%s\x00' % self.machine 116 request['BasePath'] = NULL 117 request['UserName'] = NULL 118 request['InfoStruct']['Level'] = 2 119 request['InfoStruct']['FileInfo']['tag'] = 2 120 request['PreferedMaximumLength'] = 8192 121 resp = dce.request(request) 122 resp.dump() 123 request['InfoStruct']['Level'] = 3 124 request['InfoStruct']['FileInfo']['tag'] = 3 125 resp = dce.request(request) 126 resp.dump() 127 128 def test_hNetrFileEnum(self): 129 dce, rpctransport = self.connect() 130 resp = srvs.hNetrFileEnum(dce, NULL, NULL, 2) 131 resp.dump() 132 133 resp = srvs.hNetrFileEnum(dce, NULL, NULL, 3) 134 resp.dump() 135 136 def test_NetrFileGetInfo(self): 137 dce, rpctransport = self.connect() 138 request = srvs.NetrFileEnum() 139 request['ServerName'] = '\\\\%s\x00' % self.machine 140 request['BasePath'] = NULL 141 request['UserName'] = NULL 142 request['InfoStruct']['Level'] = 2 143 request['InfoStruct']['FileInfo']['tag'] = 2 144 request['PreferedMaximumLength'] = 8192 145 resp = dce.request(request) 146 resp.dump() 147 148 request = srvs.NetrFileGetInfo() 149 request['ServerName'] = '\\\\%s\x00' % self.machine 150 request['FileId'] = resp['InfoStruct']['FileInfo']['Level2']['Buffer'][0]['fi2_id'] 151 request['Level'] = 2 152 resp = dce.request(request) 153 resp.dump() 154 155 request['Level'] = 3 156 resp = dce.request(request) 157 resp.dump() 158 159 def test_hNetrFileGetInfo(self): 160 dce, rpctransport = self.connect() 161 resp = srvs.hNetrFileEnum(dce, NULL, NULL, 2) 162 resp.dump() 163 164 resp0 = srvs.hNetrFileGetInfo(dce, resp['InfoStruct']['FileInfo']['Level2']['Buffer'][0]['fi2_id'], 2) 165 resp0.dump() 166 167 resp = srvs.hNetrFileGetInfo(dce, resp['InfoStruct']['FileInfo']['Level2']['Buffer'][0]['fi2_id'], 3) 168 resp.dump() 169 170 def test_NetrFileClose(self): 171 dce, rpctransport = self.connect() 172 request = srvs.NetrFileEnum() 173 request['ServerName'] = '\\\\%s\x00' % self.machine 174 request['BasePath'] = NULL 175 request['UserName'] = NULL 176 request['InfoStruct']['Level'] = 2 177 request['InfoStruct']['FileInfo']['tag'] = 2 178 request['PreferedMaximumLength'] = 8192 179 resp = dce.request(request) 180 resp.dump() 181 182 request = srvs.NetrFileClose() 183 request['ServerName'] = '\\\\%s\x00' % self.machine 184 request['FileId'] = resp['InfoStruct']['FileInfo']['Level2']['Buffer'][0]['fi2_id'] 185 try: 186 resp = dce.request(request) 187 resp.dump() 188 except Exception as e: 189 # I might be closing myself ;) 190 if str(e).find('STATUS_PIPE_BROKEN') < 0 and str(e).find('STATUS_FILE_CLOSED') < 0 and str(e).find('STATUS_INVALID_HANDLE') < 0 and str(e).find('0x90a') < 0: 191 192 raise 193 194 def test_hNetrFileClose(self): 195 dce, rpctransport = self.connect() 196 resp = srvs.hNetrFileEnum(dce, NULL, NULL, 2) 197 resp.dump() 198 199 try: 200 resp = srvs.hNetrFileClose(dce, resp['InfoStruct']['FileInfo']['Level2']['Buffer'][0]['fi2_id']) 201 resp.dump() 202 except Exception as e: 203 # I might be closing myself ;) 204 if str(e).find('STATUS_PIPE_BROKEN') < 0 and str(e).find('STATUS_FILE_CLOSED') < 0 and str(e).find('STATUS_INVALID_HANDLE') < 0 and str(e).find('0x90a') < 0: 205 raise 206 207 def test_NetrSessionEnum(self): 208 dce, rpctransport = self.connect() 209 request = srvs.NetrSessionEnum() 210 request['ServerName'] = NULL 211 request['ClientName'] = NULL 212 request['UserName'] = NULL 213 request['InfoStruct']['Level'] = 0 214 request['InfoStruct']['SessionInfo']['tag'] = 0 215 request['InfoStruct']['SessionInfo']['Level0']['Buffer'] = NULL 216 request['PreferedMaximumLength'] = 0xffffffff 217 request['ResumeHandle'] = NULL 218 resp = dce.request(request) 219 resp.dump() 220 221 request['InfoStruct']['Level'] = 1 222 request['InfoStruct']['SessionInfo']['tag'] = 1 223 request['InfoStruct']['SessionInfo']['Level1']['Buffer'] = NULL 224 resp = dce.request(request) 225 resp.dump() 226 227 request['InfoStruct']['Level'] = 2 228 request['InfoStruct']['SessionInfo']['tag'] = 2 229 request['InfoStruct']['SessionInfo']['Level2']['Buffer'] = NULL 230 resp = dce.request(request) 231 resp.dump() 232 233 request['InfoStruct']['Level'] = 10 234 request['InfoStruct']['SessionInfo']['tag'] = 10 235 request['InfoStruct']['SessionInfo']['Level10']['Buffer'] = NULL 236 resp = dce.request(request) 237 resp.dump() 238 239 request['InfoStruct']['Level'] = 502 240 request['InfoStruct']['SessionInfo']['tag'] = 502 241 request['InfoStruct']['SessionInfo']['Level502']['Buffer'] = NULL 242 resp = dce.request(request) 243 resp.dump() 244 245 def test_hNetrSessionEnum(self): 246 dce, rpctransport = self.connect() 247 resp = srvs.hNetrSessionEnum(dce, NULL, NULL, 0) 248 resp.dump() 249 250 resp = srvs.hNetrSessionEnum(dce, NULL, NULL, 1) 251 resp.dump() 252 253 resp = srvs.hNetrSessionEnum(dce, NULL, NULL, 2) 254 resp.dump() 255 256 resp = srvs.hNetrSessionEnum(dce, NULL, NULL, 10) 257 resp.dump() 258 259 resp = srvs.hNetrSessionEnum(dce, NULL, NULL, 502) 260 resp.dump() 261 262 def test_NetrSessionDel(self): 263 dce, rpctransport = self.connect() 264 request = srvs.NetrSessionEnum() 265 request['ServerName'] = NULL 266 request['ClientName'] = NULL 267 request['UserName'] = NULL 268 request['InfoStruct']['Level'] = 502 269 request['InfoStruct']['SessionInfo']['tag'] = 502 270 request['InfoStruct']['SessionInfo']['Level502']['Buffer'] = NULL 271 request['PreferedMaximumLength'] = 0xffffffff 272 request['ResumeHandle'] = NULL 273 resp = dce.request(request) 274 resp.dump() 275 276 request = srvs.NetrSessionDel() 277 request['ServerName'] = NULL 278 request['ClientName'] = resp['InfoStruct']['SessionInfo']['Level502']['Buffer'][0]['sesi502_cname'] 279 request['UserName'] = resp['InfoStruct']['SessionInfo']['Level502']['Buffer'][0]['sesi502_username'] 280 try: 281 resp = dce.request(request) 282 resp.dump() 283 except Exception as e: 284 if e.get_error_code() != 0x908: 285 raise 286 287 def test_hNetrSessionDel(self): 288 dce, rpctransport = self.connect() 289 resp = srvs.hNetrSessionEnum(dce, NULL, NULL, 502) 290 resp.dump() 291 292 try: 293 resp = srvs.hNetrSessionDel(dce, resp['InfoStruct']['SessionInfo']['Level502']['Buffer'][0]['sesi502_cname'], resp['InfoStruct']['SessionInfo']['Level502']['Buffer'][0]['sesi502_username'] ) 294 resp.dump() 295 except Exception as e: 296 if e.get_error_code() != 0x908: 297 raise 298 299 def test_NetrShareAdd_NetrShareDel(self): 300 dce, rpctransport = self.connect() 301 request = srvs.NetrShareAdd() 302 request['ServerName'] = NULL 303 request['Level'] = 2 304 request['InfoStruct']['tag'] = 2 305 request['InfoStruct']['ShareInfo2']['shi2_netname'] = 'BETUSHARE\x00' 306 request['InfoStruct']['ShareInfo2']['shi2_type'] = srvs.STYPE_TEMPORARY 307 request['InfoStruct']['ShareInfo2']['shi2_remark'] = 'My Remark\x00' 308 request['InfoStruct']['ShareInfo2']['shi2_max_uses'] = 0xFFFFFFFF 309 request['InfoStruct']['ShareInfo2']['shi2_path'] = 'c:\\\x00' 310 request['InfoStruct']['ShareInfo2']['shi2_passwd'] = NULL 311 resp = dce.request(request) 312 resp.dump() 313 314 request = srvs.NetrShareDel() 315 request['ServerName'] = NULL 316 request['NetName'] = 'BETUSHARE\x00' 317 resp = dce.request(request) 318 resp.dump() 319 320 def test_hNetrShareAdd_hNetrShareDel(self): 321 dce, rpctransport = self.connect() 322 shareInfo = srvs.SHARE_INFO_2() 323 shareInfo['shi2_netname'] = 'BETUSHARE\x00' 324 shareInfo['shi2_type'] = srvs.STYPE_TEMPORARY 325 shareInfo['shi2_remark'] = 'My Remark\x00' 326 shareInfo['shi2_max_uses'] = 0xFFFFFFFF 327 shareInfo['shi2_path'] = 'c:\\\x00' 328 shareInfo['shi2_passwd'] = NULL 329 resp = srvs.hNetrShareAdd(dce, 2, shareInfo) 330 resp.dump() 331 332 resp = srvs.hNetrShareDel(dce,'BETUSHARE\x00') 333 resp.dump() 334 335 def test_NetrShareEnum(self): 336 dce, rpctransport = self.connect() 337 request = srvs.NetrShareEnum() 338 request['ServerName'] = NULL 339 request['PreferedMaximumLength'] = 0xffffffff 340 request['ResumeHandle'] = NULL 341 request['InfoStruct']['ShareInfo']['tag'] = 0 342 request['InfoStruct']['ShareInfo']['Level0']['Buffer'] = NULL 343 request['InfoStruct']['Level'] = 0 344 resp = dce.request(request) 345 resp.dump() 346 347 request['InfoStruct']['ShareInfo']['tag'] = 1 348 request['InfoStruct']['ShareInfo']['Level1']['Buffer'] = NULL 349 request['InfoStruct']['Level'] = 1 350 resp = dce.request(request) 351 resp.dump() 352 353 request['InfoStruct']['ShareInfo']['tag'] = 2 354 request['InfoStruct']['ShareInfo']['Level2']['Buffer'] = NULL 355 request['InfoStruct']['Level'] = 2 356 resp = dce.request(request) 357 resp.dump() 358 359 request['InfoStruct']['ShareInfo']['tag'] = 501 360 request['InfoStruct']['ShareInfo']['Level501']['Buffer'] = NULL 361 request['InfoStruct']['Level'] = 501 362 resp = dce.request(request) 363 resp.dump() 364 365 request['InfoStruct']['ShareInfo']['tag'] = 502 366 request['InfoStruct']['ShareInfo']['Level502']['Buffer'] = NULL 367 request['InfoStruct']['Level'] = 502 368 resp = dce.request(request) 369 resp.dump() 370 371 request['InfoStruct']['ShareInfo']['tag'] = 503 372 request['InfoStruct']['ShareInfo']['Level503']['Buffer'] = NULL 373 request['InfoStruct']['Level'] = 503 374 resp = dce.request(request) 375 resp.dump() 376 377 def test_hNetrShareEnum(self): 378 dce, rpctransport = self.connect() 379 resp = srvs.hNetrShareEnum(dce, 0) 380 resp.dump() 381 382 resp = srvs.hNetrShareEnum(dce, 1) 383 resp.dump() 384 385 resp = srvs.hNetrShareEnum(dce, 2) 386 resp.dump() 387 388 resp = srvs.hNetrShareEnum(dce, 501) 389 resp.dump() 390 391 resp = srvs.hNetrShareEnum(dce, 502) 392 resp.dump() 393 394 resp = srvs.hNetrShareEnum(dce, 503) 395 resp.dump() 396 397 def tes_NetrShareEnumSticky(self): 398 dce, rpctransport = self.connect() 399 request = srvs.NetrShareEnumSticky() 400 request['ServerName'] = NULL 401 request['PreferedMaximumLength'] = 0xffffffff 402 request['ResumeHandle'] = NULL 403 request['InfoStruct']['ShareInfo']['tag'] = 502 404 request['InfoStruct']['ShareInfo']['Level502']['Buffer'] = NULL 405 request['InfoStruct']['Level'] = 502 406 resp = dce.request(request) 407 resp.dump() 408 409 request['InfoStruct']['ShareInfo']['tag'] = 503 410 request['InfoStruct']['ShareInfo']['Level503']['Buffer'] = NULL 411 request['InfoStruct']['Level'] = 503 412 resp = dce.request(request) 413 resp.dump() 414 415 def tes_hNetrShareEnumSticky(self): 416 dce, rpctransport = self.connect() 417 resp = srvs.hNetrShareEnumSticky(dce, 502) 418 resp.dump() 419 420 resp = srvs.hNetrShareEnumSticky(dce, 503) 421 resp.dump() 422 423 def test_NetrShareGetInfo(self): 424 dce, rpctransport = self.connect() 425 request = srvs.NetrShareGetInfo() 426 request['ServerName'] = NULL 427 request['NetName'] = 'IPC$\x00' 428 request['Level'] = 0 429 resp = dce.request(request) 430 resp.dump() 431 432 request['Level'] = 1 433 resp = dce.request(request) 434 resp.dump() 435 436 request['Level'] = 2 437 resp = dce.request(request) 438 resp.dump() 439 440 request['Level'] = 501 441 resp = dce.request(request) 442 resp.dump() 443 444 request['Level'] = 502 445 resp = dce.request(request) 446 resp.dump() 447 448 request['Level'] = 503 449 resp = dce.request(request) 450 resp.dump() 451 452 request['Level'] = 1005 453 resp = dce.request(request) 454 resp.dump() 455 456 def test_hNetrShareGetInfo(self): 457 dce, rpctransport = self.connect() 458 resp = srvs.hNetrShareGetInfo(dce, 'IPC$\x00', 0) 459 resp.dump() 460 461 resp = srvs.hNetrShareGetInfo(dce, 'IPC$\x00', 1) 462 resp.dump() 463 464 resp = srvs.hNetrShareGetInfo(dce, 'IPC$\x00', 2) 465 resp.dump() 466 467 resp = srvs.hNetrShareGetInfo(dce, 'IPC$\x00', 501) 468 resp.dump() 469 470 resp = srvs.hNetrShareGetInfo(dce, 'IPC$\x00', 502) 471 resp.dump() 472 473 resp = srvs.hNetrShareGetInfo(dce, 'IPC$\x00', 503) 474 resp.dump() 475 476 resp = srvs.hNetrShareGetInfo(dce, 'IPC$\x00', 1005) 477 resp.dump() 478 479 def test_NetrShareSetInfo(self): 480 dce, rpctransport = self.connect() 481 request = srvs.NetrShareGetInfo() 482 request['ServerName'] = NULL 483 request['NetName'] = 'IPC$\x00' 484 request['Level'] = 1 485 resp = dce.request(request) 486 resp.dump() 487 oldValue = resp['InfoStruct']['ShareInfo1']['shi1_remark'] 488 489 req = srvs.NetrShareSetInfo() 490 req['ServerName'] = NULL 491 req['NetName'] = 'IPC$\x00' 492 req['Level'] = 1 493 req['ShareInfo']['tag'] = 1 494 req['ShareInfo']['ShareInfo1'] = resp['InfoStruct']['ShareInfo1'] 495 req['ShareInfo']['ShareInfo1']['shi1_remark'] = 'BETUS\x00' 496 resp = dce.request(req) 497 resp.dump() 498 499 resp = dce.request(request) 500 resp.dump() 501 502 req['ShareInfo']['ShareInfo1']['shi1_remark'] = oldValue 503 resp = dce.request(req) 504 resp.dump() 505 506 def test_hNetrShareSetInfo(self): 507 dce, rpctransport = self.connect() 508 resp = srvs.hNetrShareGetInfo(dce, 'IPC$\x00', 1) 509 resp.dump() 510 oldValue = resp['InfoStruct']['ShareInfo1']['shi1_remark'] 511 512 shareInfo = resp['InfoStruct']['ShareInfo1'] 513 shareInfo['shi1_remark'] = 'BETUS\x00' 514 resp = srvs.hNetrShareSetInfo(dce, 'IPC$\x00', 1, shareInfo) 515 resp.dump() 516 517 resp = srvs.hNetrShareGetInfo(dce, 'IPC$\x00', 1) 518 resp.dump() 519 520 shareInfo['shi1_remark'] = oldValue 521 resp = srvs.hNetrShareSetInfo(dce, 'IPC$\x00', 1, shareInfo) 522 resp.dump() 523 524 def tes_hNetrShareDelSticky(self): 525 dce, rpctransport = self.connect() 526 527 shareInfo = srvs.SHARE_INFO_2() 528 shareInfo['shi2_netname'] = 'BETUSHARE\x00' 529 shareInfo['shi2_type'] = 0 530 shareInfo['shi2_remark'] = 'My Remark\x00' 531 shareInfo['shi2_max_uses'] = 0xFFFFFFFF 532 shareInfo['shi2_path'] = 'c:\\\x00' 533 shareInfo['shi2_passwd'] = NULL 534 resp = srvs.hNetrShareAdd(dce, 2, shareInfo) 535 resp.dump() 536 537 resp = srvs.hNetrShareDelSticky(dce, 'BETUSHARE\x00') 538 resp.dump() 539 540 resp = srvs.hNetrShareDel(dce, 'BETUSHARE\x00') 541 resp.dump() 542 543 def tes_NetrShareDelSticky(self): 544 dce, rpctransport = self.connect() 545 request = srvs.NetrShareAdd() 546 request['ServerName'] = NULL 547 request['Level'] = 2 548 request['InfoStruct']['tag'] = 2 549 request['InfoStruct']['ShareInfo2']['shi2_netname'] = 'BETUSHARE\x00' 550 request['InfoStruct']['ShareInfo2']['shi2_type'] = 0 551 request['InfoStruct']['ShareInfo2']['shi2_remark'] = 'My Remark\x00' 552 request['InfoStruct']['ShareInfo2']['shi2_max_uses'] = 0xFFFFFFFF 553 request['InfoStruct']['ShareInfo2']['shi2_path'] = 'c:\\\x00' 554 request['InfoStruct']['ShareInfo2']['shi2_passwd'] = NULL 555 resp = dce.request(request) 556 resp.dump() 557 558 request = srvs.NetrShareDelSticky() 559 request['ServerName'] = NULL 560 request['NetName'] = 'BETUSHARE\x00' 561 resp = dce.request(request) 562 resp.dump() 563 564 request = srvs.NetrShareDel() 565 request['ServerName'] = NULL 566 request['NetName'] = 'BETUSHARE\x00' 567 resp = dce.request(request) 568 resp.dump() 569 570 def test_NetrShareDelStart_NetrShareDelCommit(self): 571 dce, rpctransport = self.connect() 572 request = srvs.NetrShareAdd() 573 request['ServerName'] = NULL 574 request['Level'] = 2 575 request['InfoStruct']['tag'] = 2 576 request['InfoStruct']['ShareInfo2']['shi2_netname'] = 'BETUSHARE\x00' 577 request['InfoStruct']['ShareInfo2']['shi2_type'] = 0 578 request['InfoStruct']['ShareInfo2']['shi2_remark'] = 'My Remark\x00' 579 request['InfoStruct']['ShareInfo2']['shi2_max_uses'] = 0xFFFFFFFF 580 request['InfoStruct']['ShareInfo2']['shi2_path'] = 'c:\\\x00' 581 request['InfoStruct']['ShareInfo2']['shi2_passwd'] = NULL 582 resp = dce.request(request) 583 resp.dump() 584 585 request = srvs.NetrShareDelStart() 586 request['ServerName'] = NULL 587 request['NetName'] = 'BETUSHARE\x00' 588 resp = dce.request(request) 589 resp.dump() 590 591 request = srvs.NetrShareDelCommit() 592 request['ContextHandle'] = resp['ContextHandle'] 593 resp = dce.request(request) 594 resp.dump() 595 596 def test_hNetrShareDelStart_hNetrShareDelCommit(self): 597 dce, rpctransport = self.connect() 598 599 shareInfo = srvs.SHARE_INFO_2() 600 shareInfo['shi2_netname'] = 'BETUSHARE\x00' 601 shareInfo['shi2_type'] = 0 602 shareInfo['shi2_remark'] = 'My Remark\x00' 603 shareInfo['shi2_max_uses'] = 0xFFFFFFFF 604 shareInfo['shi2_path'] = 'c:\\\x00' 605 shareInfo['shi2_passwd'] = NULL 606 resp = srvs.hNetrShareAdd(dce, 2, shareInfo) 607 resp.dump() 608 609 resp = srvs.hNetrShareDelStart(dce, 'BETUSHARE\x00') 610 resp.dump() 611 612 resp = srvs.hNetrShareDelCommit(dce, resp['ContextHandle']) 613 resp.dump() 614 615 def test_NetrShareCheck(self): 616 dce, rpctransport = self.connect() 617 request = srvs.NetrShareCheck() 618 request['ServerName'] = NULL 619 request['Device'] = 'C:\\\x00' 620 resp = dce.request(request) 621 resp.dump() 622 623 def test_hNetrShareCheck(self): 624 dce, rpctransport = self.connect() 625 resp = srvs.hNetrShareCheck(dce, 'C:\\\x00') 626 resp.dump() 627 628 def test_NetrServerGetInfo(self): 629 dce, rpctransport = self.connect() 630 request = srvs.NetrServerGetInfo() 631 request['ServerName'] = NULL 632 request['Level'] = 100 633 resp = dce.request(request) 634 resp.dump() 635 636 request['Level'] = 101 637 resp = dce.request(request) 638 resp.dump() 639 640 request['Level'] = 102 641 resp = dce.request(request) 642 resp.dump() 643 644 request['Level'] = 103 645 resp = dce.request(request) 646 resp.dump() 647 648 request['Level'] = 502 649 resp = dce.request(request) 650 resp.dump() 651 652 request['Level'] = 503 653 resp = dce.request(request) 654 resp.dump() 655 656 def test_hNetrServerGetInfo(self): 657 dce, rpctransport = self.connect() 658 resp = srvs.hNetrServerGetInfo(dce, 100) 659 resp.dump() 660 661 resp = srvs.hNetrServerGetInfo(dce, 101) 662 resp.dump() 663 664 resp = srvs.hNetrServerGetInfo(dce, 102) 665 resp.dump() 666 667 resp = srvs.hNetrServerGetInfo(dce, 103) 668 resp.dump() 669 670 resp = srvs.hNetrServerGetInfo(dce, 502) 671 resp.dump() 672 673 resp = srvs.hNetrServerGetInfo(dce, 503) 674 resp.dump() 675 676 def test_NetrServerDiskEnum(self): 677 dce, rpctransport = self.connect() 678 request = srvs.NetrServerDiskEnum() 679 request['ServerName'] = NULL 680 request['ResumeHandle'] = NULL 681 request['Level'] = 0 682 request['DiskInfoStruct']['Buffer'] = NULL 683 request['PreferedMaximumLength'] = 0xffffffff 684 resp = dce.request(request) 685 resp.dump() 686 687 def test_hNetrServerDiskEnum(self): 688 dce, rpctransport = self.connect() 689 resp = srvs.hNetrServerDiskEnum(dce, 0) 690 resp.dump() 691 692 def test_NetrServerStatisticsGet(self): 693 dce, rpctransport = self.connect() 694 request = srvs.NetrServerStatisticsGet() 695 request['ServerName'] = NULL 696 request['Service'] = NULL 697 request['Level'] = 0 698 request['Options'] = 0 699 resp = dce.request(request) 700 resp.dump() 701 702 def test_hNetrServerStatisticsGet(self): 703 dce, rpctransport = self.connect() 704 resp = srvs.hNetrServerStatisticsGet(dce, NULL, 0, 0) 705 resp.dump() 706 707 def test_NetrRemoteTOD(self): 708 dce, rpctransport = self.connect() 709 request = srvs.NetrRemoteTOD() 710 request['ServerName'] = NULL 711 resp = dce.request(request) 712 resp.dump() 713 714 def test_hNetrRemoteTOD(self): 715 dce, rpctransport = self.connect() 716 resp = srvs.hNetrRemoteTOD(dce) 717 resp.dump() 718 719 def test_NetrServerTransportEnum(self): 720 dce, rpctransport = self.connect() 721 request = srvs.NetrServerTransportEnum() 722 request['ServerName'] = NULL 723 request['PreferedMaximumLength'] = 0xffffffff 724 request['ResumeHandle'] = NULL 725 request['InfoStruct']['Level'] = 0 726 request['InfoStruct']['XportInfo']['tag'] = 0 727 request['InfoStruct']['XportInfo']['Level0']['Buffer'] = NULL 728 resp = dce.request(request) 729 resp.dump() 730 731 request['InfoStruct']['Level'] = 1 732 request['InfoStruct']['XportInfo']['tag'] = 1 733 request['InfoStruct']['XportInfo']['Level1']['Buffer'] = NULL 734 resp = dce.request(request) 735 resp.dump() 736 737 request['InfoStruct']['Level'] = 2 738 request['InfoStruct']['XportInfo']['tag'] = 2 739 request['InfoStruct']['XportInfo']['Level2']['Buffer'] = NULL 740 resp = dce.request(request) 741 resp.dump() 742 743 def test_hNetrServerTransportEnum(self): 744 dce, rpctransport = self.connect() 745 resp = srvs.hNetrServerTransportEnum(dce, 0) 746 resp.dump() 747 748 resp = srvs.hNetrServerTransportEnum(dce, 1) 749 resp.dump() 750 751 resp = srvs.hNetrServerTransportEnum(dce, 2) 752 resp.dump() 753 754 def test_NetrpGetFileSecurity_NetrpSetFileSecurity(self): 755 dce, rpctransport = self.connect() 756 request = srvs.NetrpGetFileSecurity() 757 request['ServerName'] = NULL 758 request['ShareName'] = 'C$\x00' 759 request['lpFileName'] = '\\Windows\x00' 760 request['RequestedInformation'] = OWNER_SECURITY_INFORMATION 761 resp = dce.request(request) 762 resp.dump() 763 764 req = srvs.NetrpSetFileSecurity() 765 req['ServerName'] = NULL 766 req['ShareName'] = 'C$\x00' 767 req['lpFileName'] = '\\Windows\x00' 768 req['SecurityInformation'] = OWNER_SECURITY_INFORMATION 769 req['SecurityDescriptor'] = resp['SecurityDescriptor'] 770 resp = dce.request(req) 771 resp.dump() 772 773 def test_hNetrpGetFileSecurity_hNetrpSetFileSecurity(self): 774 dce, rpctransport = self.connect() 775 resp = srvs.hNetrpGetFileSecurity(dce, 'C$\x00', '\\Windows\x00', OWNER_SECURITY_INFORMATION) 776 #hexdump(resp) 777 778 resp = srvs.hNetrpSetFileSecurity(dce,'C$\x00', '\\Windows\x00', OWNER_SECURITY_INFORMATION, resp ) 779 resp.dump() 780 781 def test_NetprPathType(self): 782 dce, rpctransport = self.connect() 783 request = srvs.NetprPathType() 784 request['ServerName'] = NULL 785 request['PathName'] = '\\pagefile.sys\x00' 786 request['Flags'] = 1 787 resp = dce.request(request) 788 resp.dump() 789 790 def test_hNetprPathType(self): 791 dce, rpctransport = self.connect() 792 resp = srvs.hNetprPathType(dce, '\\pagefile.sys\x00', 1) 793 resp.dump() 794 795 def test_NetprPathCanonicalize(self): 796 dce, rpctransport = self.connect() 797 request = srvs.NetprPathCanonicalize() 798 request['ServerName'] = NULL 799 request['PathName'] = '\\pagefile.sys\x00' 800 request['OutbufLen'] = 50 801 request['Prefix'] = 'c:\x00' 802 request['PathType'] = 0 803 request['Flags'] = 0 804 resp = dce.request(request) 805 resp.dump() 806 807 def test_hNetprPathCanonicalize(self): 808 dce, rpctransport = self.connect() 809 resp = srvs.hNetprPathCanonicalize(dce, '\\pagefile.sys\x00', 'c:\x00', 50, 0, 0) 810 resp.dump() 811 812 def test_NetprPathCompare(self): 813 dce, rpctransport = self.connect() 814 request = srvs.NetprPathCompare() 815 request['ServerName'] = NULL 816 request['PathName1'] = 'c:\\pagefile.sys\x00' 817 request['PathName2'] = 'c:\\pagefile.sys\x00' 818 request['PathType'] = 0 819 request['Flags'] = 0 820 resp = dce.request(request) 821 resp.dump() 822 823 def test_hNetprPathCompare(self): 824 dce, rpctransport = self.connect() 825 resp = srvs.hNetprPathCompare(dce, 'c:\\pagefile.sys\x00', 'c:\\pagefile.sys\x00') 826 resp.dump() 827 828 def test_NetprNameValidate(self): 829 dce, rpctransport = self.connect() 830 request = srvs.NetprNameValidate() 831 request['ServerName'] = NULL 832 request['Name'] = 'Administrator\x00' 833 request['NameType'] = srvs.NAMETYPE_USER 834 request['Flags'] = 0 835 resp = dce.request(request) 836 resp.dump() 837 838 def test_hNetprNameValidate(self): 839 dce, rpctransport = self.connect() 840 resp = srvs.hNetprNameValidate(dce, 'Administrator\x00', srvs.NAMETYPE_USER) 841 resp.dump() 842 843 def test_NetprNameCanonicalize(self): 844 dce, rpctransport = self.connect() 845 request = srvs.NetprNameCanonicalize() 846 request['ServerName'] = NULL 847 request['Name'] = 'Administrator\x00' 848 request['OutbufLen'] = 50 849 request['NameType'] = srvs.NAMETYPE_USER 850 request['Flags'] = 0x80000000 851 resp = dce.request(request) 852 resp.dump() 853 854 def test_hNetprNameCanonicalize(self): 855 dce, rpctransport = self.connect() 856 resp = srvs.hNetprNameCanonicalize(dce, 'Administrator\x00', 50, srvs.NAMETYPE_USER, 0x80000000) 857 resp.dump() 858 859 def test_NetprNameCompare(self): 860 dce, rpctransport = self.connect() 861 request = srvs.NetprNameCompare() 862 request['ServerName'] = NULL 863 request['Name1'] = 'Administrator\x00' 864 request['Name2'] = 'Administrator\x00' 865 request['NameType'] = srvs.NAMETYPE_USER 866 request['Flags'] = 0x80000000 867 resp = dce.request(request) 868 resp.dump() 869 870 def test_hNetprNameCompare(self): 871 dce, rpctransport = self.connect() 872 resp = srvs.hNetprNameCompare(dce,'Administrator\x00', 'Administrator\x00',srvs.NAMETYPE_USER, 0x80000000) 873 resp.dump() 874 875 def test_NetrDfsGetVersion(self): 876 dce, rpctransport = self.connect() 877 request = srvs.NetrDfsGetVersion() 878 request['ServerName'] = NULL 879 try: 880 resp = dce.request(request) 881 resp.dump() 882 except Exception as e: 883 if e.get_error_code() != 0x2: 884 raise 885 886 def test_hNetrDfsGetVersion(self): 887 dce, rpctransport = self.connect() 888 try: 889 resp = srvs.hNetrDfsGetVersion(dce) 890 resp.dump() 891 except Exception as e: 892 if e.get_error_code() != 0x2: 893 raise 894 895 def test_NetrDfsModifyPrefix(self): 896 dce, rpctransport = self.connect() 897 request = srvs.NetrDfsModifyPrefix() 898 request['ServerName'] = NULL 899 request['Prefix'] = 'c:\\\x00' 900 try: 901 resp = dce.request(request) 902 resp.dump() 903 except Exception as e: 904 if e.get_error_code() != 0x32: 905 raise 906 907 def test_NetrDfsFixLocalVolume(self): 908 # This one I cannot make it work. It's only supported on w2k and xp 909 dce, rpctransport = self.connect() 910 request = srvs.NetrDfsFixLocalVolume() 911 request['ServerName'] = NULL 912 request['VolumeName'] = r'\??\C:\DfsShare' 913 request['EntryType'] = srvs.PKT_ENTRY_TYPE_LEAFONLY 914 request['ServiceType'] = srvs.DFS_SERVICE_TYPE_LOCAL 915 request['StgId'] = 'NONE\x00' 916 request['EntryPrefix'] = 'c:\\\x00' 917 request['RelationInfo']['Buffer'] = NULL 918 request['CreateDisposition'] = srvs.FILE_SUPERSEDE 919 try: 920 resp = dce.request(request) 921 resp.dump() 922 except Exception as e: 923 if str(e) != 'rpc_x_bad_stub_data': 924 raise 925 926 def test_NetrDfsManagerReportSiteInfo(self): 927 dce, rpctransport = self.connect() 928 request = srvs.NetrDfsManagerReportSiteInfo() 929 request['ServerName'] = NULL 930 request['ppSiteInfo'] = NULL 931 try: 932 resp = dce.request(request) 933 resp.dump() 934 except Exception as e: 935 if str(e).find('ERROR_NOT_SUPPORTED') < 0: 936 raise 937 938 def test_NetrServerAliasAdd_NetrServerAliasDel(self): 939 dce, rpctransport = self.connect() 940 request = srvs.NetrServerAliasAdd() 941 request['ServerName'] = NULL 942 request['Level'] = 0 943 request['InfoStruct']['tag'] = 0 944 request['InfoStruct']['ServerAliasInfo0']['srvai0_alias'] = 'BETOALIAS\x00' 945 request['InfoStruct']['ServerAliasInfo0']['srvai0_target'] = '%s\x00' % self.machine 946 request['InfoStruct']['ServerAliasInfo0']['srvai0_default'] = 0 947 resp = dce.request(request) 948 resp.dump() 949 950 request = srvs.NetrServerAliasDel() 951 request['ServerName'] = NULL 952 request['Level'] = 0 953 request['InfoStruct']['tag'] = 0 954 request['InfoStruct']['ServerAliasInfo0']['srvai0_alias'] = 'BETOALIAS\x00' 955 request['InfoStruct']['ServerAliasInfo0']['srvai0_target'] = '%s\x00' % self.machine 956 request['InfoStruct']['ServerAliasInfo0']['srvai0_default'] = 0 957 resp = dce.request(request) 958 resp.dump() 959 960 def test_hNetrServerAliasAdd_hNetrServerAliasDel(self): 961 dce, rpctransport = self.connect() 962 aliasInfo = srvs.SERVER_ALIAS_INFO_0() 963 aliasInfo['srvai0_alias'] = 'BETOALIAS\x00' 964 aliasInfo['srvai0_target'] = '%s\x00' % self.machine 965 aliasInfo['srvai0_default'] = 0 966 resp = srvs.hNetrServerAliasAdd(dce, 0, aliasInfo) 967 resp.dump() 968 969 resp = srvs.hNetrServerAliasDel(dce, 0, aliasInfo) 970 resp.dump() 971 972 def test_NetrServerAliasEnum(self): 973 dce, rpctransport = self.connect() 974 request = srvs.NetrServerAliasEnum() 975 request['ServerName'] = NULL 976 request['InfoStruct']['Level'] = 0 977 request['InfoStruct']['ServerAliasInfo']['tag'] = 0 978 request['InfoStruct']['ServerAliasInfo']['Level0']['Buffer'] = NULL 979 request['PreferedMaximumLength'] = 0xffffffff 980 request['ResumeHandle'] = NULL 981 try: 982 resp = dce.request(request) 983 resp.dump() 984 except Exception as e: 985 if str(e) != 'ERROR_NOT_SUPPORTED': 986 raise 987 988 def test_hNetrServerAliasEnum(self): 989 dce, rpctransport = self.connect() 990 try: 991 resp = srvs.hNetrServerAliasEnum(dce, 0) 992 resp.dump() 993 except Exception as e: 994 print(e) 995 if str(e) != 'ERROR_NOT_SUPPORTED': 996 raise 997 998 def test_NetrShareDelEx(self): 999 dce, rpctransport = self.connect() 1000 request = srvs.NetrShareAdd() 1001 request['ServerName'] = NULL 1002 request['Level'] = 2 1003 request['InfoStruct']['tag'] = 2 1004 request['InfoStruct']['ShareInfo2']['shi2_netname'] = 'BETUSHARE\x00' 1005 request['InfoStruct']['ShareInfo2']['shi2_type'] = srvs.STYPE_TEMPORARY 1006 request['InfoStruct']['ShareInfo2']['shi2_remark'] = 'My Remark\x00' 1007 request['InfoStruct']['ShareInfo2']['shi2_max_uses'] = 0xFFFFFFFF 1008 request['InfoStruct']['ShareInfo2']['shi2_path'] = 'c:\\\x00' 1009 request['InfoStruct']['ShareInfo2']['shi2_passwd'] = NULL 1010 resp = dce.request(request) 1011 resp.dump() 1012 1013 request = srvs.NetrShareDelEx() 1014 request['ServerName'] = NULL 1015 request['Level'] = 503 1016 request['ShareInfo']['tag'] = 503 1017 request['ShareInfo']['ShareInfo503']['shi503_netname'] ='BETUSHARE\x00' 1018 request['ShareInfo']['ShareInfo503']['shi503_type'] = srvs.STYPE_TEMPORARY 1019 request['ShareInfo']['ShareInfo503']['shi503_remark'] = 'My Remark\x00' 1020 request['ShareInfo']['ShareInfo503']['shi503_permissions'] = 0 1021 request['ShareInfo']['ShareInfo503']['shi503_max_uses'] = 0xFFFFFFFF 1022 request['ShareInfo']['ShareInfo503']['shi503_current_uses'] = 0 1023 request['ShareInfo']['ShareInfo503']['shi503_path'] = 'c:\\\x00' 1024 request['ShareInfo']['ShareInfo503']['shi503_passwd'] = NULL 1025 request['ShareInfo']['ShareInfo503']['shi503_servername'] = NULL 1026 request['ShareInfo']['ShareInfo503']['shi503_reserved'] = 0 1027 request['ShareInfo']['ShareInfo503']['shi503_security_descriptor'] = NULL 1028 resp = dce.request(request) 1029 resp.dump() 1030 1031 def ttt_NetrServerTransportAdd_NetrServerTransportDel(self): 1032 dce, rpctransport = self.connect() 1033 request = srvs.NetrServerTransportAdd() 1034 request['ServerName'] = NULL 1035 request['Level'] = 0 1036 request['Buffer']['svti0_numberofvcs'] = 0 1037 request['Buffer']['svti0_transportname'] = '\\Device\\NetbiosSmb\x00' 1038 request['Buffer']['svti0_transportaddress'] = list('%s'% self.machine) 1039 request['Buffer']['svti0_transportaddresslength'] = len(request['Buffer']['svti0_transportaddress']) 1040 request['Buffer']['svti0_networkaddress'] = '%s\x00' % self.machine 1041 resp = dce.request(request) 1042 resp.dump() 1043 1044 req = srvs.NetrServerTransportDel() 1045 req['ServerName'] = NULL 1046 req['Level'] = 0 1047 req['Buffer'] = request['Buffer'] 1048 resp = dce.request(req) 1049 resp.dump() 1050 1051 def ttt_NetrServerTransportAddEx_NetrServerTransportDelEx(self): 1052 dce, rpctransport = self.connect() 1053 request = srvs.NetrServerTransportAddEx() 1054 request['ServerName'] = NULL 1055 request['Level'] = 0 1056 request['Buffer']['tag'] = 0 1057 request['Buffer']['Transport0']['svti0_numberofvcs'] = 0 1058 request['Buffer']['Transport0']['svti0_transportname'] = '\\Device\\NetbiosSmb\x00' 1059 request['Buffer']['Transport0']['svti0_transportaddress'] = list('%s'% self.machine) 1060 request['Buffer']['Transport0']['svti0_transportaddresslength'] = len(request['Buffer']['Transport0']['svti0_transportaddress']) 1061 request['Buffer']['Transport0']['svti0_networkaddress'] = '%s\x00' % self.machine 1062 resp = dce.request(request) 1063 resp.dump() 1064 1065 req = srvs.NetrServerTransportDelEx() 1066 req['ServerName'] = NULL 1067 req['Level'] = 0 1068 req['Buffer']['tag'] = 0 1069 req['Buffer']['Transport0'] = request['Buffer']['Transport0'] 1070 resp = dce.request(req) 1071 resp.dump() 1072 1073 def test_NetrDfsCreateLocalPartition(self): 1074 dce, rpctransport = self.connect() 1075 request = srvs.NetrDfsCreateLocalPartition() 1076 request['ServerName'] = NULL 1077 request['ShareName'] = 'C$\x00' 1078 #request['EntryUid'] = 0 1079 request['EntryPrefix'] = 'c:\\\x00' 1080 request['ShortName'] = 'c:\\betus\x00' 1081 request['RelationInfo']['Buffer'] = NULL 1082 request['Force'] = 0 1083 try: 1084 resp = dce.request(request) 1085 resp.dump() 1086 except Exception as e: 1087 if str(e).find('ERROR_NOT_SUPPORTED') < 0: 1088 raise 1089 1090 def test_NetrDfsDeleteLocalPartition(self): 1091 dce, rpctransport = self.connect() 1092 request = srvs.NetrDfsDeleteLocalPartition() 1093 request['ServerName'] = NULL 1094 request['Prefix'] = 'c:\\\x00' 1095 try: 1096 resp = dce.request(request) 1097 resp.dump() 1098 except Exception as e: 1099 if str(e).find('ERROR_NOT_SUPPORTED') < 0: 1100 raise 1101 1102 def test_NetrDfsSetLocalVolumeState(self): 1103 dce, rpctransport = self.connect() 1104 request = srvs.NetrDfsSetLocalVolumeState() 1105 request['ServerName'] = NULL 1106 request['Prefix'] = 'c:\\\x00' 1107 request['State'] = 0x80 1108 try: 1109 resp = dce.request(request) 1110 resp.dump() 1111 except Exception as e: 1112 if str(e).find('ERROR_NOT_SUPPORTED') < 0: 1113 raise 1114 1115 def test_NetrDfsCreateExitPoint(self): 1116 # Cannot make it work, supported only on w2k and xp 1117 dce, rpctransport = self.connect() 1118 request = srvs.NetrDfsCreateExitPoint() 1119 request['ServerName'] = NULL 1120 request['Prefix'] = 'c:\\\x00' 1121 request['Type'] = srvs.PKT_ENTRY_TYPE_LEAFONLY 1122 request['ShortPrefixLen'] = 50 1123 try: 1124 resp = dce.request(request) 1125 resp.dump() 1126 except Exception as e: 1127 if str(e).find('rpc_x_bad_stub_data') < 0: 1128 raise 1129 1130 def test_NetrDfsDeleteExitPoint(self): 1131 # Cannot make it work, supported only on w2k and xp 1132 dce, rpctransport = self.connect() 1133 request = srvs.NetrDfsDeleteExitPoint() 1134 request['ServerName'] = NULL 1135 request['Prefix'] = 'c:\\\x00' 1136 request['Type'] = srvs.PKT_ENTRY_TYPE_LEAFONLY 1137 try: 1138 resp = dce.request(request) 1139 resp.dump() 1140 except Exception as e: 1141 if str(e).find('ERROR_NOT_SUPPORTED') < 0: 1142 raise 1143 1144 1145 class SMBTransport(SRVSTests): 1146 def setUp(self): 1147 SRVSTests.setUp(self) 1148 configFile = ConfigParser.ConfigParser() 1149 configFile.read('dcetests.cfg') 1150 self.username = configFile.get('SMBTransport', 'username') 1151 self.domain = configFile.get('SMBTransport', 'domain') 1152 self.serverName = configFile.get('SMBTransport', 'servername') 1153 self.password = configFile.get('SMBTransport', 'password') 1154 self.machine = configFile.get('SMBTransport', 'machine') 1155 self.hashes = configFile.get('SMBTransport', 'hashes') 1156 self.stringBinding = r'ncacn_np:%s[\PIPE\srvsvc]' % self.machine 1157 self.ts = ('8a885d04-1ceb-11c9-9fe8-08002b104860', '2.0') 1158 1159 class SMBTransport64(SRVSTests): 1160 def setUp(self): 1161 SRVSTests.setUp(self) 1162 configFile = ConfigParser.ConfigParser() 1163 configFile.read('dcetests.cfg') 1164 self.username = configFile.get('SMBTransport', 'username') 1165 self.domain = configFile.get('SMBTransport', 'domain') 1166 self.serverName = configFile.get('SMBTransport', 'servername') 1167 self.password = configFile.get('SMBTransport', 'password') 1168 self.machine = configFile.get('SMBTransport', 'machine') 1169 self.hashes = configFile.get('SMBTransport', 'hashes') 1170 self.stringBinding = r'ncacn_np:%s[\PIPE\srvsvc]' % self.machine 1171 self.ts = ('71710533-BEBA-4937-8319-B5DBEF9CCC36', '1.0') 1172 1173 1174 # Process command-line arguments. 1175 if __name__ == '__main__': 1176 import sys 1177 if len(sys.argv) > 1: 1178 testcase = sys.argv[1] 1179 suite = unittest.TestLoader().loadTestsFromTestCase(globals()[testcase]) 1180 else: 1181 suite = unittest.TestLoader().loadTestsFromTestCase(SMBTransport) 1182 suite.addTests(unittest.TestLoader().loadTestsFromTestCase(SMBTransport64)) 1183 unittest.TextTestRunner(verbosity=1).run(suite)