a b^,@sdZddlZddlZddlmZmZddZGdddejZdd Z d Z ej j j Z ejjejfe _ejje _ej j jZejjfe_ejje_ej j jZejjfe_ejje_ej j jZejjfe_eje_ej j jZejjejejjejjejjejjge_ejje_ej j jZejje_ej j j Z ejjfe _ej j j!Z!ejejejfe!_ejj"fej j j#_Gd d d e$Z%d Z&dZ'e&Z(e&Z)e&Z*dZ+dZ,d Z-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6dZ7dZ8e'e,Be-Be.Be/Be0Be1Be2Be3Be4Be5Be6Be7BZ9e(e-Be.BZ:e)e/Be0Be1Be2Be3Be4Be5Be6BZ;e*e,Be7BZGd d!d!ej?Z@Gd"d#d#ej?ZAGd$d%d%ej?ZBeCeAejejjfej jDjE_d&d'ZFd(d)ZGd*d+ZHd.d,d-ZIdS)/z Windows API functions implemented as ctypes functions and classes as found in jaraco.windows (3.4.1). If you encounter issues with this module, please consider reporting the issues in jaraco.windows and asking the author to port the fixes back here. N)ubuiltinsc Csnd}d}||B}d}|}d}tj}d}d} tjj||||t||| } t| |j} tjj || S)zf Call FormatMessage with a system error number to retrieve the descriptive error message. Nr) ctypeswintypesLPWSTRwindllkernel32ZFormatMessageWbyrefhandle_nonzero_successvalue LocalFree) errnoZALLOCATE_BUFFERZ FROM_SYSTEMflagssourceZ message_idZ language_idZ result_buffer buffer_size argumentsbytesmessager7/tmp/pip-target-98j97qn4/lib/python/paramiko/_winapi.pyformat_system_messages,  rcsJeZdZdZd fdd ZeddZeddZd d Zd d Z Z S) WindowsErrorzZmore info about errors at http://msdn.microsoft.com/en-us/library/ms681381(VS.85).aspxNcsP|durtjj}t|}tjdkr4d|d|f}n||f}tt|j |dS)N)rr) rr r Z GetLastErrorrsys version_infosuperr__init__)selfr strerrorargs __class__rrr;s  zWindowsError.__init__cCs|jSN)r rrrrrEszWindowsError.messagecCs|jSr$)winerrorr%rrrcodeIszWindowsError.codecCs|jSr$)rr%rrr__str__MszWindowsError.__str__cCsdjfitS)Nz*{self.__class__.__name__}({self.winerror}))formatvarsr%rrr__repr__PszWindowsError.__repr__)N) __name__ __module__ __qualname____doc__rpropertyrr'r(r+ __classcell__rrr"rr7s   rcCs|dkrtdSNr)r)resultrrrr Tsr c@sBeZdZdZdddZddZddZd d Zd d Zd dZ dS) MemoryMapzL A memory map object which can have security attributes overridden. NcCs||_||_||_d|_dSr2)namelengthsecurity_attributespos)rr6r7r8rrrrszMemoryMap.__init__c Csv|jrt|jnd}d}d}d}tjj|||d|jt|j}t |||krZt d||_ t ||ddd|_ |S)Nr4rzFailed to create file mapping)r8rr r r CreateFileMappingWr7rr6r Exceptionfilemap MapViewOfFileview)rZp_SAZINVALID_HANDLE_VALUEZPAGE_READWRITEZFILE_MAP_WRITEr>rrr __enter__s*zMemoryMap.__enter__cCs ||_dSr$)r9)rr9rrrseekszMemoryMap.seekcCslt|tsJt|}|j||jkr2td||j|j}t|}tj j ||||j|7_dS)NzRefusing to write %d bytes) isinstancerlenr9r7 ValueErrorr@rc_size_tr r RtlMoveMemory)rmsgndestr7rrrwrites   zMemoryMap.writecCsFt|}|j|j}t|}tjj||||j|7_|jS)z0 Read n bytes from mapped view. ) rcreate_string_bufferr@r9rFr r rGraw)rrIoutrr7rrrreads    zMemoryMap.readcCs$tjj|jtjj|jdSr$)rr r UnmapViewOfFiler@Z CloseHandler>)rexc_typeexc_valtbrrr__exit__szMemoryMap.__exit__)N) r,r-r.r/rrArBrKrOrTrrrrr5s   r5iiir; @riiirc@seZdZdZdS) TokenAccessrVN)r,r-r. TOKEN_QUERYrrrrr[ sr[c@seZdZdZdS)TokenInformationClassrUN)r,r-r.Z TokenUserrrrrr]sr]c@s&eZdZdZdejfdejjfgZdS) TOKEN_USERrUSIDZ ATTRIBUTESN) r,r-r.numrc_void_prDWORD_fields_rrrrr^s r^c@sVeZdZdZejjZdZdej fdej fdefdej fdej fdej fd ej fgZ d S) SECURITY_DESCRIPTORz typedef struct _SECURITY_DESCRIPTOR { UCHAR Revision; UCHAR Sbz1; SECURITY_DESCRIPTOR_CONTROL Control; PSID Owner; PSID Group; PACL Sacl; PACL Dacl; } SECURITY_DESCRIPTOR; rUZRevisionZSbz1ControlZOwnerGroupZSaclZDaclN) r,r-r.r/rrZUSHORTZSECURITY_DESCRIPTOR_CONTROLREVISIONc_ubyterarcrrrrrds rdcsZeZdZdZdejjfdejfdejjfgZ fddZ e ddZ e j d dZ ZS) SECURITY_ATTRIBUTESz typedef struct _SECURITY_ATTRIBUTES { DWORD nLength; LPVOID lpSecurityDescriptor; BOOL bInheritHandle; } SECURITY_ATTRIBUTES; nLengthlpSecurityDescriptorbInheritHandlecs&tt|j|i|tt|_dSr$)rrirrsizeofrj)rr!kwargsr"rrrGszSECURITY_ATTRIBUTES.__init__cCs|jSr$) _descriptorr%rrr descriptorKszSECURITY_ATTRIBUTES.descriptorcCs||_t||_dSr$)ror addressofrk)rr rrrrpOs)r,r-r.r/rrrbraBOOLrcrr0rpsetterr1rrr"rri8s    ric Csvtj}tjj||jddt|t|j }t tjj||jt|t |t|t |t tjS)z: Given a token, get the token information for it. r)rrrbr advapi32GetTokenInformationr`r rLr r rmcastPOINTERr^contents)tokenZinformation_class data_sizedatarrrru_s   rucCs6tj}tj|}ttjj||t||Sr$)rrHANDLEr r rtOpenProcessTokenr )Z proc_handleaccessr3rrrr}ts   r}cCsttjjtj}t|tS)z< Return a TOKEN_USER for the owner of this process. ) r}rr r ZGetCurrentProcessr[r\rur^)processrrrget_current_usersrcCsn|durt}t|ts Jdt}t}||_d|_tjj t |tj tjj t ||jd|S)z Return a SECURITY_ATTRIBUTES structure with the SID set to the specified user (uses current user if none is specified). Nz user must be TOKEN_USER instancerUr)rrCr^rdrirprlrr rtZInitializeSecurityDescriptorr rgSetSecurityDescriptorOwnerr_)userZSDZSArrr get_security_attributes_for_users r)N)Jr/rZctypes.wintypesrZparamiko.py3compatrrrrr Z GMEM_MOVEABLEr r Z GlobalAllocrZUINTrFargtypesr|restypeZ GlobalLockZHGLOBALZLPVOIDZ GlobalUnlockrrZ GlobalSizer<ZCreateFileMappingrarbrr?rPrGZHLOCALrobjectr5Z READ_CONTROLZSTANDARD_RIGHTS_REQUIREDZSTANDARD_RIGHTS_READZSTANDARD_RIGHTS_WRITEZSTANDARD_RIGHTS_EXECUTEZSTANDARD_RIGHTS_ALLZPOLICY_VIEW_LOCAL_INFORMATIONZPOLICY_VIEW_AUDIT_INFORMATIONZPOLICY_GET_PRIVATE_INFORMATIONZPOLICY_TRUST_ADMINZPOLICY_CREATE_ACCOUNTZPOLICY_CREATE_SECRETZPOLICY_CREATE_PRIVILEGEZPOLICY_SET_DEFAULT_QUOTA_LIMITSZPOLICY_SET_AUDIT_REQUIREMENTSZPOLICY_AUDIT_LOG_ADMINZPOLICY_SERVER_ADMINZPOLICY_LOOKUP_NAMESZPOLICY_NOTIFICATIONZPOLICY_ALL_ACCESSZ POLICY_READZ POLICY_WRITEZPOLICY_EXECUTEr[r] Structurer^rdrirwrtrrur}rrrrrrs$                 D