2012-01-04 1 views
0

J'essaie actuellement de faire quelque chose de similaire à PSExec mais entièrement en Java. Je pense que mon problème n'est pas directement lié à ce que je fais, mais comment. Actuellement, j'essaie d'implémenter la création et le démarrage d'un service à distance. Pour cela, j'ai mis la main sur l'outil midlc (version 0.6.1) et étendu le svcctl.idl avec les appels CreateService et DeleteService. Après cela, j'ai utilisé midlc pour générer du code pour l'utilisation avec jcifs (-t jcifs). J'ai ensuite créé un programme de test pour utiliser cette classe et jcifs pour communiquer avec une machine Windows distante.Obtention de nca_proto_error/DCERPC_FAULT_PROTO_ERROR lors de l'utilisation de JCIFS pour communiquer avec une instance Windows distante

Voici le code pour que:

 rpc.policy_handle scHandle = new rpc.policy_handle(); 
     SvcCtl.OpenSCManager openSCManagerRpc = new SvcCtl.OpenSCManager(host, null, 0x0001 | 0x0002, scHandle); 

     // Connection-oriented DCE/RPC over SMB named pipes. 
     DcerpcHandle handle = DcerpcHandle.getHandle("ncacn_np:" + host + "[\\PIPE\\svcctl]", 
       ConcurrentNtlmAuthenticator.getInstance().getNtlmPasswordAuthentication()); 
     try { 
      handle.sendrecv(openSCManagerRpc); 
      if (openSCManagerRpc.retval != 0) { 
       throw new SmbException(openSCManagerRpc.retval, true); 
      } 
     } catch(Exception e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       handle.close(); 
      } catch(IOException ioe) { 
       ioe.printStackTrace(); 
      } 
     } 

Malheureusement, je reçois un alias DCERPC_FAULT_PROTO_ERROR nca_proto_error alias 0x1c01000b

Ma question est simple ... ce que je fais mal?

Chris

Répondre

Questions connexes