%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/
Upload File :
Create Path :
Current File : //opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyc

�
�ac@s}dZddlZejdZdZdZdZdZdefd��YZ	de	fd	��YZ
d
e	fd��YZdS(s6	A pure python implementation of the DES and TRIPLE DES encryption algorithms.

Class initialization
--------------------
pyDes.des(key, [mode], [IV], [pad], [padmode])
pyDes.triple_des(key, [mode], [IV], [pad], [padmode])

key     -> Bytes containing the encryption key. 8 bytes for DES, 16 or 24 bytes
	   for Triple DES
mode    -> Optional argument for encryption type, can be either
	   pyDes.ECB (Electronic Code Book) or pyDes.CBC (Cypher Block Chaining)
IV      -> Optional Initial Value bytes, must be supplied if using CBC mode.
	   Length must be 8 bytes.
pad     -> Optional argument, set the pad character (PAD_NORMAL) to use during
	   all encrypt/decrpt operations done with this instance.
padmode -> Optional argument, set the padding mode (PAD_NORMAL or PAD_PKCS5)
	   to use during all encrypt/decrpt operations done with this instance.

I recommend to use PAD_PKCS5 padding, as then you never need to worry about any
padding issues, as the padding can be removed unambiguously upon decrypting
data that was encrypted using PAD_PKCS5 padmode.

Common methods
--------------
encrypt(data, [pad], [padmode])
decrypt(data, [pad], [padmode])

data    -> Bytes to be encrypted/decrypted
pad     -> Optional argument. Only when using padmode of PAD_NORMAL. For
	   encryption, adds this characters to the end of the data block when
	   data is not a multiple of 8 bytes. For decryption, will remove the
	   trailing characters that match this pad character from the last 8
	   bytes of the unencrypted data block.
padmode -> Optional argument, set the padding mode, must be one of PAD_NORMAL
	   or PAD_PKCS5). Defaults to PAD_NORMAL.
	  

Example
-------
from pyDes import *

data = "Please encrypt my data"
k = des("DESCRYPT", CBC, "", pad=None, padmode=PAD_PKCS5)
# For Python3, you'll need to use bytes, i.e.:
#   data = b"Please encrypt my data"
#   k = des(b"DESCRYPT", CBC, b"", pad=None, padmode=PAD_PKCS5)
d = k.encrypt(data)
print "Encrypted: %r" % d
print "Decrypted: %r" % k.decrypt(d)
assert k.decrypt(d, padmode=PAD_PKCS5) == data


See the module source (pyDes.py) for more examples of use.
You can also run the pyDes.py file without and arguments to see a simple test.

Note: This code was not written for high-end systems needing a fast
      implementation, but rather a handy portable solution with small usage.

i����Niiit_baseDescBs�eZedded�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd�Zd�Z
d	�Zd
�Zd�Zd�Zd
�ZRS(cCs�|r|j|�}n|r0|j|�}nd|_|rZ|tkrZtd��n|r�t|�|jkr�tdt|j�d��n||_||_||_||_	dS(Nis)Cannot use a pad character with PAD_PKCS5s2Invalid Initial Value (IV), must be a multiple of s bytes(
t_guardAgainstUnicodet
block_sizet	PAD_PKCS5t
ValueErrortlentstrt_modet_ivt_paddingt_padmode(tselftmodetIVtpadtpadmode((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyt__init__ls	 			cCs|jS(sgetKey() -> bytes(t
_baseDes__key(R((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pytgetKey~scCs|j|�}||_dS(s*Will set the crypting key for this object.N(RR(Rtkey((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pytsetKey�scCs|jS(s#getMode() -> pyDes.ECB or pyDes.CBC(R(R((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pytgetMode�scCs
||_dS(s6Sets the type of crypting mode, pyDes.ECB or pyDes.CBCN(R(RR((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pytsetMode�scCs|jS(s5getPadding() -> bytes of length 1. Padding character.(R	(R((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyt
getPadding�scCs+|dk	r|j|�}n||_dS(s5setPadding() -> bytes of length 1. Padding character.N(tNoneRR	(RR((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyt
setPadding�scCs|jS(s3getPadMode() -> pyDes.PAD_NORMAL or pyDes.PAD_PKCS5(R
(R((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyt
getPadMode�scCs
||_dS(sBSets the type of padding mode, pyDes.PAD_NORMAL or pyDes.PAD_PKCS5N(R
(RR((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyt
setPadMode�scCs|jS(sgetIV() -> bytes(R(R((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pytgetIV�scCsX|st|�|jkr<tdt|j�d��n|j|�}||_dS(s=Will set the Initial Value, used in conjunction with CBC modes2Invalid Initial Value (IV), must be a multiple of s bytesN(RRRRRR(RR
((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pytsetIV�s cCs)|dkr|j�}n|r<|tkr<td��n|tkr�t|�|jdkre|S|sz|j�}n|s�tdt|j�d��n||jt|�|j|7}n`|tkr%dt|�|j}t	dkr||t
|�7}q%|t|g|�7}n|S(Ns)Cannot use a pad character with PAD_PKCS5isData must be a multiple of sA bytes in length. Use padmode=PAD_PKCS5 or set the pad character.ii(RRRRt
PAD_NORMALRRRRt_pythonMajorVersiontchrtbytes(RtdataRRtpad_len((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyt_padData�s$ %cCs�|s
|S|r+|tkr+td��n|dkrF|j�}n|tkr�|sg|j�}n|r�||j ||jj|�}q�nC|tkr�tdkr�t	|d�}n
|d}|| }n|S(Ns)Cannot use a pad character with PAD_PKCS5ii����(
RRRRRRRtrstripRtord(RR"RRR#((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyt
_unpadData�s$
cCsttdkr-t|t�rptd��qpnCt|t�rpy|jd�SWntk
r`nXtd��n|S(Nis4pyDes can only work with bytes, not Unicode strings.tasciis6pyDes can only work with encoded strings, not Unicode.(Rt
isinstancetunicodeRRtencodetUnicodeEncodeError(RR"((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyR�s
N(t__name__t
__module__tECBRRRRRRRRRRRRRR$R'R(((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyRks												tdescGBs�
eZdZddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8g8ZddddddddddddddddgZd+ddd9dd4dd5d#d,d2dd"dd7d8d
d:d;d$dd6d3dddd!d0ddd)d<dd/dd=ddd d>dd.d'dd
dd1d?g0Zd	d
ddd
dddddddd5d6d7d8d%d&d'd(d)d*d+d,d@d>d=d<d?d9d;d:ddddddddddddddddd-d.d/d0d1d2d3d4dddd d!d"d#d$g@Zd?dddd8d4d8d4d,d$d:dd:dddd7d3d7d3d+d#d;dd;dddd6d2d6d2d*d"d9dd9dd
dd5d1d5d1d)d!d?dg0Zd#d4d+ddd;d7dd8dd$d3d,ddd:dd;d:d4d#dd+ddd$d3d7dd,d8dd4dd#dd+d$dd7d;d3dd:d8dd,dd;d3ddd4ddd:d,d7d8d#ddd$d+g@d;ddd#d$d7d8d4dd:dd+d3dd,dd8d+d4d:d;ddd#d3dddd$dd7d,dd#d:d7dd4d+dd,dd3d$dd8dd;d+dddd8d;d4dd7d$d:d3dd,d#dg@dddd#d$d8d;d,dd+d3d:d7d4ddd+d:ddd8d4d$dddd,d#d3d7d;dd+d$d4ddd;d8dd7ddd3d,dd#d:ddd+dd$ddd:d4d;d#d8d7d,dd3g@d:d+d#d8dd$dddddd,d7d3d4d;d+dd7d,d$d;dd8d4d:dd3ddd#ddd$ddd3d7d:d+d;dd8d#d,ddd4d8d;dd$ddd+ddd4d,d7d3d:dd#g@dd3d4dd:dd7d$dd,d8d;d+dd#dd#d7dd3d4d:d+dd,dd;dd8ddd$d4ddd7dd+d:dd;dd3d,d$d8dd#d7dd3d:dd#dd+d$d;dddd4d,d8g@d3ddd;ddd$ddd+d8d4d#d:d,d7dd;d4dd:d3dd,d$dd+d#dd7d8ddd#d;d,ddd3d8d:dd4ddd+d7d$d4d8dd3dd,d;dd7d#dd:d$ddd+g@d4d7dd#d;ddd+d8d3dd:d,dd$dd+dd7d:d4dddd#d8d,d3dd;dd$dd4d7d+d3d8d:d#dd;d$ddd,ddd$d7d+ddd4dd:dd,dd;d#dd8d3g@d+ddd4d$d;d7dddd8d#d,dd3d:dd;d+ddd8d:d4d3d,d$d7dd#ddd:d7d4ddd3d#ddd$dd+d;d8d,dddd#d:d4ddd+d;d3ddd8d,d$d7g@gZd;d$d6d2d1d7d5ddd#d"d
d4dd!ddd:d9d+d?ddddd3d)d,d*dd8dg Z	d<d:d=d;d>d9d@d?d d$dd#dd"dd!d(d,d'd+d&d*d%d)d0d4d/d3d.d2d-d1dd8dd7dd6dd5ddddddddddddd
dd	d
ddddddddg@Z
dZdZe
dKdKedA�ZdB�ZdC�ZdD�ZdE�ZdF�ZdG�ZdH�ZdKdKdI�ZdKdKdJ�ZRS(Ls�DES encryption/decrytpion class

	Supports ECB (Electronic Code Book) and CBC (Cypher Block Chaining) modes.

	pyDes.des(key,[mode], [IV])

	key  -> Bytes containing the encryption key, must be exactly 8 bytes
	mode -> Optional argument for encryption type, can be either pyDes.ECB
		(Electronic Code Book), pyDes.CBC (Cypher Block Chaining)
	IV   -> Optional Initial Value bytes, must be supplied if using CBC mode.
		Must be 8 bytes in length.
	pad  -> Optional argument, set the pad character (PAD_NORMAL) to use
		during all encrypt/decrpt operations done with this instance.
	padmode -> Optional argument, set the padding mode (PAD_NORMAL or
		PAD_PKCS5) to use during all encrypt/decrpt operations done
		with this instance.
	i8i0i(i iiiii9i1i)i!iii	ii:i2i*i"iii
ii;i3i+i#i>i6i.i&iiiii=i5i-i%iii
ii<i4i,i$iiiiiiiiiiii'i/i7ii?cCs�t|�dkr!td��ntj|||||�d|_g|_g|_dgdgd|_g|_|j	|�dS(Nis7Invalid DES key size. Key must be exactly 8 bytes long.ii0i(
RRRRtkey_sizetLtRtKntfinalR(RRRR
RR((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyR�s				cCstj||�|j�dS(s;Will set the crypting key for this object. Must be 8 bytes.N(RRt_des__create_sub_keys(RR((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyR�scCs�tdkr.g|D]}t|�^q}nt|�d}dg|}d}xf|D]^}d}xO|dkr�|d|>@dkr�d||<n
d||<|d7}|d8}qgWqXW|S(s2Turn the string data, into a list of bits (1, 0)'siiiii(RR&R(RR"tctltresulttpostchti((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyt__String_to_BitList�s"




cCs�g}d}d}x`|t|�krt|||d|d>7}|ddkrg|j|�d}n|d7}qWtdkr�djg|D]}t|�^q��St|�SdS(s,Turn the list of bits -> data, into a stringiiiiitN(RtappendRtjoinR R!(RR"R9R:R7((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyt__BitList_to_String�s
	&cstt�fd�|��S(s-Permutate this block with the specified tablecs�|S(N((tx(tblock(sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyt<lambda>�R>(tlisttmap(RttableRC((RCsD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyt__permutate�scCs�|jtj|j|j���}d}|d |_|d|_x�|dkr�d}xc|tj|kr�|jj|jd�|jd=|jj|jd�|jd=|d7}q\W|jtj	|j|j�|j
|<|d7}qGWdS(s6Create the 16 subkeys K[1] to K[16] from the given keyiiiiN(t_des__permutateR0t	_des__pc1t_des__String_to_BitListRR2R3t_des__left_rotationsR?t	_des__pc2R4(RRR<tj((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyt__create_sub_keys�s$



&c	Cs�|jtj|�}|d |_|d|_|tjkrMd}d}nd}d}d}x#|dkr�|j}|jtj|j�|_ttd�|j|j	|��|_|jd |jdd	!|jd	d
!|jd
d!|jdd!|jdd
!|jd
d!|jdg}d}dgd}	d}
x�|dkr'||dd>||d}||dd>||dd>||dd>||d}tj
||d>|}
|
d@d?|	|
<|
d@d?|	|
d<|
d@d?|	|
d<|
d@|	|
d<|
d7}
|d7}q?W|jtj|	�|_ttd�|j|j��|_||_|d7}||7}qbW|jtj|j|j�|_
|j
S(s4Crypt the block of data through DES bit-manipulationi iiii����icSs||AS(N((RBty((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyRD�R>iiiiii$i*iiiiicSs||AS(N((RBRP((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyRD!R>(RIR0t_des__ipR2R3tENCRYPTt_des__expansion_tableRERFR4t
_des__sboxt_des__pt_des__fpR5(RRCt
crypt_typet	iterationtiteration_adjustmentR<ttempRtBRNtBnR:tmtntv((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyt__des_crypt�sD

	
(h
>
$	
"c	Cs%|s
dSt|�|jdkr�|tjkrRtdt|j�d��n|j�s~tdt|j�d��q�||jt|�|j|j�7}n|j�tkr�|j	�r�|j
|j	��}q�td��nd}i}g}x�|t|�kr�|j
|||d!�}|j�tkr�|tjkrntt
d�||��}n|j||�}|tjkr�tt
d	�||��}|}q�|}n|j||�}|j|j|��|d7}qWtd
krdj|�Stjd�j|�SdS(s8Crypt the data in blocks, running it through des_crypt()R>is0Invalid data length, data must be a multiple of s bytes
.s3 bytes
. Try setting the optional padding charactersBFor CBC mode, you must supply the Initial Value (IV) for cipheringicSs||AS(N((RBRP((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyRD^R>cSs||AS(N((RBRP((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyRDgR>iN(RRR0tDECRYPTRRRRtCBCRRKRRRERFt_des__des_cryptR?t_des__BitList_to_StringRR@R!tfromhex(	RR"RWtivR<tdictR9RCtprocessed_block((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pytcrypt4s>  +
		
cCsU|j|�}|dk	r-|j|�}n|j|||�}|j|tj�S(sencrypt(data, [pad], [padmode]) -> bytes

		data : Bytes to be encrypted
		pad  : Optional argument for encryption padding. Must only be one byte
		padmode : Optional argument for overriding the padding mode.

		The data must be a multiple of 8 bytes and will be encrypted
		with the already specified key. Data does not have to be a
		multiple of 8 bytes if the padding character is supplied, or
		the padmode is set to PAD_PKCS5, as bytes will then added to
		ensure the be padded data is a multiple of 8 bytes.
		N(RRR$RiR0RR(RR"RR((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pytencrypt�s

cCsU|j|�}|dk	r-|j|�}n|j|tj�}|j|||�S(s�decrypt(data, [pad], [padmode]) -> bytes

		data : Bytes to be encrypted
		pad  : Optional argument for decryption padding. Must only be one byte
		padmode : Optional argument for overriding the padding mode.

		The data must be a multiple of 8 bytes and will be decrypted
		with the already specified key. In PAD_NORMAL mode, if the
		optional padding character is supplied, then the un-encrypted
		data will have the padding characters removed from the end of
		the bytes. This pad removal only occurs on the last 8 bytes of
		the data (last data block). In PAD_PKCS5 mode, the special
		padding end markers will be removed from the data after decrypting.
		N(RRRiR0RaR'(RR"RR((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pytdecrypt�s
N(R-R.t__doc__RJRLRMRQRSRTRURVRRRaR/RRRRRKRdRIR6RcRiRjRk(((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyR0�s�600030003000300030003000300030009						O	Nt
triple_descBsneZdZed	d	ed�Zd�Zd�Zd�Z	d�Z
d�Zd	d	d�Zd	d	d�Z
RS(
s�Triple DES encryption/decrytpion class

	This algorithm uses the DES-EDE3 (when a 24 byte key is supplied) or
	the DES-EDE2 (when a 16 byte key is supplied) encryption methods.
	Supports ECB (Electronic Code Book) and CBC (Cypher Block Chaining) modes.

	pyDes.des(key, [mode], [IV])

	key  -> Bytes containing the encryption key, must be either 16 or
	        24 bytes long
	mode -> Optional argument for encryption type, can be either pyDes.ECB
		(Electronic Code Book), pyDes.CBC (Cypher Block Chaining)
	IV   -> Optional Initial Value bytes, must be supplied if using CBC mode.
		Must be 8 bytes in length.
	pad  -> Optional argument, set the pad character (PAD_NORMAL) to use
		during all encrypt/decrpt operations done with this instance.
	padmode -> Optional argument, set the padding mode (PAD_NORMAL or
		PAD_PKCS5) to use during all encrypt/decrpt operations done
		with this instance.
	cCs*tj|||||�|j|�dS(N(RRR(RRRR
RR((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyR�scCs_d|_t|�|jkrKt|�dkr<d|_qKtd��n|j�tkr�|j�s|||j |_nt|j��|jkr�td��q�nt|d |j	|j|j
|j�|_t|dd!|j	|j|j
|j�|_
|jdkr |j|_n+t|d|j	|j|j
|j�|_tj||�dS(sFWill set the crypting key for this object. Either 16 or 24 bytes long.iisCInvalid triple DES key size. Key must be either 16 or 24 bytes longs%Invalid IV, must be 8 bytes in lengthiN(R1RRRRbRRRR0RR	R
t_triple_des__key1t_triple_des__key2t_triple_des__key3RR(RR((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyR�s&	cCsDtj||�x-|j|j|jfD]}|j|�q)WdS(s6Sets the type of crypting mode, pyDes.ECB or pyDes.CBCN(RRRnRoRp(RRR((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyR�scCsDtj||�x-|j|j|jfD]}|j|�q)WdS(s5setPadding() -> bytes of length 1. Padding character.N(RRRnRoRp(RRR((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyR�scCsDtj||�x-|j|j|jfD]}|j|�q)WdS(sBSets the type of padding mode, pyDes.PAD_NORMAL or pyDes.PAD_PKCS5N(RRRnRoRp(RRR((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyR�scCsDtj||�x-|j|j|jfD]}|j|�q)WdS(s=Will set the Initial Value, used in conjunction with CBC modeN(RRRnRoRp(RR
R((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyR�sc	Cs�tj}tj}|j|�}|dk	r?|j|�}n|j|||�}|j�tkr�|jj	|j
��|jj	|j
��|jj	|j
��d}g}x�|t
|�kr]|jj|||d!|�}|jj||�}|jj||�}|jj	|�|jj	|�|jj	|�|j|�|d7}q�Wtdkrwdj|�Stjd�j|�Sn=|jj||�}|jj||�}|jj||�SdS(sencrypt(data, [pad], [padmode]) -> bytes

		data : bytes to be encrypted
		pad  : Optional argument for encryption padding. Must only be one byte
		padmode : Optional argument for overriding the padding mode.

		The data must be a multiple of 8 bytes and will be encrypted
		with the already specified key. Data does not have to be a
		multiple of 8 bytes if the padding character is supplied, or
		the padmode is set to PAD_PKCS5, as bytes will then added to
		ensure the be padded data is a multiple of 8 bytes.
		iiiR>N(R0RRRaRRR$RRbRnRRRoRpRRiR?RR@R!Re(	RR"RRRRRaR<R9RC((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyRj�s6
		 

c
Cs�tj}tj}|j|�}|dk	r?|j|�}n|j�tkr�|jj|j	��|j
j|j	��|jj|j	��d}g}x�|t|�krN|||d!}|jj
||�}	|j
j
|	|�}	|jj
|	|�}	|jj|�|j
j|�|jj|�|j|	�|d7}q�Wtdkrmdj|�}q�tjd�j|�}n?|jj
||�}|j
j
||�}|jj
||�}|j|||�S(s�decrypt(data, [pad], [padmode]) -> bytes

		data : bytes to be encrypted
		pad  : Optional argument for decryption padding. Must only be one byte
		padmode : Optional argument for overriding the padding mode.

		The data must be a multiple of 8 bytes and will be decrypted
		with the already specified key. In PAD_NORMAL mode, if the
		optional padding character is supplied, then the un-encrypted
		data will have the padding characters removed from the end of
		the bytes. This pad removal only occurs on the last 8 bytes of
		the data (last data block). In PAD_PKCS5 mode, the special
		padding end markers will be removed from the data after
		decrypting, no pad character is required for PAD_PKCS5.
		iiiR>N(R0RRRaRRRRbRnRRRoRpRRiR?RR@R!ReR'(
RR"RRRRRaR<R9RfRC((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyRk's8		
N(R-R.RlR/RRRRRRRRRjRk(((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyRm�s					,(Rltsystversion_infoRR/RbRRtobjectRR0Rm(((sD/opt/plesk/python/2.7/lib/python2.7/site-packages/smb/utils/pyDes.pyt<module>Us
	���

Zerion Mini Shell 1.0