o
    j
                     @   s
  d dl mZ d dl mZ d dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZ d dlmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ ed	Zed
ZeZe	Ze	Ze	Z d Z!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6d Z7d!Z8d"Z9d#Z:d$Z;d%Z<d&Z=d'Z>d(Z?d)Z@d*ZAd+ZBd,ZCd-ZDd.ZEd/ZFd0ZGd1ZHd2ZId3ZJd4ZKd5ZLd6ZMd7ZNd8ZOd9ZPd:ZQd;ZRd<ZSd=ZTd>ZUd?ZVd@ZWdAZXdBZYdCZZdDZ[dEZ\dFZ]dGZ^dHZ_dIZ`dJZadKZbdLZcdMZddNZedOZfdPZgdQZhdRZidSZjdTZkdUZldVZmdWZndXZodYZpdZZqd[Zrd\Zsd]Ztd^Zud_Zvd`ZwdaZxdbZydcZzddZ{deZ|dfZ}dgZ~dhZdiZdjZdkZdlZdmZdnZdoZdpZdqZdrZdsZdtZduZdvZdwZdxZdyZdzZd{Zd|Zd}Zd~ZdZdZdZdZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZeZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG ddĄ deZG ddƄ deZG ddȄ deZG ddʄ deZG dd̄ deZG dd΄ deZG ddЄ deZG dd҄ deZG ddԄ deZG ddք deZG dd؄ deZG ddڄ deZG dd܄ deZG ddބ deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd  d eZG dd deZG dd deZG dd deZG dd deZG d	d
 d
eZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd  d eZG d!d" d"eZG d#d$ d$eZG d%d& d&eZG d'd( d(eZG d)d* d*eZG d+d, d,eZG d-d. d.eZG d/d0 d0eZG d1d2 d2eZG d3d4 d4eZG d5d6 d6eZG d7d8 d8eZG d9d: d:eZG d;d< d<eZG d=d> d>eZG d?d@ d@eZeefeefeefeefeefeefeefeefeefeefeefeefeefdAZdBdC ZdDdE ZejefdFdGZejedHfdIdJZe!eeejedHfdKdLZ e!eeejefdMdNZejefdOdPZd\dQdRZd\dSdTZd\dUdVZd]dWdXZeɐjdHfdYdZZd[S (^      )division)print_function)system_errors)LPWSTRULONGNULLDWORDBOOLBYTELPDWORDWORD)NDRCALLNDRUniConformantArray
NDRPOINTER	NDRSTRUCTNDRENUMNDRUNION)DCERPCException)Enum)uuidtup_to_bin)z$6BFFD098-A112-3610-9833-46C3F874532D1.0)z$5B821720-F63B-11D0-AAD2-00C04FC324DBr      i N  i!N  i"N  i#N  i$N  i%N  i&N  i'N  i)N  i*N  i+N  i,N  i-N  i.N  i/N  i0N  i1N  i2N  i3N  i4N  i5N  i6N  i7N  i8N  i9N  i:N  i;N  i<N  i=N  i>N  i@N  iAN  iBN  iDN  iEN  iFN  iGN  iHN  iIN  iJN  iKN  iLN  iMN  iNN  iON  iPN  iQN  iRN  iSN  iTN  iUN  iVN  iWN  iXN  iYN  ifN  igN  ihN  iiN  ijN  ikN  ilN  imN  inN  ioN  ipN  iqN  irN  isN  itN  iuN  ivN  iwN  ixN  iyN  i{N  i|N  i}N  i~N  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  iN  c                   @   s2   e Zd ZedededediZd
ddZdd	 Z	dS )DCERPCSessionError)ERROR_DHCP_JET_ERRORz;An error occurred while accessing the DHCP server database.)ERROR_DHCP_SUBNET_NOT_PRESENTz)The specified IPv4 subnet does not exist.)ERROR_DHCP_SUBNET_EXISTSa  The IPv4 scope parameters are incorrect. Either the IPv4 scope already exists, corresponding to the SubnetAddress and SubnetMask members of the structure DHCP_SUBNET_INFO (section 2.2.1.2.8), or there is a range overlap of IPv4 addresses between those associated with the SubnetAddress and SubnetMask fields of the new IPv4 scope and the subnet address and mask of an already existing IPv4 scope)ERROR_DHCP_INVALID_DHCP_CLIENTz<The DHCP server received an invalid message from the client.Nc                 C   s   t | ||| d S )N)r   __init__)selferror_string
error_codepacket r"   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/impacket/dcerpc/v5/dhcpm.pyr      s   zDCERPCSessionError.__init__c                 C   s|   | j }|tjv rtj| d }tj| d }d| j ||f S || jv r9| j| d }| j| d }d| j ||f S d| j  S )Nr      z(DHCPM SessionError: code: 0x%x - %s - %sz,DHCPM SessionError: unknown error code: 0x%x)r    r   ERROR_MESSAGES)r   keyerror_msg_shorterror_msg_verboser"   r"   r#   __str__   s   


zDCERPCSessionError.__str__)NNN)
__name__
__module____qualname__r   r   r   r   r%   r   r)   r"   r"   r"   r#   r      s    
r   c                   @      e Zd ZG dd deZdS )DHCP_SEARCH_INFO_TYPEc                   @   s   e Zd ZdZdZdZdS )zDHCP_SEARCH_INFO_TYPE.enumItemsr   r$      N)r*   r+   r,   DhcpClientIpAddressDhcpClientHardwareAddressDhcpClientNamer"   r"   r"   r#   	enumItems   s    r3   Nr*   r+   r,   r   r3   r"   r"   r"   r#   r.          r.   c                   @   r-   )QuarantineStatusc                   @   s(   e Zd ZdZdZdZdZdZdZdZ	dS )	zQuarantineStatus.enumItemsr   r$   r/   r            N)
r*   r+   r,   NOQUARANTINERESTRICTEDACCESS
DROPPACKET	PROBATIONEXEMPTDEFAULTQUARSETTING
NOQUARINFOr"   r"   r"   r#   r3      s    r3   Nr4   r"   r"   r"   r#   r6      r5   r6   c                   @   s"   e Zd ZdefdefdeffZdS )DHCP_HOST_INFO	IpAddressNetBiosNameHostNameN)r*   r+   r,   DHCP_IP_ADDRESSr   	structurer"   r"   r"   r#   rA      
    rA   c                   @   s   e Zd ZdZdS )
BYTE_ARRAYcN)r*   r+   r,   itemr"   r"   r"   r#   rH          rH   c                   @      e Zd ZdeffZdS )PBYTE_ARRAYDataN)r*   r+   r,   rH   referentr"   r"   r"   r#   rM          rM   c                   @      e Zd ZdefdeffZdS )DHCP_BINARY_DATA
DataLengthData_N)r*   r+   r,   r   rM   rF   r"   r"   r"   r#   rR          rR   c                   @      e Zd ZdefdeffZdS )	DATE_TIMEdwLowDateTimedwHighDateTimeNr*   r+   r,   r   rF   r"   r"   r"   r#   rW     rU   rW   c                   @   sX   e Zd Zdefdefdefdefdefdefdefde	fd	e	fd
e
fdefdeffZdS )DHCP_CLIENT_INFO_VQClientIpAddress
SubnetMaskClientHardwareAddress
ClientNameClientCommentClientLeaseExpires	OwnerHostbClientTypeAddressStateStatusProbationEndsQuarantineCapableN)r*   r+   r,   rE   DHCP_IP_MASKDHCP_CLIENT_UIDr   rW   rA   r
   r6   r	   rF   r"   r"   r"   r#   r[   
  s    r[   c                   @   s.   e Zd Zejdefejdefejde	fiZ
dS )DHCP_CLIENT_SEARCH_UNIONr\   r^   r_   N)r*   r+   r,   r.   r0   rE   r1   ri   r2   r   unionr"   r"   r"   r#   rj     s
    


rj   c                   @   rQ   )DHCP_SEARCH_INFO
SearchType
SearchInfoN)r*   r+   r,   r.   rj   rF   r"   r"   r"   r#   rl   !  rU   rl   c                	   @   s@   e Zd Zdefdefdefdefdefdefdefde	ffZ
d	S )
DHCP_CLIENT_INFO_V4r\   r]   r^   r_   r`   ra   rb   rc   Nr*   r+   r,   rE   rh   ri   r   rW   rA   r
   rF   r"   r"   r"   r#   ro   (  s    ro   c                
   @   sF   e Zd Zdefdefdefdefdefdefdefde	fd	e	ff	Z
d
S )DHCP_CLIENT_INFO_V5r\   r]   r^   r_   r`   ra   rb   rc   rd   Nrp   r"   r"   r"   r#   rq   4  s    rq   c                   @   rL   )LPDHCP_CLIENT_INFO_V4rN   N)r*   r+   r,   ro   rO   r"   r"   r"   r#   rr   A  rP   rr   c                   @   rL   )LPDHCP_CLIENT_INFO_V5rN   N)r*   r+   r,   rq   rO   r"   r"   r"   r#   rs   F  rP   rs   c                   @   sd   e Zd Zdefdefdefdefdefdefdefde	fd	e	fd
e
fdefdefdefdeffZdS )DHCP_CLIENT_INFO_PBr\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   FilterStatus
PolicyNameN)r*   r+   r,   rE   rh   ri   r   rW   rA   r
   r6   r	   r   rF   r"   r"   r"   r#   rt   L  s     rt   c                   @   rL   )LPDHCP_CLIENT_INFO_PBrN   N)r*   r+   r,   rt   rO   r"   r"   r"   r#   rw   ^  rP   rw   c                   @   rL   )LPDHCP_CLIENT_INFO_VQrN   N)r*   r+   r,   r[   rO   r"   r"   r"   r#   rx   c  rP   rx   c                   @      e Zd ZeZdS )DHCP_CLIENT_INFO_VQ_ARRAYN)r*   r+   r,   rx   rJ   r"   r"   r"   r#   rz   h  rK   rz   c                   @   rL   )LPDHCP_CLIENT_INFO_VQ_ARRAYrN   N)r*   r+   r,   rz   rO   r"   r"   r"   r#   r{   k  rP   r{   c                   @   rQ   )DHCP_CLIENT_INFO_ARRAY_VQNumElementsClientsN)r*   r+   r,   r   r{   rF   r"   r"   r"   r#   r|   p  rU   r|   c                   @   rL   )LPDHCP_CLIENT_INFO_ARRAY_VQrN   N)r*   r+   r,   r|   rO   r"   r"   r"   r#   r   v  rP   r   c                   @   ry   )DHCP_CLIENT_INFO_V4_ARRAYN)r*   r+   r,   rr   rJ   r"   r"   r"   r#   r   {  rK   r   c                   @   ry   )DHCP_CLIENT_INFO_V5_ARRAYN)r*   r+   r,   rs   rJ   r"   r"   r"   r#   r   ~  rK   r   c                   @   rL   )LPDHCP_CLIENT_INFO_V4_ARRAYrN   N)r*   r+   r,   r   rO   r"   r"   r"   r#   r     rP   r   c                   @   rL   )LPDHCP_CLIENT_INFO_V5_ARRAYrN   N)r*   r+   r,   r   rO   r"   r"   r"   r#   r     rP   r   c                   @   rQ   )DHCP_CLIENT_INFO_ARRAY_V4r}   r~   N)r*   r+   r,   r   r   rF   r"   r"   r"   r#   r     rU   r   c                   @   rQ   )DHCP_CLIENT_INFO_ARRAY_V5r}   r~   N)r*   r+   r,   r   r   rF   r"   r"   r"   r#   r     rU   r   c                   @   rL   )LPDHCP_CLIENT_INFO_ARRAY_V5rN   N)r*   r+   r,   r   rO   r"   r"   r"   r#   r     rP   r   c                   @   rL   )LPDHCP_CLIENT_INFO_ARRAY_V4rN   N)r*   r+   r,   r   rO   r"   r"   r"   r#   r     rP   r   c                   @   ry   )DHCP_IP_ADDRESS_ARRAYN)r*   r+   r,   rE   rJ   r"   r"   r"   r#   r     rK   r   c                   @   rL   )LPDHCP_IP_ADDRESS_ARRAYrN   N)r*   r+   r,   r   rO   r"   r"   r"   r#   r     rP   r   c                   @   rQ   )DHCP_IP_ARRAYr}   ElementsN)r*   r+   r,   r   r   rF   r"   r"   r"   r#   r     rU   r   c                   @   r-   )DHCP_SUBNET_STATEc                   @       e Zd ZdZdZdZdZdZdS )zDHCP_SUBNET_STATE.enumItemsr   r$   r/   r   r7   N)r*   r+   r,   DhcpSubnetEnabledDhcpSubnetDisabledDhcpSubnetEnabledSwitchedDhcpSubnetDisabledSwitchedDhcpSubnetInvalidStater"   r"   r"   r#   r3         r3   Nr4   r"   r"   r"   r#   r     r5   r   c                   @   s4   e Zd ZdefdefdefdefdefdeffZdS )DHCP_SUBNET_INFOSubnetAddressr]   
SubnetNameSubnetCommentPrimaryHostSubnetStateN)	r*   r+   r,   rE   rh   r   rA   r   rF   r"   r"   r"   r#   r     s    r   c                   @   rL   )LPDHCP_SUBNET_INFOrN   N)r*   r+   r,   r   rO   r"   r"   r"   r#   r     rP   r   c                   @   r-   )DHCP_OPTION_SCOPE_TYPEc                   @   r   )z DHCP_OPTION_SCOPE_TYPE.enumItemsr   r$   r/   r   r7   N)r*   r+   r,   DhcpDefaultOptionsDhcpGlobalOptionsDhcpSubnetOptionsDhcpReservedOptionsDhcpMScopeOptionsr"   r"   r"   r#   r3     r   r3   Nr4   r"   r"   r"   r#   r     r5   r   c                   @   rV   )DHCP_RESERVED_SCOPEReservedIpAddressReservedIpSubnetAddressNr*   r+   r,   rE   rF   r"   r"   r"   r#   r     rU   r   c                   @   s:   e Zd Zejdejdejdefejde	fej
defiZdS )DHCP_OPTION_SCOPE_UNIONr"   SubnetScopeInfoReservedScopeInfo
MScopeInfoN)r*   r+   r,   r   r   r   r   rE   r   r   r   r   rk   r"   r"   r"   r#   r     s    


r   c                   @   rQ   )DHCP_OPTION_SCOPE_INFO	ScopeType	ScopeInfoN)r*   r+   r,   r   r   rF   r"   r"   r"   r#   r     rU   r   c                   @      e Zd ZdefZdS )LPDHCP_OPTION_SCOPE_INFOrN   N)r*   r+   r,   r   rO   r"   r"   r"   r#   r         r   c                   @   rV   )DWORD_DWORDDWord1DWord2NrZ   r"   r"   r"   r#   r     rU   r   c                   @   s.   e Zd ZdefdefdefdefdeffZdS )DHCP_BOOTP_IP_RANGEStartAddress
EndAddressBootpAllocatedMaxBootpAllowedN)r*   r+   r,   rE   r   rF   r"   r"   r"   r#   r         r   c                   @   s"   e Zd ZdefdefdeffZdS )DHCP_IP_RESERVATION_V4r   ReservedForClientbAllowedClientTypesN)r*   r+   r,   rE   ri   r
   rF   r"   r"   r"   r#   r     rG   r   c                   @   rV   )DHCP_IP_RANGEr   r   Nr   r"   r"   r"   r#   r     rU   r   c                   @   rQ   )DHCP_IP_CLUSTERClusterAddressClusterMaskN)r*   r+   r,   rE   r   rF   r"   r"   r"   r#   r     rU   r   c                   @   r-   )DHCP_SUBNET_ELEMENT_TYPEc                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
d	S )
z"DHCP_SUBNET_ELEMENT_TYPE.enumItemsr   r$   r/   r   r7   r8   r9      N)r*   r+   r,   DhcpIpRangesDhcpSecondaryHostsDhcpReservedIpsDhcpExcludedIpRangesDhcpIpUsedClustersDhcpIpRangesDhcpOnlyDhcpIpRangesDhcpBootpDhcpIpRangesBootpOnlyr"   r"   r"   r#   r3     s    r3   Nr4   r"   r"   r"   r#   r   
  r5   r   c                   @   sB   e Zd Zejdefejdefejde	fej
defejdefiZdS )DHCP_SUBNET_ELEMENT_UNION_V5IpRangeSecondaryHost
ReservedIpExcludeIpRangeIpUsedClusterN)r*   r+   r,   r   r   r   r   rA   r   r   r   r   r   r   rk   r"   r"   r"   r#   r     s    




r   c                   @   rQ   )DHCP_SUBNET_ELEMENT_DATA_V5ElementTypeElementN)r*   r+   r,   r   r   rF   r"   r"   r"   r#   r     rU   r   c                   @   ry   )LPDHCP_SUBNET_ELEMENT_DATA_V5N)r*   r+   r,   r   rJ   r"   r"   r"   r#   r   $  rK   r   c                   @   rQ   )!DHCP_SUBNET_ELEMENT_INFO_ARRAY_V5r}   r   N)r*   r+   r,   r   r   rF   r"   r"   r"   r#   r   '  rU   r   c                   @   r   )#LPDHCP_SUBNET_ELEMENT_INFO_ARRAY_V5rN   N)r*   r+   r,   r   rO   r"   r"   r"   r#   r   -  r   r   c                   @   r-   )DHCP_OPTION_DATA_TYPEc                   @   s0   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
S )zDHCP_OPTION_DATA_TYPE.enumItemsr   r$   r/   r   r7   r8   r9   r      N)r*   r+   r,   DhcpByteOptionDhcpWordOptionDhcpDWordOptionDhcpDWordDWordOptionDhcpIpAddressOptionDhcpStringDataOptionDhcpBinaryDataOptionDhcpEncapsulatedDataOptionDhcpIpv6AddressOptionr"   r"   r"   r#   r3   3  s    r3   Nr4   r"   r"   r"   r#   r   2  r5   r   c                   @   st   e Zd ZdeffZejdefejdefej	de
fejdefejdefejdefejdefejd	efejd
efi	ZdS )DHCP_OPTION_ELEMENT_UNIONtag
ByteOption
WordOptionDWordOptionDWordDWordOptionIpAddressOptionStringDataOptionBinaryDataOptionEncapsulatedDataOptionIpv6AddressDataOptionN)r*   r+   r,   r   	commonHdrr   r
   r   r   r   r   r   r   r   rE   r   r   r   rR   r   r   rk   r"   r"   r"   r#   r   >  s    








r   c                   @   rQ   )DHCP_OPTION_DATA_ELEMENT
OptionTyper   N)r*   r+   r,   r   r   rF   r"   r"   r"   r#   r   N  rU   r   c                   @   ry   )DHCP_OPTION_DATA_ELEMENT_ARRAY2N)r*   r+   r,   r   rJ   r"   r"   r"   r#   r   T  rK   r   c                   @   rL   )LPDHCP_OPTION_DATA_ELEMENTrN   N)r*   r+   r,   r   rO   r"   r"   r"   r#   r   W  rP   r   c                   @   rQ   )DHCP_OPTION_DATAr}   r   N)r*   r+   r,   r   r   rF   r"   r"   r"   r#   r   \  rU   r   c                   @   rQ   )DHCP_OPTION_VALUEOptionIDValueN)r*   r+   r,   DHCP_OPTION_IDr   rF   r"   r"   r"   r#   r   b  rU   r   c                   @   rL   )PDHCP_OPTION_VALUErN   N)r*   r+   r,   r   rO   r"   r"   r"   r#   r   h  rP   r   c                   @   ry   )DHCP_OPTION_VALUE_ARRAY2N)r*   r+   r,   r   rJ   r"   r"   r"   r#   r   m  rK   r   c                   @   rL   )LPDHCP_OPTION_VALUErN   N)r*   r+   r,   r   rO   r"   r"   r"   r#   r   p  rP   r   c                   @   rQ   )DHCP_OPTION_VALUE_ARRAYr}   ValuesN)r*   r+   r,   r   r   rF   r"   r"   r"   r#   r   u  rU   r   c                   @   rL   )LPDHCP_OPTION_VALUE_ARRAYrN   N)r*   r+   r,   r   rO   r"   r"   r"   r#   r   {  rP   r   c                   @   s(   e Zd ZdefdefdefdeffZdS )DHCP_ALL_OPTION_VALUES	ClassName
VendorNameIsVendorOptionsArrayN)r*   r+   r,   r   r	   r   rF   r"   r"   r"   r#   r         r   c                   @   ry   )OPTION_VALUES_ARRAYN)r*   r+   r,   r   rJ   r"   r"   r"   r#   r    rK   r  c                   @   rL   )LPOPTION_VALUES_ARRAYrN   N)r*   r+   r,   r  rO   r"   r"   r"   r#   r    rP   r  c                   @   s"   e Zd ZdefdefdeffZdS )DHCP_ALL_OPTIONS_VALUESFlagsr}   OptionsN)r*   r+   r,   r   r  rF   r"   r"   r"   r#   r    rG   r  c                   @   rL   )LPDHCP_ALL_OPTION_VALUESrN   N)r*   r+   r,   r  rO   r"   r"   r"   r#   r    rP   r  c                   @       e Zd ZdZdefdeffZdS )DhcpGetSubnetInfor/   ServerIpAddressr   N)r*   r+   r,   opnumDHCP_SRV_HANDLErE   rF   r"   r"   r"   r#   r    
    r  c                   @   rQ   )DhcpGetSubnetInfoResponse
SubnetInfo	ErrorCodeN)r*   r+   r,   r   r   rF   r"   r"   r"   r#   r    rU   r  c                   @   &   e Zd ZdZdefdefdeffZdS )DhcpEnumSubnetsr   r	  ResumeHandlePreferredMaximumN)r*   r+   r,   r
  r  r   r   rF   r"   r"   r"   r#   r        r  c                   @   .   e Zd ZdefdefdefdefdeffZdS )DhcpEnumSubnetsResponser  EnumInfoEnumRead	EnumTotalr  N)r*   r+   r,   r   r   r   r   rF   r"   r"   r"   r#   r    r   r  c                   @   r  )DhcpGetOptionValue   r	  r   r   N)r*   r+   r,   r
  r  r   r   rF   r"   r"   r"   r#   r    r  r  c                   @   rQ   )DhcpGetOptionValueResponseOptionValuer  Nr*   r+   r,   r   r   rF   r"   r"   r"   r#   r    rU   r  c                   @   ,   e Zd ZdZdefdefdefdeffZdS )DhcpEnumOptionValues   r	  r   r  r  N)	r*   r+   r,   r
  r  r   r   r   rF   r"   r"   r"   r#   r         r   c                   @   .   e Zd ZdefdefdefdefdeffZdS )DhcpEnumOptionValuesResponser  OptionValuesOptionsReadOptionsTotalr  Nr*   r+   r,   r   r   r   rF   r"   r"   r"   r#   r$    r   r$  c                   @   r  )DhcpGetClientInfoV4"   r	  rn   Nr*   r+   r,   r
  r  rl   rF   r"   r"   r"   r#   r)    r  r)  c                   @   rQ   )DhcpGetClientInfoV4Response
ClientInfor  N)r*   r+   r,   rr   r   rF   r"   r"   r"   r#   r,    rU   r,  c                   @   s,   e Zd ZdZdefdefdefdeffZdS )DhcpEnumSubnetClientsV4#   r	  r   r  r  N)r*   r+   r,   r
  r  rE   r   rF   r"   r"   r"   r#   r.    r"  r.  c                   @   r  )DhcpEnumSubnetClientsV4Responser  r-  ClientsReadClientsTotalr  N)r*   r+   r,   r   r   r   r   rF   r"   r"   r"   r#   r0    r   r0  c                   @   r  )DhcpEnumSubnetClientsV5r   r	  r   r  r  N	r*   r+   r,   r
  r  rE   r   r   rF   r"   r"   r"   r#   r3    r"  r3  c                   @   s(   e Zd ZdefdefdefdeffZdS )DhcpEnumSubnetClientsV5Responser  ClientsInfor1  r2  N)r*   r+   r,   r   r   rF   r"   r"   r"   r#   r5    r   r5  c                   @   s8   e Zd ZdZdefdefdefdefdefdeffZ	dS )	DhcpGetOptionValueV5   r	  r  r   r   r   r   N)
r*   r+   r,   r
  r  r   r   r   r   rF   r"   r"   r"   r#   r7    s    r7  c                   @   rQ   )DhcpGetOptionValueV5Responser  r  Nr  r"   r"   r"   r#   r9    rU   r9  c                   @   s>   e Zd ZdZdefdefdefdefdefdefdeffZ	d	S )
DhcpEnumOptionValuesV5   r	  r  r   r   r   r  r  N)
r*   r+   r,   r
  r  r   r   r   r   rF   r"   r"   r"   r#   r:  !  s    r:  c                   @   r#  )DhcpEnumOptionValuesV5Responser  r%  r&  r'  r  Nr(  r"   r"   r"   r#   r<  -  r   r<  c                   @   r  )DhcpGetAllOptionValues   r	  r  r   N)r*   r+   r,   r
  r  r   r   rF   r"   r"   r"   r#   r=  6  r  r=  c                   @   rQ   )DhcpGetAllOptionValuesResponser   r  N)r*   r+   r,   r  r   rF   r"   r"   r"   r#   r?  >  rU   r?  c                   @   s2   e Zd ZdZdefdefdefdefdeffZ	dS )DhcpEnumSubnetElementsV5&   r	  r   EnumElementTyper  r  N)
r*   r+   r,   r
  r  rE   r   r   r   rF   r"   r"   r"   r#   r@  D  s    r@  c                   @   r#  ) DhcpEnumSubnetElementsV5Responser  EnumElementInfoElementsReadElementsTotalr  N)r*   r+   r,   r   r   r   rF   r"   r"   r"   r#   rC  N  r   rC  c                   @   r  )DhcpEnumSubnetClientsVQ/   r	  r   r  r  Nr4  r"   r"   r"   r#   rG  W  r"  rG  c                   @   r  )DhcpEnumSubnetClientsVQResponser  r-  r1  r2  r  N)r*   r+   r,   r   r   r   r   rF   r"   r"   r"   r#   rI  `  r   rI  c                   @   r  )DhcpV4GetClientInfo{   r	  rn   Nr+  r"   r"   r"   r#   rJ  i  r  rJ  c                   @   rQ   )DhcpV4GetClientInfoResponser-  r  N)r*   r+   r,   rw   r   rF   r"   r"   r"   r#   rL  p  rU   rL  )r   r/   r   r  r!  r8  r;  r>  r*  r/  rA  rH  rK  c                 C   s|   t  }t|d< ||d d< ||d d d< |tjkr#||d d d< n|tjkr1||d d d< n||d d d< | |S )Nr	  rn   rm   r   r\   r^   r_   )r)  r   r.   r0   r1   request)dce
searchTypesearchValuerM  r"   r"   r#   hDhcpGetClientInfoV4  s   


rQ  c                 C   s$   t  }t|d< ||d< | |}|S )Nr	  r   )r  r   rM  )rN  subnetaddressrM  respr"   r"   r#   hDhcpGetSubnetInfo  s
   
rT  c              
   C   s   t  }t|d< ||d< ||d d< |tjkr#|tjkr#||d d d< |tjkr1||d d d< n|tjkr?||d d d< n|tjkrL||d d d< tj	}|tj	kr~z| 
|}W |S  ty} } zt|d	d
k rn | }W Y d }~|S d }~ww d S )Nr	  r   r   r   r   r   r   r   ERROR_NO_MORE_ITEMSr   )r  r   r   r   r   r   r   r   r   ERROR_MORE_DATArM  r   strfind
get_packet)rN  optionID	scopetypeoptionsrM  statusrS  er"   r"   r#   hDhcpGetOptionValue  s2   



r_      c              
   C   s  t  }t|d< ||d d< |tjkr|tjkr||d d d< |tjkr-||d d d< n|tjkr;||d d d< n|tjkrH||d d d< t|d< ||d	< tj	}|tj	krz| 
|}W |S  ty } zt|d
dk rr | }W Y d }~|S d }~ww d S )Nr	  r   r   r   r   r   r   r  r  rU  r   )r   r   r   r   r   r   r   r   r   rV  rM  r   rW  rX  rY  )rN  r[  r\  preferredMaximumrM  r]  rS  r^  r"   r"   r#   hDhcpEnumOptionValues  s4   



rb  c              
   C   s  t  }t|d< ||d< ||d< ||d< ||d d< ||d d d< |tjkr/||d d d< n|tjkr=||d d d	< n|tjkrJ||d d d
< t|d< ||d< tj}|tjkrz| |}	W |	S  t	y }
 zt
|
ddk rt |
 }	W Y d }
~
|	S d }
~
ww d S )Nr	  r  r   r   r   r   r   r   r   r   r  r  rU  r   )r:  r   r   r   r   r   r   rV  rM  r   rW  rX  rY  )rN  flags	classname
vendornamer[  r\  ra  rM  r]  rS  r^  r"   r"   r#   hDhcpEnumOptionValuesV5  s8   



rf  c              
   C   s  t  }t|d< ||d< ||d< ||d< ||d< ||d d< ||d d d< |tjkr3||d d d	< n|tjkrA||d d d
< n|tjkrN||d d d< tj}|tjkrz| |}	W |	S  t	y }
 zt
|
ddk rp |
 }	W Y d }
~
|	S d }
~
ww d S )Nr	  r  r   r   r   r   r   r   r   r   r   rU  r   )r7  r   r   r   r   r   r   rV  rM  r   rW  rX  rY  )rN  	option_idrc  rd  re  r[  r\  rM  r]  rS  r^  r"   r"   r#   hDhcpGetOptionValueV5  s6   



rh  c              
   C   s   t  }t|d< t|d< ||d d< ||d d d< |tjkr'||d d d< n|tjkr5||d d d< n|tjkrB||d d d< tj}|tjkrtz| |}W |S  t	ys } zt
|d	d
k rd | }W Y d }~|S d }~ww d S )Nr	  r  r   r   r   r   r   r   rU  r   )r=  r   r   r   r   r   r   rV  rM  r   rW  rX  rY  )rN  r[  r\  rM  r]  rS  r^  r"   r"   r#   hDhcpGetAllOptionValues  s0   



ri  c              
   C   s   t  }t|d< t|d< ||d< tj}|tjkrAz| |}W |S  ty@ } zt|ddk r1 | }W Y d }~|S d }~ww d S )Nr	  r  r  STATUS_MORE_ENTRIESr   )	r  r   r   rV  rM  r   rW  rX  rY  rN  ra  rM  r]  rS  r^  r"   r"   r#   hDhcpEnumSubnets,  s"   
rl  c              
   C      t  }t|d< t|d< t|d< ||d< tj}|tjkrEz| |}W |S  tyD } zt|ddk r5 | }W Y d }~|S d }~ww d S Nr	  r   r  r  rj  r   )	rG  r   r   rV  rM  r   rW  rX  rY  rk  r"   r"   r#   hDhcpEnumSubnetClientsVQ<  $   
ro  c              
   C   rm  rn  )	r.  r   r   rV  rM  r   rW  rX  rY  rk  r"   r"   r#   hDhcpEnumSubnetClientsV4M  rp  rq  c              
   C   s   t  }t|d< ||d< t|d< ||d< tj}|tjkrEz| |}W |S  tyD } zt|ddk r5 | }W Y d }~|S d }~ww d S rn  )	r3  r   r   rV  rM  r   rW  rX  rY  )rN  subnetAddressra  rM  r]  rS  r^  r"   r"   r#   hDhcpEnumSubnetClientsV5^  rp  rs  c              
   C   s   t  }t|d< ||d< ||d< t|d< ||d< tj}|tjkrIz| |}W |S  tyH } zt|ddk r9 | }W Y d }~|S d }~ww d S )Nr	  r   rB  r  r  rU  r   )	r@  r   r   rV  rM  r   rW  rX  rY  )rN  subnet_addresselement_typera  rM  r]  rS  r^  r"   r"   r#   hDhcpEnumSubnetElementsV5o  s&   
rv  N)r`  )r   r`  (	  
__future__r   r   impacketr   impacket.dcerpc.v5.dtypesr   r   r   r   r	   r
   r   r   impacket.dcerpc.v5.ndrr   r   r   r   r   r   impacket.dcerpc.v5.rpcrtr   impacket.dcerpc.v5.enumr   impacket.uuidr   MSRPC_UUID_DHCPSRVMSRPC_UUID_DHCPSRV2r  rE   rh   r   DHCP_FLAGS_OPTION_DEFAULTDHCP_FLAGS_OPTION_IS_VENDORERROR_DHCP_REGISTRY_INIT_FAILEDERROR_DHCP_DATABASE_INIT_FAILEDERROR_DHCP_RPC_INIT_FAILEDERROR_DHCP_NETWORK_INIT_FAILEDERROR_DHCP_SUBNET_EXITSr   ERROR_DHCP_PRIMARY_NOT_FOUNDERROR_DHCP_ELEMENT_CANT_REMOVEERROR_DHCP_OPTION_EXITSERROR_DHCP_OPTION_NOT_PRESENT ERROR_DHCP_ADDRESS_NOT_AVAILABLEERROR_DHCP_RANGE_FULLr   ERROR_DHCP_CLIENT_EXISTSERROR_DHCP_INVALID_DHCP_MESSAGEr   ERROR_DHCP_SERVICE_PAUSEDERROR_DHCP_NOT_RESERVED_CLIENTERROR_DHCP_RESERVED_CLIENTERROR_DHCP_RANGE_TOO_SMALLERROR_DHCP_IPRANGE_EXITSERROR_DHCP_RESERVEDIP_EXITSERROR_DHCP_INVALID_RANGEERROR_DHCP_RANGE_EXTENDEDERROR_EXTEND_TOO_SMALLWARNING_EXTENDED_LESSERROR_DHCP_JET_CONV_REQUIRED$ERROR_SERVER_INVALID_BOOT_FILE_TABLE#ERROR_SERVER_UNKNOWN_BOOT_FILE_NAME$ERROR_DHCP_SUPER_SCOPE_NAME_TOO_LONGERROR_DHCP_IP_ADDRESS_IN_USE!ERROR_DHCP_LOG_FILE_PATH_TOO_LONGERROR_DHCP_UNSUPPORTED_CLIENTERROR_DHCP_JET97_CONV_REQUIREDERROR_DHCP_ROGUE_INIT_FAILEDERROR_DHCP_ROGUE_SAMSHUTDOWNERROR_DHCP_ROGUE_NOT_AUTHORIZEDERROR_DHCP_ROGUE_DS_UNREACHABLEERROR_DHCP_ROGUE_DS_CONFLICT#ERROR_DHCP_ROGUE_NOT_OUR_ENTERPRISE!ERROR_DHCP_ROGUE_STANDALONE_IN_DSERROR_DHCP_CLASS_NOT_FOUNDERROR_DHCP_CLASS_ALREADY_EXISTSERROR_DHCP_SCOPE_NAME_TOO_LONGERROR_DHCP_DEFAULT_SCOPE_EXITS ERROR_DHCP_CANT_CHANGE_ATTRIBUTEERROR_DHCP_IPRANGE_CONV_ILLEGALERROR_DHCP_NETWORK_CHANGED!ERROR_DHCP_CANNOT_MODIFY_BINDINGSr   ERROR_DHCP_MSCOPE_EXISTSERROR_MSCOPE_RANGE_TOO_SMALLERROR_DHCP_EXEMPTION_EXISTS ERROR_DHCP_EXEMPTION_NOT_PRESENT%ERROR_DHCP_INVALID_PARAMETER_OPTION32ERROR_DDS_NO_DS_AVAILABLEERROR_DDS_NO_DHCP_ROOTERROR_DDS_UNEXPECTED_ERRORERROR_DDS_TOO_MANY_ERRORSERROR_DDS_DHCP_SERVER_NOT_FOUNDERROR_DDS_OPTION_ALREADY_EXISTSERROR_DDS_OPTION_DOES_NOT_EXISTERROR_DDS_CLASS_EXISTSERROR_DDS_CLASS_DOES_NOT_EXISTERROR_DDS_SERVER_ALREADY_EXISTSERROR_DDS_SERVER_DOES_NOT_EXIST!ERROR_DDS_SERVER_ADDRESS_MISMATCHERROR_DDS_SUBNET_EXISTS ERROR_DDS_SUBNET_HAS_DIFF_SSCOPEERROR_DDS_SUBNET_NOT_PRESENT!ERROR_DDS_RESERVATION_NOT_PRESENTERROR_DDS_RESERVATION_CONFLICT!ERROR_DDS_POSSIBLE_RANGE_CONFLICTERROR_DDS_RANGE_DOES_NOT_EXISTERROR_DHCP_DELETE_BUILTIN_CLASS ERROR_DHCP_INVALID_SUBNET_PREFIXERROR_DHCP_INVALID_DELAY#ERROR_DHCP_LINKLAYER_ADDRESS_EXISTS/ERROR_DHCP_LINKLAYER_ADDRESS_RESERVATION_EXISTS+ERROR_DHCP_LINKLAYER_ADDRESS_DOES_NOT_EXIST/ERROR_DHCP_HARDWARE_ADDRESS_TYPE_ALREADY_EXEMPT*ERROR_DHCP_UNDEFINED_HARDWARE_ADDRESS_TYPEERROR_DHCP_OPTION_TYPE_MISMATCH!ERROR_DHCP_POLICY_BAD_PARENT_EXPRERROR_DHCP_POLICY_EXISTSERROR_DHCP_POLICY_RANGE_EXISTSERROR_DHCP_POLICY_RANGE_BAD)ERROR_DHCP_RANGE_INVALID_IN_SERVER_POLICY$ERROR_DHCP_INVALID_POLICY_EXPRESSION#ERROR_DHCP_INVALID_PROCESSING_ORDERERROR_DHCP_POLICY_NOT_FOUND'ERROR_SCOPE_RANGE_POLICY_RANGE_CONFLICT+ERROR_DHCP_FO_SCOPE_ALREADY_IN_RELATIONSHIP!ERROR_DHCP_FO_RELATIONSHIP_EXISTS)ERROR_DHCP_FO_RELATIONSHIP_DOES_NOT_EXIST'ERROR_DHCP_FO_SCOPE_NOT_IN_RELATIONSHIP#ERROR_DHCP_FO_RELATION_IS_SECONDARYERROR_DHCP_FO_NOT_SUPPORTEDERROR_DHCP_FO_TIME_OUT_OF_SYNCERROR_DHCP_FO_STATE_NOT_NORMALERROR_DHCP_NO_ADMIN_PERMISSIONERROR_DHCP_SERVER_NOT_REACHABLEERROR_DHCP_SERVER_NOT_RUNNING#ERROR_DHCP_SERVER_NAME_NOT_RESOLVED(ERROR_DHCP_FO_RELATIONSHIP_NAME_TOO_LONG#ERROR_DHCP_REACHED_END_OF_SELECTION(ERROR_DHCP_FO_ADDSCOPE_LEASES_NOT_SYNCEDERROR_DHCP_FO_MAX_RELATIONSHIPS'ERROR_DHCP_FO_IPRANGE_TYPE_CONV_ILLEGALERROR_DHCP_FO_MAX_ADD_SCOPES ERROR_DHCP_FO_BOOT_NOT_SUPPORTEDERROR_DHCP_FO_RANGE_PART_OF_REL$ERROR_DHCP_FO_SCOPE_SYNC_IN_PROGRESS#ERROR_DHCP_FO_FEATURE_NOT_SUPPORTED(ERROR_DHCP_POLICY_FQDN_RANGE_UNSUPPORTED)ERROR_DHCP_POLICY_FQDN_OPTION_UNSUPPORTED'ERROR_DHCP_POLICY_EDIT_FQDN_UNSUPPORTEDERROR_DHCP_NAP_NOT_SUPPORTEDERROR_LAST_DHCP_SERVER_ERRORr   r.   r6   rA   rH   rM   rR   ri   rW   r[   rj   rl   ro   rq   rr   rs   rt   rw   rx   rz   r{   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r   r$  r)  r,  r.  r0  r3  r5  r7  r9  r:  r<  r=  r?  r@  rC  rG  rI  rJ  rL  OPNUMSrQ  rT  r   r_  rb  rf  rh  ri  rl  ro  rq  rs  r   rv  r"   r"   r"   r#   <module>   s  ( &
										
			
	 