Re: Creating DCE/RPC Requests

Michael B Allen <[email protected]>
Newsgroups gmane.network.samba.java
Message-ID <CAGMFw4i0WmZ=P0=daQ633uxPJU6e8V7pCGxUNf=PPWfTb9Bemg@mail.gmail.com>
On Wed, Jan 4, 2012 at 2:04 AM, [email protected]
<[email protected]> wrote:
> Hi,
>
>
>
> I am currently digging into using the DCE/RPC parts of JCIFS. Unfortunately
> I am running into problems.
>
> Iused midlc (Version 0.6.1) To generate a JCIFS compatible stub for the
> svcctl Service and am now trying to call it. Unfortunately I am getting
> “jcifs.dcerpc.DcerpcException: DCERPC_FAULT_PROTO_ERROR”
>
>
>
> Here comes my code:
>
>
>
>             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);           ßThe Exception
> is thrown when executing this line.
>
>                 if (openSCManagerRpc.retval != 0) {
>
>                     throw new SmbException(openSCManagerRpc.retval, true);
>
>                 }
>
>             } catch(Exception e) {
>
>                 e.printStackTrace();
>
>             } finally {
>
>                 try {
>
>                     handle.close();
>
>                 } catch(IOException ioe) {
>
>                     ioe.printStackTrace();
>
>                 }
>
>             }
>
>
>
> So what am I doing wrong? I would be really glad if you could help me get
> started, as Googling doesn’t seem to get me very far (There seems to be
> almost no information on this available)

Hi Chris,

The IDL is probably wrong. Look at Samba IDL. There is a lot of IDL
available in Microsoft documentation now too. Note that midlc only
understands a small critical subset of MIDL. In practice you really
need to get two captures and compare them side-by-side to verify that
the NDR segments are encoded in an identical way. This is true even if
you get it to actually work.

Mike

-- 
Michael B Allen
Java Active Directory Integration
http://www.ioplex.com/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.