3 L]^,@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?ZBejCeAejejjfej 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}tjj}d}d} tjjj||||tj||| } t| |j} tjjj || S)zf Call FormatMessage with a system error number to retrieve the descriptive error message. iNr) ctypeswintypesLPWSTRwindllkernel32ZFormatMessageWbyrefhandle_nonzero_successvalue LocalFree) errnoZALLOCATE_BUFFERZ FROM_SYSTEMflagssourceZ message_idZ language_idZ result_buffer buffer_size argumentsbytesmessager6/tmp/pip-install-wfra5znf/paramiko/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|dkrtjjj}t|}tjdkr4d|d|f}n||f}tt|j |dS)Nr)rr) rrr Z GetLastErrorrsys version_infosuperr__init__)selfr strerrorargs) __class__rrr;s  zWindowsError.__init__cCs|jS)N)r)rrrrrEszWindowsError.messagecCs|jS)N)winerror)rrrrcodeIszWindowsError.codecCs|jS)N)r)rrrr__str__MszWindowsError.__str__cCsdjftS)Nz*{self.__class__.__name__}({self.winerror}))formatvars)rrrr__repr__PszWindowsError.__repr__)N) __name__ __module__ __qualname____doc__rpropertyrr#r$r' __classcell__rr)r!rr7s   rcCs|dkrtdS)Nr)r)resultrrrr Tsr c@sBeZdZdZdddZddZddZd d Zd d Zd dZ dS) MemoryMapzL A memory map object which can have security attributes overridden. NcCs||_||_||_d|_dS)Nr)namelengthsecurity_attributespos)rr1r2r3rrrrszMemoryMap.__init__cCsv|jrtj|jnd}d}d}d}tjjj|||d|jt|j}t |||krZt d||_ t ||ddd|_ |S)Nr/rzFailed to create file mapping)r3rr rr CreateFileMappingWr2rr1r Exceptionfilemap MapViewOfFileview)rZp_SAZINVALID_HANDLE_VALUEZPAGE_READWRITEZFILE_MAP_WRITEr:rrr __enter__s$ zMemoryMap.__enter__cCs ||_dS)N)r4)rr4rrrseekszMemoryMap.seekcCslt|tstt|}|j||jkr2td||j|j}tj |}tj j j ||||j|7_dS)NzRefusing to write %d bytes) isinstancerAssertionErrorlenr4r2 ValueErrorr<rc_size_trr RtlMoveMemory)rmsgndestr2rrrwrites   zMemoryMap.writecCsFtj|}|j|j}tj|}tjjj||||j|7_|jS)z0 Read n bytes from mapped view. ) rcreate_string_bufferr<r4rCrr rDraw)rrFoutrr2rrrreads    zMemoryMap.readcCs$tjjj|jtjjj|jdS)N)rrr UnmapViewOfFiler<Z CloseHandler:)rexc_typeexc_valtbrrr__exit__szMemoryMap.__exit__)N) r(r)r*r+rr=r>rHrLrQrrrrr0s   r0iiir5r6 @riiiic@seZdZdZdS) TokenAccessrRN)r(r)r* TOKEN_QUERYrrrrrW srWc@seZdZdZdS)TokenInformationClassr5N)r(r)r*Z TokenUserrrrrrYsrYc@s&eZdZdZdejfdejjfgZdS) TOKEN_USERr5SIDZ ATTRIBUTESN) r(r)r*numrc_void_prDWORD_fields_rrrrrZsrZc@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; r5ZRevisionZSbz1ZControlZOwnerGroupZSaclZDaclN) r(r)r*r+rrZUSHORTZSECURITY_DESCRIPTOR_CONTROLREVISIONc_ubyter]r_rrrrr`s r`csZeZdZdZdejjfdejfdejjfgZ 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||tjt|_dS)N)rrdrrsizeofre)rr kwargs)r!rrrGszSECURITY_ATTRIBUTES.__init__cCs|jS)N) _descriptor)rrrr descriptorKszSECURITY_ATTRIBUTES.descriptorcCs||_tj||_dS)N)rjr addressofrf)rr rrrrkOs)r(r)r*r+rrr^r]BOOLr_rr,rksetterr-rr)r!rrd8s   rdcCsvtjj}tjjj||jddtj|tj|j }t tjjj||jtj|tj |tj|tj |tj tjS)z: Given a token, get the token information for it. r)rrr^radvapi32GetTokenInformationr\r rIr r rhcastPOINTERrZcontents)tokenZinformation_classZ data_sizedatarrrrp_s  rpcCs6tjj}tjj|}ttjjj||tj||S)N)rrHANDLEr rroOpenProcessTokenr )Z proc_handleaccessr.rrrrwts   rwcCsttjjjtj}t|tS)z< Return a TOKEN_USER for the owner of this process. ) rwrrr ZGetCurrentProcessrWrXrprZ)processrrrget_current_usersrzcCsn|dkrt}t|ts tdt}t}||_d|_tj j j tj |tj tj j jtj ||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 instancer5r)rzr?rZr@r`rdrkrgrrroZInitializeSecurityDescriptorr rbSetSecurityDescriptorOwnerr[)userZSDZSArrr get_security_attributes_for_usersr})N)Jr+rZctypes.wintypesrZparamiko.py3compatrrrrr Z GMEM_MOVEABLErr Z GlobalAllocrZUINTrCargtypesrvrestypeZ GlobalLockZHGLOBALZLPVOIDZ GlobalUnlockrmZ GlobalSizer8ZCreateFileMappingr]r^rr;rMrDZHLOCALr objectr0Z 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_EXECUTErWrY StructurerZr`rdrrror{rprwrzr}rrrrs$                  D4 $