U q`^,@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-nv4zd3e_/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|dkrtjj}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__cCsdjftS)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|tstt|}|j||jkr2td||j|j}t |}tj j ||||j|7_dS)NzRefusing to write %d bytes) isinstancerAssertionErrorlenr9r7 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@r9rGr r rHraw)rrJoutrr7rrrreads    zMemoryMap.readcCs$tjj|jtjj|jdSr$)rr r UnmapViewOfFiler@Z CloseHandler>)rexc_typeexc_valtbrrr__exit__szMemoryMap.__exit__)N) r,r-r.r/rrArBrLrPrUrrrrr5s   r5iiir; @riiirc@seZdZdZdS) TokenAccessrWN)r,r-r. TOKEN_QUERYrrrrr\ sr\c@seZdZdZdS)TokenInformationClassrVN)r,r-r.Z TokenUserrrrrr^sr^c@s&eZdZdZdejfdejjfgZdS) TOKEN_USERrVSIDZ 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; rVZRevisionZSbz1ZControlZOwnerGroupZSaclZDaclN) r,r-r.r/rrZUSHORTZSECURITY_DESCRIPTOR_CONTROLREVISIONc_ubyterbrdrrrrres recsZeZdZdZdejjfdejfdejjfgZ 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||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/rrrcrbBOOLrdrr0rpsetterr1rrr"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)rrrcr advapi32GetTokenInformationrar rMr 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_users  rcCsn|dkrt}t|ts tdt}t}||_d|_tj j t |tj tj j 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 instancerVr)rrCr_rDrerirprlrr rtZInitializeSecurityDescriptorr rgSetSecurityDescriptorOwnerr`)userZSDZSArrr get_security_attributes_for_users"r)N)Jr/rZctypes.wintypesrZparamiko.py3compatrrrrr Z GMEM_MOVEABLEr r Z GlobalAllocrZUINTrGargtypesr|restypeZ GlobalLockZHGLOBALZLPVOIDZ GlobalUnlockrrZ GlobalSizer<ZCreateFileMappingrbrcrr?rQrHZHLOCALrobjectr5Z 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_rerirwrtrrur}rrrrrrs$                 D