%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python2.7/site-packages/salt/utils/
Upload File :
Create Path :
Current File : //usr/lib/python2.7/site-packages/salt/utils/smb.pyc

�
���^c@@s�dZddlmZmZmZddlZddlZddlZddl	Zddl
ZddlZeje
�ZddlmZy6ddlZddlmZddlmZeZWnek
r�eZnXy�ddlmZddlmZddlm Z dd	l!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*dd
l+m,Z,m-Z-m.Z.ddl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5ejd�j6ej7�eZ8Wnek
r�eZ8nXd
e9fd��YZ:de9fd��YZ;dddddd�Z=dddddd�Z>ddddd�Z?dddddd�Z@dddddd�ZAdddddd�ZBdddddd�ZCdddddd�ZDdddddd�ZEdddddd�ZFdddddd'd�ZGdddddd �ZHdddddd!�ZIdddddd"�ZJdddddd#�ZKdddddd$�ZLdddddd%�ZMdddddd&�ZNdS((u;
Utility functions for SMB connections

:depends: impacket
i(tabsolute_importtprint_functiontunicode_literalsN(t
MissingSmb(tSessionError(t
Connection(tSession(tTreeConnect(	tOpentImpersonationLeveltFilePipePrinterAccessMasktFileAttributestCreateDispositiont
CreateOptionstShareAccesstDirectoryAccessMasktFileInformationClass(tCreateContextNametSMB2CreateContextRequestt#SMB2CreateQueryMaximalAccessRequest(tAccessAllowedAcet
AccessMaskt	AclPackett	SDControlt	SIDPackettSMB2CreateSDBufferusmbprotocoltSMBProtocB@sneZdd�Zd�Zd�Zed��Zd�Zed��Z	e
d��Zeed��Z
RS(	i�cC@s[tj�}tj|�}||_t|||dt�}t|||dt�|_	dS(Ntrequire_signingtrequire_encryption(
tuuidtuuid4tsockett
gethostbynametserverRtTrueRtFalsetsession(tselfR!tusernametpasswordtportt
connection_idtaddrt
connection((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pyt__init__6s
	cC@s|jj�|jj�dS(N(R+tconnectR$(R%((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pyR-=s
cC@s|jjjt�dS(N(R$R+t
disconnectR"(R%((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pytcloseAscC@s
|jjS(N(R$R+(R%((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pyR+DscC@sG|jd�r'dj|j|�}nt|j|�}|j�|S(Nu$u\\{}\{}(tendswithtformatR!RR$R-(R%tsharettree((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pyttree_connectHs

cC@s
|jd�S(Nu\(tlstrip(tfile((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pytnormalize_filenameOscC@s%|j|�}t�}tj|d<t�|d<t�}|jd�t�}tj	|d<||d<t
�}|g|d<t�}|djt
j�|j|�t�}tj|d<||d<||g}	t||�}
|
jtjtjtjBtjtjtjBtjtj �}|
S(Nubuffer_nameubuffer_datauS-1-1-0umaskusiduacesucontrol(!R7RRt(SMB2_CREATE_QUERY_MAXIMAL_ACCESS_REQUESTRRtfrom_stringRRtGENERIC_ALLRRtset_flagRt
SELF_RELATIVEtset_dacltSMB2_CREATE_SD_BUFFERRtcreateR	t
ImpersonationR
tGENERIC_READt
GENERIC_WRITERtFILE_ATTRIBUTE_NORMALRtFILE_SHARE_READtFILE_SHARE_WRITERtFILE_OVERWRITE_IFR
tFILE_NON_DIRECTORY_FILE(tclsR3R6tmax_reqteveryone_sidtacetacltsec_desct	sd_buffertcreate_contextst	file_opent	open_info((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pyt	open_fileSs:	

	
	

	
	
	

	
cC@sXt||�}|rT|jtjtjtjBtjt	j
t	jBtj
tj�n|S(N(RR?R	R@RRARBRtFILE_ATTRIBUTE_DIRECTORYRRDRERtFILE_OPEN_IFR
tFILE_DIRECTORY_FILE(R3tnameR?tdir_open((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pytopen_directoryzs


(t__name__t
__module__R,R-R/tpropertyR+R4tstaticmethodR7tclassmethodRRR#RX(((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pyR4s			't	StrHandlecB@s#eZdZd�Zdd�ZRS(u�
    Fakes a file handle, so that raw strings may be uploaded instead of having
    to write files first. Used by put_str()
    cC@s||_t|_dS(u
        Init
        N(tcontentR#tfinished(R%R_((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pyR,�s	cC@s|jst|_|jSdS(u*
        Looks like a file handle
        u(R`R"R_(R%t	writesize((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pytstring�s		N(RYRZt__doc__R,tNoneRb(((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pyR^�s	i�cC@s;tjjd|d|d|�}|jd|d|�|S(Nt
remoteNamet
remoteHosttmyNametuserR'(timpackett
smbconnectiont
SMBConnectiontlogin(thostR&R'tclient_nameR(tconn((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pyt_get_conn_impacket�s	ucC@s#t||||�}|j�|S(N(RR-(RmR&R'RnR(Ro((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pyt_get_conn_smbprotocol�s
cC@s|tr&tr&tjjjdd�ntrOtjd�t|||d|�Strxtjd�t	|||d|�St
S(u
    Get an SMB connection
    uSodiumujSupport of impacket has been depricated and will be removed in Sodium. Please install smbprotocol instead.uGet connection smbprotocolR(uGet connection impacket(tHAS_IMPACKETtHAS_SMBPROTOCOLtsalttutilstversionst
warn_untiltlogtinfoRqRpR#(RmR&R'R(((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pytget_conn�s



uC$c
C@s�|dkr!t|||�}n|tkr1tS|jd�}d}xy|D]q}dj|d|!�}	y|j||	�Wn4ttfk
r�tj	d�|j
||	�nX|d7}qMWdS(u�
    Recursively create a directory structure on an SMB share

    Paths should be passed in with forward-slash delimiters, and should not
    start with a forward-slash.
    u/iu\iu'Encountered error running conn.listPathN(RdRzR#tsplittjointlistPathtsmbSessionErrortsmb3SessionErrorRxt	exceptiontcreateDirectory(
tpathR2RoRmR&R'tcompstpostcomptcwd((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pyt_mkdirs_impacket�s

cC@s>|dkr!t|||�}n|tkr1tS|j|�}|jd�}d}x�|D]�}	dj|d|!�}
|j||
dt�}|jdt	j
dt�|jtdt�g}|jj
jg|D]}
|
d^q�|jj|j�}x.t|�D] \}}||d|�}qW|d7}q\WdS(Nu/iu\iR?u*tsend(RdRzR#R4R{R|RXR"tquery_directoryRtFILE_NAMES_INFORMATIONR/R$R+t
send_compoundt
session_idttree_connect_idt	enumerate(R�R2RoRmR&R'R3R�R�R�R�RWtcompound_messagestxtrequeststitrequesttresponse((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pyt_mkdirs_smbprotocol�s(
		&	cC@sftr+t||d|d|d|d|�StrVt||d|d|d|d|�Std��dS(NRoRmR&R'u.SMB library required (impacket or smbprotocol)(RsR�RrR�R(R�R2RoRmR&R'((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pytmkdirs�s
%%cC@sW|dkr!t|||�}n|tkr1tSt|�}|j|||j�dS(N(RdRzR#R^tputFileRb(R_R�R2RoRmR&R'tfh_((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pyt_put_str_impacket�sc	C@s�|dkr!t|||�}n|tkr1tS|j|�}z5|j||�}|jtjjj	|�d�Wd|j
�XdS(Ni(RdRzR#R4RRtwriteRtRutstringutilstto_bytesR/(	R_R�R2RoRmR&R'R3RP((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pyt_put_str_smbprotocol
s#cC@sltr.t|||d|d|d|d|�Str\t|||d|d|d|d|�Std��dS(u�
    Wrapper around impacket.smbconnection.putFile() that allows a string to be
    uploaded, without first writing it as a local file
    RoRmR&R'u.SMB library required (impacket or smbprotocol)N(RsR�RrR�R(R_R�R2RoRmR&R'((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pytput_strs
%cC@s�|dkr!t|||�}n|tkr1tSt|d�rW|j|||�dStjjj|d��}|j|||j	�WdQXdS(u;
    Wrapper around impacket.smbconnection.putFile() that allows a file to be
    uploaded

    Example usage:

        import salt.utils.smb
        smb_conn = salt.utils.smb.get_conn('10.0.0.45', 'vagrant', 'vagrant')
        salt.utils.smb.put_file('/root/test.pdf', 'temp\myfiles\test1.pdf', conn=smb_conn)
    ureadNurb(
RdRzR#thasattrR�RtRutfilestfopentread(t
local_pathR�R2RoRmR&R'R�((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pyt_put_file_impacket*sic
	C@s�|dkr!t|||�}n|tkr1tS|j|�}|j||�}	tjjj|d��h}
zPd}xCt	r�|
j
|�}|s�Pn|	j||�|t|�7}qyWWd|	j
t�XWdQXdS(Nurbi(RdRzR#R4RRRtRuR�R�R"R�R�tlenR/(
R�R�R2RoRmR&R't
chunk_sizeR3RPR�tpositiontchunk((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pyt_put_file_smbprotocolBs 	cC@sltr.t|||d|d|d|d|�Str\t|||d|d|d|d|�Std��dS(u;
    Wrapper around impacket.smbconnection.putFile() that allows a file to be
    uploaded

    Example usage:

        import salt.utils.smb
        smb_conn = salt.utils.smb.get_conn('10.0.0.45', 'vagrant', 'vagrant')
        salt.utils.smb.put_file('/root/test.pdf', 'temp\myfiles\test1.pdf', conn=smb_conn)
    RoRmR&R'u.SMB library required (impacket or smbprotocol)N(RsR�RrR�R(R�R�R2RoRmR&R'((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pytput_fileYscC@sE|dkr!t|||�}n|tkr1tS|j||�dS(N(RdRzR#t
deleteFile(R�R2RoRmR&R'((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pyt_delete_file_impacketqs
c	C@s5|dkr!t|||�}n|tkr1tS|j|�}t||�}|jtjtj	tj
Btjt
jt
jBtjtjtjBdt�|jtdt�g}|jjg|D]}	|	d^q�|jj|jdt�}
g}x;t|
�D]-\}}
||d|
�}|j|�qWdS(NR�itrelatedi(RdRzR#R4RR?R	R@R
RAtDELETERRCRRDRERt	FILE_OPENR
RGtFILE_DELETE_ON_CLOSER/R+R�R$R�R�R"R�tappend(R�R2RoRmR&R'R3RPtdelete_msgsR�R�t	responsesR�R�R�((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pyt_delete_file_smbprotocolys0

#	cC@sftr+t||d|d|d|d|�StrVt||d|d|d|d|�Std��dS(NRoRmR&R'u.SMB library required (impacket or smbprotocol)(RsR�RrR�R(R�R2RoRmR&R'((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pytdelete_file�s
%%cC@sE|dkr!t|||�}n|tkr1tS|j||�dS(N(RdRzR#tdeleteDirectory(R�R2RoRmR&R'((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pyt_delete_directory_impacket�s
c	C@s*|dkr!t|||�}n|tkr1tStjd||�|j|�}t||�}|jtj	t
jtj
dtjtjtjBdt�|jtdt�g}|jjg|D]}	|	d^q�d|jjd|jdt�}
x.t|
�D] \}}||d|�}
qWdS(Nu3_delete_directory_smbprotocol - share: %s, path: %siR�tsidttidR�i(RdRzR#RxtdebugR4RR?R	R@RR�RRSRR�R
RUR�R/R+R�R$R�R�R"R�(R�R2RoRmR&R'R3RWR�R�tdelete_reqsR�R�R�((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pyt_delete_directory_smbprotocol�s.
&		cC@sftr+t||d|d|d|d|�StrVt||d|d|d|d|�Std��dS(NRoRmR&R'u.SMB library required (impacket or smbprotocol)(RsR�RrR�R(R�R2RoRmR&R'((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pytdelete_directory�s""i(ORct
__future__RRRRRtsalt.utils.filesRttsalt.utils.stringutilstsalt.utils.versionstloggingt	getLoggerRYRxtsalt.exceptionsRtimpacket.smbconnectionRiRR~t
impacket.smb3RR"RrtImportErrorR#tsmbprotocol.connectionRtsmbprotocol.sessionRtsmbprotocol.treeRtsmbprotocol.openRR	R
RRR
RRRtsmbprotocol.create_contextsRRRtsmbprotocol.security_descriptorRRRRRRtsetLeveltWARNINGRstobjectRR^RdRpRqRzR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�(((s2/usr/lib/python2.7/site-packages/salt/utils/smb.pyt<module>sb


@.


V



Zerion Mini Shell 1.0