3 V[@sDdZddlZddlZddZddZddZed kr@ed edS) a} $Id$ Extract a list of TCP/IP name servers from the registry 0.1 0.1 Strobl 2001-07-19 Usage: RegistryResolve() returns a list of ip numbers (dotted quads), by scouring the registry for addresses of name servers Tested on Windows NT4 Server SP6a, Windows 2000 Pro SP2 and Whistler Pro (XP) Build 2462 and Windows ME ... all having a different registry layout wrt name servers :-/ Todo: Program doesn't check whether an interface is up or down (c) 2001 Copyright by Wolfgang Strobl ws@mystrobl.de, License analog to the current Python license WARNING: Python3 port completely untested on Windows. NcCst|ddkrtg}xdtt|dD]P}|dd}|dd}g}x|D]}|jtt|qPW|jdj|q*W|S)z6convert a binary array of ip adresses to a python listrN.)lenEnvironmentErrorrangeappendstrordjoin)sZolis1Zipjr/usr/lib/python3.6/win32dns.py binipdisplays   rcCsddl}ttt|jd|S)zsconvert "d.d.d.d,d.d.d.d" to ["d.d.d.d","d.d.d.d"]. also handle u'd.d.d.d d.d.d.d', as reporting on SF rNz[ ,])relistmaprsplit)r rrrr stringdisplay)src 4Csvg}tjdtj}ytj|d}Wndtk ry:tj|d}tj|d\}}|rj||krj|jt|Wntk rYnX|SXytj|ddj}Wn tj|ddj}YnX|r|}tj|dd}tj |ytj|d}xt dD]t}yTtj ||}tj||}tj|d\}} tj|d \} } |jt | tj |Wntk rlPYnXqWtj |Wntk rYnXytj|d }xt dD]}yptj ||}tj||}y2tj|d\}}|r||kr|jt|Wntk rYnXtj |Wntk r<PYnXqWtj |Wntk rfYnXtj ||S) Nz2SYSTEM\CurrentControlSet\Services\Tcpip\Parametersz+SYSTEM\CurrentControlSet\Services\VxD\MSTCPZ NameServerZDhcpNameServerrzHSYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DNSRegisteredAdaptersiZDNSServerAddressCountZDNSServerAddressesz=SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces) winregZConnectRegistryHKEY_LOCAL_MACHINEOpenKeyrZ QueryValueExextendrrZCloseKeyrZEnumKeyr) Z nameserversxyZ nameserverZ dummytyper nzZdnscountZ dnscounttypeZ dnsvaluesZ dnsvaluestyperrrRegistryResolve0s|          r__main__z Name servers:)__doc__rrrrr__name__printrrrrsD