o
    Žõ±jßu  ã                   @   sê  d dl mZmZ d dlmZ d dl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mZmZmZ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"G d	d
„ d
eƒZ#eZ$eZ%eZ&eZ'e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@G dd„ deƒZAG dd„ deƒZBG dd„ de
ƒZCG dd„ de
ƒZDG dd „ d e	ƒZEG d!d"„ d"eƒZFG d#d$„ d$eƒZGG d%d&„ d&e	ƒZHG d'd(„ d(eƒZIG d)d*„ d*eƒZJG d+d,„ d,eƒZKG d-d.„ d.eƒZLG d/d0„ d0eƒZMG d1d2„ d2eƒZNG d3d4„ d4eƒZOG d5d6„ d6eƒZPG d7d8„ d8eƒZQG d9d:„ d:eƒZRG d;d<„ d<eƒZSG d=d>„ d>eƒZTG d?d@„ d@eƒZUG dAdB„ dBeƒZVG dCdD„ dDeƒZWG dEdF„ dFeƒZXG dGdH„ dHeƒZYG dIdJ„ dJeƒZZG dKdL„ dLeƒZ[G dMdN„ dNeƒZ\G dOdP„ dPeƒZ]G dQdR„ dReƒZ^G dSdT„ dTeƒZ_G dUdV„ dVeƒZ`G dWdX„ dXeƒZaG dYdZ„ dZeƒZbG d[d\„ d\eƒZcG d]d^„ d^eƒZdG d_d`„ d`eƒZeG dadb„ dbeƒZfG dcdd„ ddeƒZgG dedf„ dfeƒZhG dgdh„ dheƒZiG didj„ djeƒZjG dkdl„ dleƒZkG dmdn„ dneƒZlG dodp„ dpeƒZmG dqdr„ dreƒZnG dsdt„ dteƒZoG dudv„ dveƒZpG dwdx„ dxeƒZqG dydz„ dzeƒZrG d{d|„ d|eƒZsG d}d~„ d~eƒZtG dd€„ d€eƒZuG d�d‚„ d‚eƒZvG dƒd„„ d„eƒZwG d…d†„ d†eƒZxG d‡dˆ„ dˆeƒZyG d‰dŠ„ dŠeƒZzG d‹dŒ„ dŒeƒZ{G d�dŽ„ dŽeƒZ|G d�d�„ d�eƒZ}G d‘d’„ d’eƒZ~G d“d”„ d”eƒZG d•d–„ d–eƒZ€G d—d˜„ d˜eƒZ�G d™dš„ dšeƒZ‚G d›dœ„ dœeƒZƒG d�dž„ džeƒZ„G dŸd „ d eƒZ…G d¡d¢„ d¢eƒZ†i d eIeJf“deKeLf“deMeNf“deOePf“deQeRf“deSeTf“deUeVf“deWeXf“deYeZf“d£e[e\f“d¤e]e^f“de_e`f“d¥eaebf“d¦ecedf“d§eeeff“d¨egehf“d©eiejf“ekelfemenfeoepfeqerfesetfeuevfewexfeyezfe{e|fe}e~fee€fe�e‚feƒe„fe…e†fdªœ¥Z‡d«d¬„ Zˆd­d®„ Z‰d¯d°„ ZŠefd±d²„Z‹efd³d´„ZŒefdµd¶„Z�efd·d¸„ZŽefd¹dº„Z�d»d¼„ Z�edeee;fd½d¾„Z‘d¿dÀ„ Z’efdÁdÂ„Z“dîdÃdÄ„Z”dÅdÆ„ Z•edÇfdÈdÉ„Z–efdÊdË„Z—dÌdÍ„ Z˜dÎdÏ„ Z™defdÐdÑ„ZšdÒdÓ„ Z›dïdÕdÖ„Zœd×dØ„ Z�e>fdÙdÚ„ZžefdÛdÜ„ZŸdÝdÞ„ Z dßdà„ Z¡efdádâ„Z¢dãdä„ Z£edfdådæ„Z¤efdçdè„Z¥efdédê„Z¦dëdì„ Z§díS )ðé    )ÚunpackÚpack)Úlogger)ÚNDRCALLÚ	NDRSTRUCTÚ
NDRPOINTERÚNDRUniConformantVaryingArrayÚNDRUniConformantArray)ÚDWORDÚUUIDÚULONGÚLPULONGÚBOOLEANÚSECURITY_INFORMATIONÚ	PFILETIMEÚRPC_UNICODE_STRINGÚFILETIMEÚNULLÚMAXIMUM_ALLOWEDÚOWNER_SECURITY_INFORMATIONÚPWCHARÚPRPC_UNICODE_STRINGÚDACL_SECURITY_INFORMATION)ÚDCERPCException)Úuuidtup_to_bin)Úsystem_errors)z$338CD001-2244-31F1-AAAA-900038001003z1.0c                   @   s   e Zd Zddd„Zdd„ ZdS )ÚDCERPCSessionErrorNc                 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/aiosmb/dcerpc/v5/rrp.pyr   %   s   zDCERPCSessionError.__init__c                 C   sF   | j }|tjv rtj| d }tj| d }d| j ||f S d| j  S )Nr   é   z&RRP SessionError: code: 0x%x - %s - %sz*RRP 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   $   s    
r   r$   é   é   é   é    é   é   é   é   é   é   é   c                   @   s&   e Zd ZdefdeffZddd„ZdS )ÚRPC_HKEYÚcontext_handle_attributesÚcontext_handle_uuidNFc                 C   s   t  | ||¡ d| d< d S )Nz                    r:   )r   r   )r   ÚdataÚisNDR64r"   r"   r#   r   i   s   zRPC_HKEY.__init__)NF)r*   r+   r,   r   r   Ú	structurer   r"   r"   r"   r#   r8   d   s
    þr8   c                   @   s(   e Zd ZdefdefdefdeffZdS )ÚRVALENTÚve_valuenameÚve_valuelenÚve_valueptrÚve_typeN)r*   r+   r,   ÚPRRP_UNICODE_STRINGr
   r=   r"   r"   r"   r#   r>   n   ó    ür>   c                   @   s   e Zd ZeZdS )ÚRVALENT_ARRAYN)r*   r+   r,   r>   Úitemr"   r"   r"   r#   rE   v   s    rE   c                   @   s   e Zd ZdS )Ú
BYTE_ARRAYN)r*   r+   r,   r"   r"   r"   r#   rG   z   s    rG   c                   @   ó   e Zd ZdeffZdS )ÚPBYTE_ARRAYÚDataN)r*   r+   r,   rG   Úreferentr"   r"   r"   r#   rI   }   ó    ÿrI   c                   @   s"   e Zd ZdefdefdeffZdS )ÚRPC_SECURITY_DESCRIPTORÚlpSecurityDescriptorÚcbInSecurityDescriptorÚcbOutSecurityDescriptorN)r*   r+   r,   rI   r
   r=   r"   r"   r"   r#   rM   ‚   ó
    ýrM   c                   @   ó"   e Zd ZdefdefdeffZdS )ÚRPC_SECURITY_ATTRIBUTESÚnLengthÚRpcSecurityDescriptorÚbInheritHandleN)r*   r+   r,   r
   rM   r   r=   r"   r"   r"   r#   rS   Š   rQ   rS   c                   @   rH   )ÚPRPC_SECURITY_ATTRIBUTESrJ   N)r*   r+   r,   rS   rK   r"   r"   r"   r#   rW   ‘   rL   rW   c                   @   ó    e Zd ZdZdefdeffZdS )ÚOpenClassesRootr   Ú
ServerNameÚ
samDesiredN©r*   r+   r,   ÚopnumÚPREGISTRY_SERVER_NAMEÚREGSAMr=   r"   r"   r"   r#   rY   š   ó
    þrY   c                   @   ó   e Zd ZdefdeffZdS )ÚOpenClassesRootResponseÚphKeyÚ	ErrorCodeN©r*   r+   r,   r8   Úerror_status_tr=   r"   r"   r"   r#   rb   ¡   ó    þrb   c                   @   rX   )ÚOpenCurrentUserr$   rZ   r[   Nr\   r"   r"   r"   r#   rh   ¨   r`   rh   c                   @   ra   )ÚOpenCurrentUserResponserc   rd   Nre   r"   r"   r"   r#   ri   ¯   rg   ri   c                   @   rX   )ÚOpenLocalMachiner-   rZ   r[   Nr\   r"   r"   r"   r#   rj   ¶   r`   rj   c                   @   ra   )ÚOpenLocalMachineResponserc   rd   Nre   r"   r"   r"   r#   rk   ½   rg   rk   c                   @   rX   )ÚOpenPerformanceDatar3   rZ   r[   Nr\   r"   r"   r"   r#   rl   Ä   r`   rl   c                   @   ra   )ÚOpenPerformanceDataResponserc   rd   Nre   r"   r"   r"   r#   rm   Ë   rg   rm   c                   @   rX   )Ú	OpenUsersr.   rZ   r[   Nr\   r"   r"   r"   r#   rn   Ò   r`   rn   c                   @   ra   )ÚOpenUsersResponserc   rd   Nre   r"   r"   r"   r#   ro   Ù   rg   ro   c                   @   ó   e Zd ZdZdeffZdS )ÚBaseRegCloseKeyr4   ÚhKeyN©r*   r+   r,   r]   r8   r=   r"   r"   r"   r#   rq   à   ó    ÿrq   c                   @   ra   )ÚBaseRegCloseKeyResponserr   rd   Nre   r"   r"   r"   r#   ru   æ   rg   ru   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 )
ÚBaseRegCreateKeyr5   rr   ÚlpSubKeyÚlpClassÚ	dwOptionsr[   ÚlpSecurityAttributesÚlpdwDispositionN)r*   r+   r,   r]   r8   ÚRRP_UNICODE_STRINGr
   r_   rW   r   r=   r"   r"   r"   r#   rv   í   ó    ùrv   c                   @   rR   )ÚBaseRegCreateKeyResponseÚ	phkResultr{   rd   N)r*   r+   r,   r8   r   rf   r=   r"   r"   r"   r#   r~   ù   rQ   r~   c                   @   rX   )ÚBaseRegDeleteKeyr6   rr   rw   N©r*   r+   r,   r]   r8   r|   r=   r"   r"   r"   r#   r€     r`   r€   c                   @   rH   )ÚBaseRegDeleteKeyResponserd   N©r*   r+   r,   rf   r=   r"   r"   r"   r#   r‚     rL   r‚   c                   @   rX   )ÚBaseRegDeleteValuer/   rr   ÚlpValueNameNr�   r"   r"   r"   r#   r„     r`   r„   c                   @   rH   )ÚBaseRegDeleteValueResponserd   Nrƒ   r"   r"   r"   r#   r†     rL   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 )ÚBaseRegEnumKeyé	   rr   ÚdwIndexÚlpNameInÚ	lpClassInÚlpftLastWriteTimeN)
r*   r+   r,   r]   r8   r
   r|   rC   r   r=   r"   r"   r"   r#   r‡     ó    ûr‡   c                   @   ó(   e Zd ZdefdefdefdeffZdS )ÚBaseRegEnumKeyResponseÚ	lpNameOutÚlplpClassOutrŒ   rd   N)r*   r+   r,   r|   rC   r   rf   r=   r"   r"   r"   r#   r�   %  rD   r�   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 )
ÚBaseRegEnumValueé
   rr   r‰   ÚlpValueNameInÚlpTypeÚlpDataÚlpcbDataÚlpcbLenN)
r*   r+   r,   r]   r8   r
   r|   r   rI   r=   r"   r"   r"   r#   r’   .  r}   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 )ÚBaseRegEnumValueResponseÚlpValueNameOutr•   r–   r—   r˜   rd   N)r*   r+   r,   r|   r   rI   rf   r=   r"   r"   r"   r#   r™   :  s    úr™   c                   @   rp   )ÚBaseRegFlushKeyr7   rr   Nrs   r"   r"   r"   r#   r›   E  rt   r›   c                   @   rH   )ÚBaseRegFlushKeyResponserd   Nrƒ   r"   r"   r"   r#   rœ   K  rL   rœ   c                   @   ó&   e Zd ZdZdefdefdeffZdS )ÚBaseRegGetKeySecurityé   rr   ÚSecurityInformationÚpRpcSecurityDescriptorInN©r*   r+   r,   r]   r8   r   rM   r=   r"   r"   r"   r#   rž   Q  ó    ýrž   c                   @   ra   )ÚBaseRegGetKeySecurityResponseÚpRpcSecurityDescriptorOutrd   N)r*   r+   r,   rM   rf   r=   r"   r"   r"   r#   r¤   Y  rg   r¤   c                   @   s&   e Zd ZdZdefdefdeffZdS )ÚBaseRegLoadKeyé   rr   rw   ÚlpFileNr�   r"   r"   r"   r#   r¦   `  r£   r¦   c                   @   rH   )ÚBaseRegLoadKeyResponserd   Nrƒ   r"   r"   r"   r#   r©   h  rL   r©   c                   @   ó,   e Zd ZdZdefdefdefdeffZdS )ÚBaseRegOpenKeyé   rr   rw   ry   r[   N)	r*   r+   r,   r]   r8   r|   r
   r_   r=   r"   r"   r"   r#   r«   n  ó    ür«   c                   @   ra   )ÚBaseRegOpenKeyResponser   rd   Nre   r"   r"   r"   r#   r®   w  rg   r®   c                   @   rX   )ÚBaseRegQueryInfoKeyé   rr   r‹   Nr�   r"   r"   r"   r#   r¯   ~  r`   r¯   c                   @   sL   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f
ZdS )ÚBaseRegQueryInfoKeyResponseÚ
lpClassOutÚ
lpcSubKeysÚlpcbMaxSubKeyLenÚlpcbMaxClassLenÚ	lpcValuesÚlpcbMaxValueNameLenÚlpcbMaxValueLenÚlpcbSecurityDescriptorrŒ   rd   N)r*   r+   r,   r   r
   r   rf   r=   r"   r"   r"   r#   r±   …  s    ör±   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 )	ÚBaseRegQueryValueé   rr   r…   r•   r–   r—   r˜   N)	r*   r+   r,   r]   r8   r|   r   rI   r=   r"   r"   r"   r#   rº   ”  s    ú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 )ÚBaseRegQueryValueResponser•   r–   r—   r˜   rd   N)r*   r+   r,   r   rI   rf   r=   r"   r"   r"   r#   r¼   Ÿ  s    û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 )ÚBaseRegReplaceKeyé   rr   rw   Ú	lpNewFileÚ	lpOldFileNr�   r"   r"   r"   r#   r½   ©  r­   r½   c                   @   rH   )ÚBaseRegReplaceKeyResponserd   Nrƒ   r"   r"   r"   r#   rÁ   ²  rL   rÁ   c                   @   r�   )ÚBaseRegRestoreKeyé   rr   r¨   ÚFlagsN)r*   r+   r,   r]   r8   r|   r
   r=   r"   r"   r"   r#   rÂ   ¸  r£   rÂ   c                   @   rH   )ÚBaseRegRestoreKeyResponserd   Nrƒ   r"   r"   r"   r#   rÅ   À  rL   rÅ   c                   @   r�   )ÚBaseRegSaveKeyé   rr   r¨   ÚpSecurityAttributesN)r*   r+   r,   r]   r8   r|   rW   r=   r"   r"   r"   r#   rÆ   Æ  r£   rÆ   c                   @   rH   )ÚBaseRegSaveKeyResponserd   Nrƒ   r"   r"   r"   r#   rÉ   Î  rL   rÉ   c                   @   r�   )ÚBaseRegSetKeySecurityé   rr   r    ÚpRpcSecurityDescriptorNr¢   r"   r"   r"   r#   rÊ   Ô  r£   rÊ   c                   @   rH   )ÚBaseRegSetKeySecurityResponserd   Nrƒ   r"   r"   r"   r#   rÍ   Ü  rL   rÍ   c                   @   ó2   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 )ÚBaseRegSetValueé   rr   r…   ÚdwTyper–   ÚcbDataN)	r*   r+   r,   r]   r8   r|   r
   r	   r=   r"   r"   r"   r#   rÏ   â  r�   rÏ   c                   @   rH   )ÚBaseRegSetValueResponserd   Nrƒ   r"   r"   r"   r#   rÓ   ì  rL   rÓ   c                   @   rX   )ÚBaseRegUnLoadKeyé   rr   rw   Nr�   r"   r"   r"   r#   rÔ   ò  r`   rÔ   c                   @   rH   )ÚBaseRegUnLoadKeyResponserd   Nrƒ   r"   r"   r"   r#   rÖ   ù  rL   rÖ   c                   @   rp   )ÚBaseRegGetVersioné   rr   Nrs   r"   r"   r"   r#   r×   ÿ  rt   r×   c                   @   ra   )ÚBaseRegGetVersionResponseÚlpdwVersionrd   N)r*   r+   r,   r
   rf   r=   r"   r"   r"   r#   rÙ     rg   rÙ   c                   @   rX   )ÚOpenCurrentConfigé   rZ   r[   Nr\   r"   r"   r"   r#   rÛ     r`   rÛ   c                   @   ra   )ÚOpenCurrentConfigResponserc   rd   Nre   r"   r"   r"   r#   rÝ     rg   rÝ   c                   @   rÎ   )ÚBaseRegQueryMultipleValuesé   rr   Ú
val_listInÚnum_valsÚ
lpvalueBufÚ
ldwTotsizeN©	r*   r+   r,   r]   r8   rE   r
   rI   r=   r"   r"   r"   r#   rÞ     r�   rÞ   c                   @   rŽ   )Ú"BaseRegQueryMultipleValuesResponseÚval_listOutrâ   rã   rd   N©r*   r+   r,   rE   rI   r
   rf   r=   r"   r"   r"   r#   rå   $  rD   rå   c                   @   rª   )ÚBaseRegSaveKeyExé   rr   r¨   rÈ   rÄ   N)	r*   r+   r,   r]   r8   r|   rW   r
   r=   r"   r"   r"   r#   rè   -  r­   rè   c                   @   rH   )ÚBaseRegSaveKeyExResponserd   Nrƒ   r"   r"   r"   r#   rê   6  rL   rê   c                   @   rX   )ÚOpenPerformanceTextr0   rZ   r[   Nr\   r"   r"   r"   r#   rë   <  r`   rë   c                   @   ra   )ÚOpenPerformanceTextResponserc   rd   Nre   r"   r"   r"   r#   rì   C  rg   rì   c                   @   rX   )ÚOpenPerformanceNlsTexté!   rZ   r[   Nr\   r"   r"   r"   r#   rí   J  r`   rí   c                   @   ra   )ÚOpenPerformanceNlsTextResponserc   rd   Nre   r"   r"   r"   r#   rï   Q  rg   rï   c                   @   rÎ   )ÚBaseRegQueryMultipleValues2é"   rr   rà   rá   râ   rã   Nrä   r"   r"   r"   r#   rð   X  r�   rð   c                   @   rŽ   )Ú#BaseRegQueryMultipleValues2Responseræ   râ   ÚldwRequiredSizerd   Nrç   r"   r"   r"   r#   rò   b  rD   rò   c                   @   rª   )ÚBaseRegDeleteKeyExé#   rr   rw   Ú
AccessMaskÚReservedN)	r*   r+   r,   r]   r8   r|   r_   r
   r=   r"   r"   r"   r#   rô   k  r­   rô   c                   @   rH   )ÚBaseRegDeleteKeyExResponserd   Nrƒ   r"   r"   r"   r#   rø   t  rL   rø   rˆ   r“   rŸ   r§   r¬   r°   r»   )r¾   rÃ   rÇ   rË   rÐ   rÕ   rØ   rÜ   rß   ré   r0   rî   rñ   rõ   c                 C   s(   | t kr| S | dd … dkr| d S | S )Néÿÿÿÿú )r   )Ústringr"   r"   r#   ÚcheckNullString¡  s
   rü   c                 C   s>  | t krtd|ƒ}|S | tkrtd|ƒ}|S | tkr;z| d¡}W |S  ty:   dd l}| | ¡ ¡ d¡}Y |S w | t	kr`z| d¡}W |S  ty_   dd l}| | ¡ ¡ d¡}Y |S w | t
krktd|ƒ}|S | tkrvtd|ƒ}|S | tkr›z| d¡}W |S  tyš   dd l}| | ¡ ¡ d¡}Y |S w |}|S )Nú<Lú>Lúutf-16ler   ú<Qú>Q)Ú	REG_DWORDr   ÚREG_DWORD_BIG_ENDIANÚREG_EXPAND_SZÚencodeÚUnicodeDecodeErrorÚsysÚdecodeÚgetfilesystemencodingÚREG_MULTI_SZÚ	REG_QWORDÚREG_QWORD_LITTLE_ENDIANÚREG_SZ)Ú	valueTypeÚvalueÚretDatar  r"   r"   r#   Ú	packValueª  sR   
å
çêêðð
õ

÷úúr  c                 C   sâ   | t krtdd |¡ƒd }|S | tkr tdd |¡ƒd }|S | tkr.d |¡ d¡}|S | tkr<d |¡ d¡}|S | tkrLtdd |¡ƒd }|S | tkr\tdd |¡ƒd }|S | t	krjd |¡ d¡}|S d |¡}|S )	Nrý   ó    r   rþ   Ú rÿ   r   r  )
r  r   Újoinr  r  r  r
  r  r  r  )r  r  r  r"   r"   r#   ÚunpackValueÊ  s.   ñóõ
÷ùû
þr  c                 Ã   ó(   �t ƒ }t|d< ||d< |  |¡I d H S ©NrZ   r[   )rY   r   Úrequest©Údcer[   r  r"   r"   r#   ÚhOpenClassesRootÞ  ó
   €r  c                 Ã   r  r  )rh   r   r  r  r"   r"   r#   ÚhOpenCurrentUserä  r  r  c                 Ã   r  r  )rj   r   r  r  r"   r"   r#   ÚhOpenLocalMachineê  r  r  c                 Ã   r  r  )rl   r   r  r  r"   r"   r#   ÚhOpenPerformanceDatað  r  r  c                 Ã   r  r  )rn   r   r  r  r"   r"   r#   Ú
hOpenUsersö  r  r   c                 Ã   ó    �t ƒ }||d< |  |¡I d H S ©Nrr   )rq   r  ©r  rr   r  r"   r"   r#   ÚhBaseRegCloseKeyü  ó   €r$  c           	      Ã   sr   �t ƒ }||d< t|ƒ|d< t|ƒ|d< ||d< ||d< |tkr)t|d d d< n||d< ||d	< |  |¡I d H S )
Nrr   rw   rx   ry   r[   rz   rU   rN   r{   )rv   rü   r   r  )	r  rr   rw   rx   ry   r[   rz   r{   r  r"   r"   r#   ÚhBaseRegCreateKey  s   €r&  c                 Ã   ó,   �t ƒ }||d< t|ƒ|d< |  |¡I d H S ©Nrr   rw   )r€   rü   r  ©r  rr   rw   r  r"   r"   r#   ÚhBaseRegDeleteKey  ó
   €r*  c                 Ã   sd   �t ƒ }||d< ||d< d|jd jd< d|jd jd jd jd< d	|d
< ||d< |  |¡I d H S )Nrr   r‰   é   rŠ   ÚMaximumLengthr2   rJ   ÚMaximumCountz@                                                                r‹   rŒ   )r‡   Úfieldsr  )r  rr   r‰   rŒ   r  r"   r"   r#   ÚhBaseRegEnumKey  s   €r0  c                 Ã   sÜ   �t ƒ }||d< ||d< d}	 |d |jd jd< ||jd jd jd jd	< d
| |d< ||d< ||d< |  |¡I d H \}}|d urjt|tƒrf|dkrPd |fS | ¡ tjkrb|d7 }| ¡ d }qd |fS d |fS |d fS )Nrr   r‰   r   Tr-   r”   r-  rJ   r.  ó    r–   r—   r˜   r$   )	r’   r/  r  Ú
isinstancer   Úget_error_coder   ÚERROR_MORE_DATAÚ
get_packet)r  rr   r‰   ÚdataLenr  ÚretriesÚrespÚer"   r"   r#   ÚhBaseRegEnumValue!  s.   €
r:  c                 Ã   r!  r"  )r›   r  r#  r"   r"   r#   ÚhBaseRegFlushKeyB  r%  r;  r,  c                 Ã   sÀ   �t ƒ }||d< ||d< t|d d< d}	 ||d d< |  |¡I d H \}}|d urUt|tƒrQ|dkr7d d |fS | ¡ tjkrM|d7 }| ¡ d	 d d }qd |fS d |fS d
 	|d	 d ¡d fS )Nrr   r    r¡   rN   r   TrO   r$   r¥   r  )
rž   r   r  r2  r   r3  r   ÚERROR_INSUFFICIENT_BUFFERr5  r  )r  rr   ÚsecurityInformationr6  r  r7  r8  r9  r"   r"   r#   ÚhBaseRegGetKeySecurityG  s(   €

r>  c                 Ã   sV   �t ƒ }||d< t|ƒ|d< t|ƒ|d< tƒ }||d< ||d< ||d< |  |¡I d H S )NrN   rO   rP   rr   r    rÌ   )rM   ÚlenrÊ   r  )r  rr   rÌ   r=  Úsecdescr  r"   r"   r#   ÚhBaseRegSetKeySecurity_  s   €rA  c                 Ã   s8   �t ƒ }||d< t|ƒ|d< t|ƒ|d< |  |¡I d H S )Nrr   rw   r¨   )r¦   rü   r  )r  rr   rw   r¨   r  r"   r"   r#   ÚhBaseRegLoadKey~  s   €rB  c                 Ã   r'  r(  )rÔ   rü   r  r)  r"   r"   r#   ÚhBaseRegUnLoadKey…  r+  rC  c                 Ã   ó<   �t ƒ }||d< t|ƒ|d< ||d< ||d< |  |¡I d H S )Nrr   rw   ry   r[   )r«   rü   r  )r  rr   rw   ry   r[   r  r"   r"   r#   ÚhBaseRegOpenKey‹  ó   €rE  c                 Ã   sL   �t ƒ }||d< d|jd jd< d|jd jd jd jd< |  |¡I d H S )Nrr   r,  r‹   r-  r2   rJ   r.  )r¯   r/  r  r#  r"   r"   r#   ÚhBaseRegQueryInfoKey“  s   €rG  Tc           	      Ã   sê   �t ƒ }||d< t|ƒ|d< d}	 d| |d< ||d< ||d< |  |¡I d H \}}|d urWt|tƒrR|dkr;d d |fS | ¡ tjkrM|d7 }| ¡ d }qd d |fS d d |fS |du ri|d	 t	|d	 |d ƒd fS |d	 d
 
|d ¡d fS )Nrr   r…   r$   Tr1  r–   r—   r˜   r•   r  )rº   rü   r  r2  r   r3  r   r4  r5  r  r  )	r  rr   r…   r6  Úunpack_valsr  r7  r8  r9  r"   r"   r#   ÚhBaseRegQueryValueœ  s.   €



rI  c                 Ã   sD   �t ƒ }||d< t|ƒ|d< t|ƒ|d< t|ƒ|d< |  |¡I d H S )Nrr   rw   r¿   rÀ   )r½   rü   r  )r  rr   rw   r¿   rÀ   r  r"   r"   r#   ÚhBaseRegReplaceKey¹  s   €rJ  c                 Ã   ó4   �t ƒ }||d< t|ƒ|d< ||d< |  |¡I d H S )Nrr   r¨   rÄ   )rÂ   rü   r  )r  rr   r¨   Úflagsr  r"   r"   r#   ÚhBaseRegRestoreKeyÁ  ó   €rM  c                 Ã   rK  )Nrr   r¨   rÈ   )rÆ   rü   r  )r  rr   r¨   rÈ   r  r"   r"   r#   ÚhBaseRegSaveKeyÈ  rN  rO  c                 Ã   sR   �t ƒ }||d< t|ƒ|d< ||d< t||ƒ|d< t|d ƒ|d< |  |¡I d H S )Nrr   r…   rÑ   r–   rÒ   )rÏ   rü   r  r?  r  )r  rr   r…   rÑ   r–   r  r"   r"   r#   ÚhBaseRegSetValueÏ  s   €rP  c                 Ã   r!  r"  )r×   r  r#  r"   r"   r#   ÚhBaseRegGetVersionØ  r%  rQ  c                 Ã   r  r  )rÛ   r   r  r  r"   r"   r#   ÚhOpenCurrentConfigÝ  r  rR  c                 Ã   s
   �t dƒ‚)NzMODIFICATION ASD TEST NEEDED!!!)Ú	ExceptionrÞ   r>   rü   r?  r   ÚappendÚlistr  Údictr  )r  rr   rà   r  rF   Úitemnr8  ÚretValr"   r"   r#   ÚhBaseRegQueryMultipleValuesã  s   €rY  c                 Ã   rD  )Nrr   r¨   rÈ   rÄ   )rè   rü   r  )r  rr   r¨   rÈ   rL  r  r"   r"   r#   ÚhBaseRegSaveKeyEx   rF  rZ  c                 Ã   r  r  )rë   r   r  r  r"   r"   r#   ÚhOpenPerformanceText  r  r[  c                 Ã   r  r  )rí   r   r  r  r"   r"   r#   ÚhOpenPerformanceNlsText  r  r\  c                 Ã   r'  )Nrr   r…   )r„   rü   r  )r  rr   r…   r  r"   r"   r#   ÚhBaseRegDeleteValue  r+  r]  N)r1   )r2   T)¨Ústructr   r   Úaiosmbr   ÚLOGÚaiosmb.dcerpc.v5.ndrr   r   r   r   r	   Úaiosmb.dcerpc.v5.dtypesr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úaiosmb.dcerpc.v5.rpcrtr   Úaiosmb.dcerpc.v5.uuidr   Úaiosmb.dcerpc.v5r   ÚMSRPC_UUID_RRPr   r^   rf   r|   rC   r_   ÚKEY_QUERY_VALUEÚKEY_SET_VALUEÚKEY_CREATE_SUB_KEYÚKEY_ENUMERATE_SUB_KEYSÚKEY_CREATE_LINKÚKEY_WOW64_64KEYÚKEY_WOW64_32KEYÚ
REG_BINARYr  ÚREG_DWORD_LITTLE_ENDIANr  r  ÚREG_LINKr
  ÚREG_NONEr  r  r  ÚREG_CREATED_NEW_KEYÚREG_OPENED_EXISTING_KEYÚREG_WHOLE_HIVE_VOLATILEÚREG_REFRESH_HIVEÚREG_NO_LAZY_FLUSHÚREG_FORCE_RESTOREr8   r>   rE   rG   rI   rM   rS   rW   rY   rb   rh   ri   rj   rk   rl   rm   rn   ro   rq   ru   rv   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ø   ÚOPNUMSrü   r  r  r  r  r  r  r   r$  r&  r*  r0  r:  r;  r>  rA  rB  rC  rE  rG  rI  rJ  rM  rO  rP  rQ  rR  rY  rZ  r[  r\  r]  r"   r"   r"   r#   Ú<module>   s|  D
	
		
	

		
		ÿþýüûúùø	÷
öõôóòñðïá%	 
!
		