
    hA                        S SK r S SKr\ R                  S:X  a  S SKrS SKJr  S SKrS SKJ	r	  S SK
r \r " S S\	5      r " S S5      r\R"                  q\R&                  R)                  S5      (       a.  S SKrS SKrS SKr\R0                  q " S	 S
\R2                  5      rO
 " S S
5      rS r " S S5      r " S S\5      rS\SS4S jrS\4S jrgg! \ a    \r Nf = f)    Nwin32)IntEnumc                        \ rS rSrSrSrSrSrg)ConfigMethod             N)__name__
__module____qualname____firstlineno__RegistryWMIWin32__static_attributes__r       bC:\Users\ROHAN GUPTA\OneDrive\Desktop\mathbuddy-assessment\venv\Lib\site-packages\dns/win32util.pyr   r      s    r   r   c                       \ rS rSrS rSrg)DnsInfo   c                 .    S U l         / U l        / U l        g Ndomainnameserverssearchselfs    r   __init__DnsInfo.__init__   s    DK!DDKr   r   N)r   r   r   r   r!   r   r   r   r   r   r      s    	r   r   wmic                   4   ^  \ rS rSrU 4S jrS rS rSrU =r$ )
_WMIGetter+   c                 @   > [         TU ]  5         [        5       U l        g r   )superr!   r   info)r    	__class__s    r   r!   _WMIGetter.__init__-   s     "#I	r   c                 z   [         R                  " 5          [        R                  " 5       nUR	                  5        H  nUR
                  (       d  M  UR                  (       d  M)  [        UR                  5      U R                  l	        UR                  (       a$  [        UR                  5      U R                  l        UR                  (       a5  UR                   Vs/ s H  n[        U5      PM     snU R                  l          O   [         R                  " 5         g s  snf ! [         R                  " 5         f = fr   )	pythoncomCoInitializer#   r   !Win32_NetworkAdapterConfiguration	IPEnabledDNSServerSearchOrderlistr)   r   	DNSDomain_config_domainr   DNSDomainSuffixSearchOrderr   CoUninitialize)r    system	interfacexs       r   run_WMIGetter.run1   s    &&(/ WWYF%+%M%M%O	$...93Q3Q3Q489W9W4XDII1(223A)BUBU3V		 0(CC .7-Q-Q4"-Q %31$5-Q4"		 0 " &P ,,.4" ,,.s*   7D# D# %A8D# D2D# D# #D:c                 Z    U R                  5         U R                  5         U R                  $ r   )startjoinr)   r   s    r   get_WMIGetter.getC   s      

		yy r   r)   )	r   r   r   r   r!   r:   r?   r   __classcell__)r*   s   @r   r%   r%   +   s    &/$! !r   r%   c                       \ rS rSrSrg)r%   L   r   Nr   r   r   r   r   r   r   r   r%   r%   L   s    r   c                 v    U R                  S5      (       a  U SS  n [        R                  R                  U 5      $ )N.r   )
startswithdnsname	from_text)r   s    r   r4   r4   O   s5     S!!ABZFxx!!&))r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)_RegistryGetterW   c                 "    [        5       U l        g r   )r   r)   r   s    r   r!   _RegistryGetter.__init__X   s    	DIr   c                 B    UR                  SS5      R                  5       $ )N, )replacesplit)r    texts     r   _split_RegistryGetter._split[   s     <<S)//11r   c                     U R                  U5       HC  nX R                  R                  ;  d  M  U R                  R                  R                  U5        ME     g r   )rW   r)   r   append)r    r   nss      r   _config_nameservers#_RegistryGetter._config_nameserversc   s=    kk+.YY222II))004 /r   c                     U R                  U5       HN  n[        U5      nX R                  R                  ;  d  M)  U R                  R                  R	                  U5        MP     g r   )rW   r4   r)   r   rZ   )r    r   ss      r   _config_search_RegistryGetter._config_searchh   sG    [[("1%II,,,II$$++A. )r   c                 H    [         R                  " US5      u  p4U(       a  U R                  U5        U(       d  U(       a<   [         R                  " US5      u  pTU(       a  [	        U5      U R
                  l        Om [         R                  " US5      u  p4U(       aL  U R                  U5         [         R                  " US5      u  pTU(       a  [	        U5      U R
                  l         [         R                  " US5      u  pdUc   [         R                  " US5      u  pdU(       a  U R                  U5        g g ! [         a    S n GN/f = f! [         a     Npf = f! [         a    S n Nf = f! [         a     Nf = f! [         a    S n Nf = f! [         a    S n Nf = f)N
NameServerDomainDhcpNameServer
DhcpDomain
SearchListDhcpSearchList)winregQueryValueExWindowsErrorr\   r4   r)   r   r`   )r    keyalways_try_domainservers_domr   s          r   _config_fromkey_RegistryGetter._config_fromkeyn   s   #00lC
 ((1+#00h?FC+9#+>		(#!'!4!4S:J!KJG ,,W5!'!4!4S,!G/=c/BDII,"//\B	 ~" & 3 3C9I JIF ##F+ C    $ 
 $ #"G# (    
 $ "!F"sk   D; :E >E 0:E0 +F  F ;E
E
EEE-,E-0
E=<E= FFF! F!c                     [         R                  " USU S35      n [         R                  " US5      u  pEU[         R                  :w  a  [        e[         R                  " USU 35      n [         R                  " US5      u  puU[         R
                  :w  a  [        eUS-  (       + UR                  5         UR                  5         $ ! UR                  5         f = f! UR                  5         f = f! [         a     gf = f)NzPSYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\z\ConnectionPnpInstanceIDzSYSTEM\CurrentControlSet\Enum\ConfigFlagsr   F)ri   OpenKeyrj   REG_SZ
ValueError	REG_DWORDClose	Exception)r    lmguidconnection_keypnp_idttype
device_keyflagss           r   _is_nic_enabled_RegistryGetter._is_nic_enabled   s    , "(k+" +&,&9&9&'OV -((!'=fXF"J+)/)<)<Z)W F$4$44",, $)3; #((*"((* #((*"((* sA   C3 AC ,<C	 (C 8C3 	CC C00C3 3
D ?D c                    [         R                  " S[         R                  5      n [         R                  " US5      n U R	                  US5        UR                  5         [         R                  " US5      n Sn  [         R                  " X45      nUS-  n[         R                  " X55      n U R                  X5      (       d   UR                  5         M]  U R	                  US5        UR                  5         M  ! UR                  5         f = f! UR                  5         f = f! [         a     Of = fUR                  5         O! UR                  5         f = f UR                  5         U R                  $ ! UR                  5         f = f)z9Extract resolver configuration from the Windows registry.Nz2SYSTEM\CurrentControlSet\Services\Tcpip\ParametersTz=SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfacesr   r   F)
ri   ConnectRegistryHKEY_LOCAL_MACHINErv   rq   rz   EnumKeyr   OSErrorr)   )r    r|   
tcp_params
interfacesir}   rl   s          r   r?   _RegistryGetter.get   sP    ''f.G.GHB#^^M
'((T:$$&#^^T
'A"#)>>*#@DFA"(.."BC,'+';';B'E'E$, !$		 !% 4 4S% @ #		  $$&" !$		& "!" $$&J$$&&
99 
s   E9 C< 'E9 9E =1D& /D D& E D *D& :E <DE9 D##D& &
D30E 2D33E 6E9 EE9 9FrA   N)r   r   r   r   r!   rW   r\   r`   rq   r   r?   r   r   r   r   rM   rM   W   s'    	"	2	5
	/%	,N2	h#	r   rM   c                       \ rS rSrS rSrg)_Win32Getter   c                   ^$ [         R                  " S5      nSnSnSnSnSnSn " S S[         R                  5      m$ " S	 S
[         R                  5      n " U$4S jS[         R                  5      n	 " S S[         R                  5      n
S[        R                  4S[        R
                  4S[         R                  " U
5      4SU	4/U
l         " S S[         R                  5      n " S S[         R                  5      n " S S[         R                  5      n " S S[         R                  5      n " S S[         R                  5      n " S S[         R                  5      n " S S [         R                  5      n " S! S"[         R                  5      n " S# S$[         R                  5      n " S% S&[         R                  5      nS[        R                  4S'[        R
                  4S[         R                  " U5      4S([         R                  4S)[         R                  " U	5      4S*[         R                  " U	5      4S+[         R                  " U	5      4S,[         R                  " U
5      4S-[        R                  4S.[        R                  4S/[        R                  4S0[         R                  S1-  4S2[        R                  4S3[        R                  4S4[        R                  4S5[        R                  4S6[         R                  4/Ul        S7 nS8 n[         R                  " S95      n [         R                  " UR                  5      nUR                  UUS:U[         R                   " U5      5      nUU:X  a  OUS;:w  a  [#        S<U 35        g:Mg  [         R$                  " U[         R                  " U5      5      nUnU(       Ga  UR&                  R(                  nUS=:w  a  UR&                  R*                  nM<  UR&                  R,                  U:X  a  UR&                  R*                  nMn  UR&                  R.                  nU(       a.  [0        R2                  R5                  U5      U R6                  l        UR&                  R:                  nU(       a  UR&                  R<                  R>                  nUR&                  R@                  n S:n!U U:X  a  U" UR&                  5      n!OCU U:X  a=  [         R$                  " U[         R                  " U5      5      nU" UR&                  5      n!U!(       a?  U!U R6                  RB                  ;  a%  U R6                  RB                  RE                  U!5        UR&                  R*                  nU(       a  M  UR&                  R*                  nU(       a  GM  [G        5       n"U"RI                  5       n#U#RJ                  U R6                  l%        U R6                  $ )>z)Get the attributes using the Windows API.zIphlpapi.dllr      r	         c                   R    \ rS rSrS\R
                  4S\R                  S-  4/rSr	g)$_Win32Getter.get.<locals>.SOCKADDRV4   	sa_familysa_data   r   N
r   r   r   r   wintypesUSHORTctypesc_ubyte_fields_r   r   r   r   
SOCKADDRV4r      &     (//2 34r   r   c                   R    \ rS rSrS\R
                  4S\R                  S-  4/rSr	g)$_Win32Getter.get.<locals>.SOCKADDRV6i  r   r   r   r   Nr   r   r   r   
SOCKADDRV6r     r   r   r   c                   \   > \ rS rSrS\R
                  "  Y 5      4S\R                  4/rSr	g)(_Win32Getter.get.<locals>.SOCKET_ADDRESSi  
lpSockaddriSockaddrLengthr   N)
r   r   r   r   r   POINTERr   INTr   r   )r   s   r   SOCKET_ADDRESSr     s'    !6>>*#=>&5r   r   c                       \ rS rSrSrg)7_Win32Getter.get.<locals>.IP_ADAPTER_DNS_SERVER_ADDRESSi  r   NrE   r   r   r   IP_ADAPTER_DNS_SERVER_ADDRESSr         r   r   LengthReservedNextAddressc                   2    \ rS rSrS\R
                  4/rSrg)!_Win32Getter.get.<locals>.IF_LUIDi  Valuer   N)r   r   r   r   r   c_ulonglongr   r   r   r   r   IF_LUIDr     s    $f&8&89:r   r   c                   8    \ rS rSrS\R
                  S-  4/rSrg)-_Win32Getter.get.<locals>.NET_IF_NETWORK_GUIDi  r   r   r   N)r   r   r   r   r   r   r   r   r   r   r   NET_IF_NETWORK_GUIDr     s    $fnnr&9:;r   r   c                       \ rS rSrSrg)._Win32Getter.get.<locals>.IP_ADAPTER_PREFIX_XPi!  r   NrE   r   r   r   IP_ADAPTER_PREFIX_XPr   !  r   r   r   c                       \ rS rSrSrg)7_Win32Getter.get.<locals>.IP_ADAPTER_GATEWAY_ADDRESS_LHi$  r   NrE   r   r   r   IP_ADAPTER_GATEWAY_ADDRESS_LHr   $  r   r   r   c                   r    \ rS rSrS\R
                  S-  4S\R                  " \R                  5      4/rSr	g)/_Win32Getter.get.<locals>.IP_ADAPTER_DNS_SUFFIXi'  String   r   r   N)
r   r   r   r   r   c_wcharr   c_void_pr   r   r   r   r   IP_ADAPTER_DNS_SUFFIXr   '  s/    v~~34V^^FOO<=r   r   c                       \ rS rSrSrg)7_Win32Getter.get.<locals>.IP_ADAPTER_UNICAST_ADDRESS_LHi-  r   NrE   r   r   r   IP_ADAPTER_UNICAST_ADDRESS_LHr   -  r   r   r   c                       \ rS rSrSrg)9_Win32Getter.get.<locals>.IP_ADAPTER_MULTICAST_ADDRESS_XPi0  r   NrE   r   r   r   IP_ADAPTER_MULTICAST_ADDRESS_XPr   0  r   r   r   c                       \ rS rSrSrg)7_Win32Getter.get.<locals>.IP_ADAPTER_ANYCAST_ADDRESS_XPi3  r   NrE   r   r   r   IP_ADAPTER_ANYCAST_ADDRESS_XPr   3  r   r   r   c                       \ rS rSrSrg):_Win32Getter.get.<locals>.IP_ADAPTER_DNS_SERVER_ADDRESS_XPi6  r   NrE   r   r   r    IP_ADAPTER_DNS_SERVER_ADDRESS_XPr   6  r   r   r   c                       \ rS rSrSrg)._Win32Getter.get.<locals>.IP_ADAPTER_ADDRESSESi9  r   NrE   r   r   r   IP_ADAPTER_ADDRESSESr   9  r   r   r   IfIndexAdapterNameFirstUnicastAddressFirstAnycastAddressFirstMulticastAddressFirstDnsServerAddress	DnsSuffixDescriptionFriendlyNamePhysicalAddress   PhysicalAddressLengthFlagsMtuIfType
OperStatusc                 Z    SR                  [        [        U R                  SS 5      5      $ )NrG   r	      )r>   mapstrr   )sockaddr_ins    r   format_ipv4%_Win32Getter.get.<locals>.format_ipv4T  s%    xxC)<)<Qq)A BCCr   c                     [        SSS5       Vs/ s H.  nU R                  US-      S-  U R                  US-   S-      -  PM0     nnSR                  S U 5       5      $ s  snf )	Nr   r   r	   r   r   r   :c              3   (   #    U  H  oS  v   M
     g7f)04xNr   ).0parts     r   	<genexpr>8_Win32Getter.get.<locals>.format_ipv6.<locals>.<genexpr>e  s     @%$*%s   )ranger   r>   )sockaddr_in6r   partss      r   format_ipv6%_Win32Getter.get.<locals>.format_ipv6W  sv     #1b!_, !((Q/14|7K7KAPQETUI7VV,   xx@%@@@	s   5Ai:  No   z&Error retrieving adapter information: r   )&r   WinDLL	Structurer   ULONGDWORDr   r   c_char_pLPWSTRr   c_uintc_ulongcreate_string_buffervalueGetAdaptersAddressesbyrefprintcastcontentsr   r   r   r   rI   rJ   rK   r)   r   r   r   r   r   r   rZ   rM   r?   r   )%r    IPHLPAPI	AF_UNSPECERROR_SUCCESSGAA_FLAG_INCLUDE_PREFIXAF_INETAF_INET6IF_TYPE_SOFTWARE_LOOPBACKr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   buffer_sizebufferret_valadapter_addressescurrent_adapteroper_status
dns_suffixcurrent_dns_serversockaddrsockaddr_familyipregistry_getterr)   r   s%                                       @r   r?   _Win32Getter.get   s    }}^4H IM&0#GH(*%V-- V-- !1!1 0@0@  8>>*X^^,(EFGN+	6)2;&** ;<f&6&6 <v'7'7 0@0@ (8(8 0@0@ &2B2B 0@0@ 63C3C v'7'7  8>>*HNN+(<=>0&~(FG&~(FG(&..*HI+NN#@A hoo.01"FNNQ$67((..9(..)'8>>*v}}-)- )0DA  !../K44[5F5FG"77+LL- m+_B7)LM " !'';<! 0O! .66AA!#&5&>&>&C&CO #++226OO&5&>&>&C&CO -55??
'*xx'9'9*'EDII$%4%=%=%S%S"(1::BBMMH&.&7&7&A&AOB&'1():):;(H4#);;x
9S#T():):;TYY%:%:: II1188<);)D)D)I)I& )(" #2":":"?"?I "/N ./O"&&(D#{{DII99r   r   N)r   r   r   r   r?   r   r   r   r   r   r      s    x	r   r   methodreturnc                     U q g r   )_config_method)r!  s    r   set_config_methodr%    s    r   c                      [         [        R                  :X  a  [        5       n U R                  5       $ [         [        R                  :X  a  [        5       n U R                  5       $ [        5       n U R                  5       $ )zExtract resolver configuration.)r$  r   r   r   r   r%   rM   r?   )getters    r   get_dns_infor(    s`    \///!^F
 zz|	 |///\F zz| %&Fzz|r   ) sysdns._featuresrI   platformr   ctypes.wintypesr   ri   enumr   dns.namerk   ro   	NameErrorr{   r   r   r   r$  	_featureshave	threadingr-   r#   r   Threadr%   r4   rM   r   r%  r(  r   r   r   <module>r4     s    
  <<7&!w 
  "**N
}}%   &))	!)) 	!B	 	*U Unz zx ,  4  ' O   ! !s   C C"!C"