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)