[jcifs] Calling NetServerEnum2 with no domain parameter

Chris Bearchell chris-bearchell at softwareimaging.com
Thu Nov 12 06:26:25 MST 2009


Hi,

I have an application, running on a phone, from which I would like to enumerate
available domains/workgroups. I've been trying the following:

SmbFile root = new SmbFile("smb://", NtlmPasswordAuthentication.ANONYMOUS);
SmbFile[] domains = root.listFiles();

The problem I was seeing was that the server responds with error 2320 (The
computer is not active in this domain). Digging deeper with Wireshark I noticed
that when calling the Windows API NetServerEnum() I see the following
NetServerEnum2 request:

Microsoft Windows Lanman Remote API Protocol
  Function Code: NetServerEnum2 (104)
  Parameter Descriptor: WrLehDO
  Return Descriptor: B16BBDz
  Detail Level: 1
  Receive Buffer Length: 4200
  Server Type: 0x80000000
  Enumeration Domain (Null pointer)

However, from the phone I see the following request

Microsoft Windows Lanman Remote API Protocol
  Function Code: NetServerEnum2 (104)
  Parameter Descriptor: WrLehDz
  Return Descriptor: B16BBDz
  Detail Level: 1
  Receive Buffer Length: 16384
  Server Type: 0x80000000
  Enumeration Domain (Null pointer)

The obvious difference was the parameter descriptor, which put me on to the
following from the Microsoft Open Specifications Developer Center:

http://msdn.microsoft.com/en-us/library/cc240217%28PROT.10%29.aspx
'ParamDesc (variable): MUST be set to "WrLehDO" if the Domain parameter is not
specified, or set to "WrLehDz".'


Looking at NetServerEnum2.java, "WrLehDz" is always specified for a
NetServerEnum2 request regardless of the domain parameter. I would like to
contribute a fix for this issue. I am new to jCIFS and this list and am not sure
on how I can proceed. Could someone on the list advise? 

Thanks,
Chris




More information about the jCIFS mailing list