Workaround for WMI client over IPv6

Some years ago, I wrote some examples for the WMI client on Linux. I still get a lot of queries from people trying to use the WMI client to access Windows hosts and I am often happy to help if there are any problems.

One of the latest problems occurred when trying to access a Windows host over IPv6:

$ wmic -U 'user%password' //FD00:180::0:0:0:0:0 "Select Caption From Win32_OperatingSystem" [..] UNKNOWN - The WMI query had problems. The error text from wmic is: [librpc/rpc/dcerpc_util.c:343:dcerpc_parse_binding()] Unknown dcerpc transport 'FD00' [librpc/rpc/dcerpc_connect.c:337:dcerpc_pipe_connect_ncacn_ip_tcp_recv()] failed NT status (c0000017) in dcerpc_pipe_connect_ncacn_ip_tcp_recv [librpc/rpc/dcerpc_connect.c:828:dcerpc_pipe_connect_b_recv()] failed NT status (c0000017) in dcerpc_pipe_connect_b_recv [wmi/wmic.c:196:main()] ERROR: Login to remote object. NTSTATUS: NT_STATUS_NO_MEMORY - Memory allocation error

This was quite a funny problem, because the same query seemed to work when accessing the host over IPv4. So we quickly suspected that the WMI client does not support IPv6. By looking at the underlying Samba code (e.g. dcerpc_util.c and binding.c), I guessed that this seems to be a parsing issue of some kind.

Read the rest of this entry »

Now with IPv6

Well, you’ve got to go with the time. krenger.ch is now reachable through IPv6 thanks to the IPv6 support of HostEurope:

simon@atlas:~$ ping6 www.krenger.ch
PING www.krenger.ch(2a01:488:66:1000:53a9:2967:0:1) 56 data bytes
64 bytes from 2a01:488:66:1000:53a9:2967:0:1: icmp_seq=1 ttl=64 time=0.022 ms
64 bytes from 2a01:488:66:1000:53a9:2967:0:1: icmp_seq=2 ttl=64 time=0.035 ms
64 bytes from 2a01:488:66:1000:53a9:2967:0:1: icmp_seq=3 ttl=64 time=0.042 ms