403Webshell
Server IP : 127.0.0.1  /  Your IP : 216.73.216.109
Web Server : Apache/2.4.54 (Win64) OpenSSL/1.1.1q PHP/8.1.10
System : Windows NT DESKTOP-E5T4RUN 10.0 build 19045 (Windows 10) AMD64
User : SERVERWEB ( 0)
PHP Version : 8.1.10
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : OFF |  Perl : OFF |  Python : OFF |  Sudo : OFF |  Pkexec : OFF
Directory :  C:/cygwin64/lib/python3.9/__pycache__/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : C:/cygwin64/lib/python3.9/__pycache__/tarfile.cpython-39.opt-2.pyc
a

		d�s�@sBdZdZdZddlmZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZzddlZWney�dZYn0zddlZWney�dZYn0eefZzeef7ZWney�Yn0gd�ZdZdZed	Zd
ZdZdZdZd
ZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1e1Z2e e!e"e#e&e'e(e$e%e)e*e+fZ3e e!e(e+fZ4e)e*e+fZ5dZ6hd�Z7e8e8e8e9e9e9d �Z:ej;d!k�r�d"Z<ne�=�Z<d#d$�Z>d%d&�Z?d'd(�Z@d)e2fd*d+�ZAd,d-�ZBdedfd.d/�ZCd0d1�ZDGd2d3�d3eE�ZFGd4d5�d5eF�ZGGd6d7�d7eF�ZHGd8d9�d9eF�ZIGd:d;�d;eF�ZJGd<d=�d=eF�ZKGd>d?�d?eK�ZLGd@dA�dAeK�ZMGdBdC�dCeK�ZNGdDdE�dEeK�ZOGdFdG�dGeK�ZPGdHdI�dI�ZQGdJdK�dK�ZRGdLdM�dMeS�ZTGdNdO�dOeS�ZUGdPdQ�dQejV�ZWGdRdS�dSeS�ZXGdTdU�dUeS�ZYdVdW�ZZeYjZdXdY�Z[e\dZk�r>e[�dS)[z0.9.0u"Lars Gustäbel (lars@gustaebel.de)u4Gustavo Niemeyer, Niels Gustäbel, Richard Townsend.�)�openN)�TarFile�TarInfo�
is_tarfile�TarError�	ReadError�CompressionError�StreamError�ExtractError�HeaderError�ENCODING�USTAR_FORMAT�
GNU_FORMAT�
PAX_FORMAT�DEFAULT_FORMATr�i�sustar  sustar00�d��0�1�2�3�4�5�6�7�L�K�S�x�g�X��)�path�linkpath�size�mtime�uid�gid�uname�gname>r+r,r&r%)Zatime�ctimer(r)r*r'�nt�utf-8cCs(|�||�}|d|�|t|�tS�N)�encode�len�NUL)�s�length�encoding�errors�r8�/usr/lib/python3.9/tarfile.py�stn�sr:cCs*|�d�}|dkr|d|�}|�||�S)Nr���)�find�decode)r4r6r7�pr8r8r9�nts�s
r?cCs�|ddvrbd}tt|�d�D]}|dK}|||d7}q |ddkr�dt|�d|}n>z"t|dd�}t|��p|d	d�}Wnty�td
��Yn0|S)Nr)��r#�rA��ascii�strict�0�invalid header)�ranger2r?�int�strip�
ValueError�InvalidHeaderError)r4�n�ir8r8r9�nti�srOrBcCs�t|�}d|kr$d|dkrDnntd|d|fd�t}n�|tkr�d|d|krrd|dkr�nnV|dkr�tdg�}ntdg�}d||}t|d�D]}|�d|d@�|dL}q�ntd	��|S)
NrrBr#z%0*orDrCr@rAzoverflow in number field)rI�bytesr3r�	bytearrayrH�insertrK)rM�digits�formatr4rNr8r8r9�itn�s 2
rUcCs0dtt�d|��}dtt�d|��}||fS)NrCZ
148B8x356BZ
148b8x356b)�sum�struct�unpack_from)�bufZunsigned_chksumZ
signed_chksumr8r8r9�calc_chksums�s	rZc	Cs�|pd}|dkrdS|dur.t�|||�dSt||�\}}t|�D],}|�|�}t|�|krf|d��|�|�qD|dkr�|�|�}t|�|kr�|d��|�|�dS)Ni@r�unexpected end of data)�shutil�copyfileobj�divmodrH�readr2�write)	�src�dstr5�	exception�bufsize�blocks�	remainder�brYr8r8r9r]�s$


r]cCs8ttjdd�}|dur(|�|d��|�}t|dd�dS)Nr6�backslashreplace� )�end)�getattr�sys�stdoutr1r=�print)r4r6r8r8r9�_safe_printsroc@seZdZdS)rN��__name__�
__module__�__qualname__r8r8r8r9r
src@seZdZdS)r
Nrpr8r8r8r9r

sr
c@seZdZdS)rNrpr8r8r8r9rsrc@seZdZdS)rNrpr8r8r8r9rsrc@seZdZdS)r	Nrpr8r8r8r9r	sr	c@seZdZdS)rNrpr8r8r8r9rsrc@seZdZdS)�EmptyHeaderErrorNrpr8r8r8r9rtsrtc@seZdZdS)�TruncatedHeaderErrorNrpr8r8r8r9rusruc@seZdZdS)�EOFHeaderErrorNrpr8r8r8r9rv"srvc@seZdZdS)rLNrpr8r8r8r9rL%srLc@seZdZdS)�SubsequentHeaderErrorNrpr8r8r8r9rw(srwc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�
_LowLevelFilecCsFtjtjtjBtjBd�|}ttd�r2|tjO}t�||d�|_dS)N��r�w�O_BINARYi�)	�os�O_RDONLY�O_WRONLY�O_CREAT�O_TRUNC�hasattrr|r�fd)�self�name�moder8r8r9�__init__5s��

z_LowLevelFile.__init__cCst�|j�dSr0)r}�closer��r�r8r8r9r�>sz_LowLevelFile.closecCst�|j|�Sr0)r}r_r��r�r'r8r8r9r_Asz_LowLevelFile.readcCst�|j|�dSr0)r}r`r��r�r4r8r8r9r`Dsz_LowLevelFile.writeN)rqrrrsr�r�r_r`r8r8r8r9rx/s	rxc@sneZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
ddd�Zdd�Zdd�Z
dd�ZdS)�_Streamc	Cs�d|_|durt||�}d|_|dkr6t|�}|��}|p<d|_||_||_||_||_d|_	d|_
d|_�zF|dkr�zddl}Wnt
y�td��Yn0||_|�d�|_|d	kr�|��|j|_n|��n�|d
k�r6zddl}Wnt
�ytd��Yn0|d	k�r*d|_|��|_t|_n
|��|_nz|dk�r�zddl}Wnt
�yhtd
��Yn0|d	k�r�d|_|��|_|j|_n
|��|_n|dk�r�td|��Wn&|j�s�|j��d|_�Yn0dS)NTF�*��r�gzzzlib module is not availablerz�bz2�bz2 module is not available�xz�lzma module is not available�tar�unknown compression type %r) �_extfileobjrx�_StreamProxy�getcomptyper�r��comptype�fileobjrdrY�pos�closed�zlib�ImportErrorr�crc32�crc�
_init_read_gz�errorrc�_init_write_gzr��dbuf�BZ2Decompressor�cmp�OSError�
BZ2Compressor�lzma�LZMADecompressor�	LZMAError�LZMACompressorr�)	r�r�r�r�r�rdr�r�r�r8r8r9r�Rsl












z_Stream.__init__cCst|d�r|js|��dS)Nr�)r�r�r�r�r8r8r9�__del__�sz_Stream.__del__cCs�|j�d|jj|jj|jjd�|_t�dtt	�	���}|�
d|d�|j�d�rf|jdd�|_t
j�|j�|_|�
|j�dd	�t�dS)
N�	r�<Ls�s��.gz���z
iso-8859-1�replace)r��compressobj�DEFLATED�	MAX_WBITS�
DEF_MEM_LEVELr�rW�packrI�time�_Stream__writer��endswithr}r%�basenamer1r3)r�Z	timestampr8r8r9r��s�z_Stream._init_write_gzcCsR|jdkr|j�||j�|_|jt|�7_|jdkrD|j�|�}|�|�dS)Nr�r�)	r�r�r�r�r�r2r��compressr�r�r8r8r9r`�s

z
_Stream.writecCsN|j|7_t|j�|jkrJ|j�|jd|j��|j|jd�|_qdSr0)rYr2rdr�r`r�r8r8r9Z__write�sz_Stream.__writecCs�|jr
dSd|_z�|jdkr:|jdkr:|j|j��7_|jdkr�|jr�|j�|j�d|_|jdkr�|j�t�	d|j
��|j�t�	d|jd@��W|js�|j�
�n|js�|j�
�0dS)NTr{r�r�r�r�l��)r�r�r�rYr��flushr�r`rWr�r�r�r�r�r�r8r8r9r��s 
�z
_Stream.closecCs�|j�|jj�|_d|_|�d�dkr0td��|�d�dkrFtd��t|�d��}|�d�|d	@r�t|�d��d
t|�d��}|�	|�|d@r�|�d�}|r�|t
kr�q�q�|d@r�|�d�}|r�|t
kr�q�q�|d@r�|�d�dS)
Nr�r$s��not a gzip filer#�zunsupported compression method��rCrB�)r��
decompressobjr�r�r��
_Stream__readrr�ordr_r3)r��flagZxlenr4r8r8r9r��s*
 


z_Stream._init_read_gzcCs|jSr0)r�r�r8r8r9�tell�sz_Stream.tellrcCsX||jdkrJt||j|j�\}}t|�D]}|�|j�q,|�|�ntd��|jS)Nrz seeking backwards is not allowed)r�r^rdrHr_r	)r�r�rerfrNr8r8r9�seek�sz_Stream.seekcCs |�|�}|jt|�7_|Sr0)�_readr�r2)r�r'rYr8r8r9r_s
z_Stream.readcCs�|jdkr|�|�St|j�}|jg}||kr�|jrB|j}d|_n|j�|j�}|sVq�z|j�	|�}Wn|j
y�td��Yn0|�|�|t|�7}q&d�
|�}||d�|_|d|�S)Nr�r�zinvalid compressed data)r�r�r2r�rYr�r_rdr��
decompressrcr�append�join�r�r'�c�trYr8r8r9r�
s(




z
_Stream._readcCsjt|j�}|jg}||krF|j�|j�}|s.qF|�|�|t|�7}qd�|�}||d�|_|d|�S)Nr�)r2rYr�r_rdr�r�r�r8r8r9Z__read(s


z_Stream.__readN)r)rqrrrsr�r�r�r`r�r�r�r�r�r_r�r�r8r8r8r9r�GsF
	

r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
r�cCs||_|j�t�|_dSr0)r�r_�	BLOCKSIZErY)r�r�r8r8r9r�>sz_StreamProxy.__init__cCs|jj|_|jSr0)r�r_rYr�r8r8r9r_Bs
z_StreamProxy.readcCsP|j�d�rdS|jdd�dkr8|jdd�dkr8d	S|j�d
�rHdSdSdS)
Ns�r�r�sBZhr��
s1AY&SYr�)s]�s�7zXZr�r�)rY�
startswithr�r8r8r9r�Fs$z_StreamProxy.getcomptypecCs|j��dSr0)r�r�r�r8r8r9r�Psz_StreamProxy.closeN)rqrrrsr�r_r�r�r8r8r8r9r�9s
r�c@sfeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Ze	j
fdd�Zddd�Zdd�Z
dd�ZdS)�_FileInFileNcCs�||_||_||_d|_t|dd�|_d|_|dur>d|fg}d|_g|_d}|j}|D]L\}}||kr||j�	d||df�|j�	d||||f�||7}||}qX||jkr�|j�	d||jdf�dS)Nrr�FT)
r��offsetr'�positionrkr�r��	map_index�mapr�)r�r�r�r'Z	blockinfoZlastposZrealposr8r8r9r�]s(


z_FileInFile.__init__cCsdSr0r8r�r8r8r9r�vsz_FileInFile.flushcCsdS�NTr8r�r8r8r9�readableysz_FileInFile.readablecCsdS)NFr8r�r8r8r9�writable|sz_FileInFile.writablecCs
|j��Sr0)r��seekabler�r8r8r9r�sz_FileInFile.seekablecCs|jSr0)r�r�r8r8r9r��sz_FileInFile.tellcCs�|tjkr tt|d�|j�|_nj|tjkr\|dkrFt|j|d�|_q�t|j||j�|_n.|tjkr�tt|j||j�d�|_ntd��|jS)NrzInvalid argument)	�io�SEEK_SET�min�maxr'r��SEEK_CUR�SEEK_ENDrK)r�r��whencer8r8r9r��s


z_FileInFile.seekc	Cs
|dur|j|j}nt||j|j�}d}|dk�r|j|j\}}}}||jkr`|krhq�nq�q6|jd7_|jt|j�kr6d|_q6t|||j�}|r�|j�||j|�|j�|�}t|�|kr�t	d��||7}n|t
|7}||8}|j|7_q,|S)Nr�rr#r[)r'r�r�r�r�r2r�r�r_rr3)	r�r'rY�data�start�stopr�r5rgr8r8r9r_�s,

z_FileInFile.readcCs&|�t|��}||dt|��<t|�Sr0)r_r2)r�rgrYr8r8r9�readinto�sz_FileInFile.readintocCs
d|_dSr�)r�r�r8r8r9r��sz_FileInFile.close)N)N)rqrrrsr�r�r�r�r�r�r�r�r�r_r�r�r8r8r8r9r�Ws

r�cseZdZ�fdd�Z�ZS)�ExFileObjectcs&t|j|j|j|j�}t��|�dSr0)r�r��offset_datar'�sparse�superr�)r��tarfile�tarinfor���	__class__r8r9r��s
�zExFileObject.__init__)rqrrrsr��
__classcell__r8r8r�r9r��sr�c@s�eZdZeddddddddd	d
ddd
dddddddd�Zdddd�Zedd��Zejdd��Zedd��Z	e	jdd��Z	dd�Z
dd �Zee
d!fd"d#�Zd$d%�Zd&d'�Zd(d)�Zed*d+��Zd,d-�Zed.d/��Zed0d1��Zed2d3��Zed4d5��Zed6d7��Zed8d9��Zd:d;�Zd<d=�Zd>d?�Zd@dA�ZdBdC�Z dDdE�Z!dFdG�Z"dHdI�Z#dJdK�Z$dLdM�Z%dNdO�Z&dPdQ�Z'dRdS�Z(dTdU�Z)dVdW�Z*dXdY�Z+dZd[�Z,d\d]�Z-d^d_�Z.d`da�Z/dbdc�Z0dS)erzName of the archive member.zPermission bits.z6User ID of the user who originally stored this member.z7Group ID of the user who originally stored this member.zSize in bytes.zTime of last modification.zHeader checksum.z�File type. type is usually one of these constants: REGTYPE, AREGTYPE, LNKTYPE, SYMTYPE, DIRTYPE, FIFOTYPE, CONTTYPE, CHRTYPE, BLKTYPE, GNUTYPE_SPARSE.zcName of the target file name, which is only present in TarInfo objects of type LNKTYPE and SYMTYPE.z
User name.zGroup name.zDevice major number.zDevice minor number.zThe tar header starts here.zThe file's data starts here.zMA dictionary containing key-value pairs of an associated pax extended header.zSparse member information.N)r�r�r)r*r'r(�chksum�type�linknamer+r,�devmajor�devminorr�r��pax_headersr�r��_sparse_structs�_link_targetr�cCsj||_d|_d|_d|_d|_d|_d|_t|_d|_	d|_
d|_d|_d|_
d|_d|_d|_i|_dS)Ni�rr�)r�r�r)r*r'r(r��REGTYPEr�r�r+r,r�r�r�r�r�r��r�r�r8r8r9r��s"zTarInfo.__init__cCs|jSr0�r�r�r8r8r9r%szTarInfo.pathcCs
||_dSr0r�r�r8r8r9r%
scCs|jSr0�r�r�r8r8r9r&szTarInfo.linkpathcCs
||_dSr0r�)r�r�r8r8r9r&scCsd|jj|jt|�fS)Nz<%s %r at %#x>)r�rqr��idr�r8r8r9�__repr__szTarInfo.__repr__cCsl|j|jd@|j|j|j|j|j|j|j|j	|j
|j|jd�
}|dt
krh|d�d�sh|dd7<|S)N�)
r�r�r)r*r'r(r�r�r�r+r,r�r�r�r��/)r�r�r)r*r'r(r�r�r�r+r,r�r��DIRTYPEr�)r��infor8r8r9�get_infos"�zTarInfo.get_info�surrogateescapecCsT|��}|tkr|�|||�S|tkr4|�|||�S|tkrH|�||�Std��dS)Nzinvalid format)rr
�create_ustar_headerr�create_gnu_headerr�create_pax_headerrK)r�rTr6r7rr8r8r9�tobuf2sz
TarInfo.tobufcCsnt|d<t|d�||��tkr(td��t|d�||��tkr^|�|d||�\|d<|d<|�|t||�S)N�magicr�zlinkname is too longr��prefix)	�POSIX_MAGICr2r1�LENGTH_LINKrK�LENGTH_NAME�_posix_split_name�_create_headerr
)r�rr6r7r8r8r9r@szTarInfo.create_ustar_headercCs�t|d<d}t|d�||��tkr<||�|dt||�7}t|d�||��tkrl||�|dt||�7}||�|t	||�S)Nr
r�r�r�)
�	GNU_MAGICr2r1r
�_create_gnu_long_header�GNUTYPE_LONGLINKr�GNUTYPE_LONGNAMErr)r�rr6r7rYr8r8r9rMszTarInfo.create_gnu_headerc
	CsLt|d<|j��}ddtfddtfddfD]h\}}}||vr>q*z||�dd	�Wn"tyt||||<Yq*Yn0t||�|kr*||||<q*d
D]�\}}d}||}	t|	t	�}
|
r�t
|	�n|	}d|kr�d
|dks�nd||<d}n|
�r|||<d}|r�||vr�t|	�||<q�|�r4|�|t
|�}nd}||�|tdd�S)Nr
r�r%r�r&)r+r+� )r,r,rrDrE))r)rB)r*rB)r'�)r(rFrrBr#Tr�r�)rr��copyrr
r1�UnicodeEncodeErrorr2�
isinstance�float�round�str�_create_pax_generic_header�XHDTYPErr
)
r�rr6r�r�Zhnamer5rSZ	needs_pax�valZval_is_floatZval_intrYr8r8r9r[s>
�

zTarInfo.create_pax_headercCs|�|td�S)Nr/)r�XGLTYPE)�clsr�r8r8r9�create_pax_global_header�sz TarInfo.create_pax_global_headercCs~|�d�}tdt|��D]T}d�|d|��}d�||d��}t|�||��tkrt|�||��tkrqvqtd��||fS)Nrr#zname is too long)�splitrHr2r�r1�
LENGTH_PREFIXrrK)r�r�r6r7�
componentsrNrr8r8r9r�s
�zTarInfo._posix_split_namec
Cs�|�d�ttfv}|r@t|�dd�d|�}t|�dd�d|�}ntdd||�}tdd||�}t|�dd�d||�t|�d	d�d
@d|�t|�dd�d|�t|�dd�d|�t|�d
d�d|�t|�dd�d|�d|�dt�t|�dd�d||�|�dt�t|�dd�d||�t|�dd�d||�||t|�dd�d||�g}t�dt	d�
|��}t|t	d��d}	|dd�td|	d�|dd�}|S)Nr�r�rrBr�r�r�rr�rr)r*r'rr(s        r�r
r+rr,rrz%dsr�i����z%06orDi����)
�get�CHRTYPE�BLKTYPErUr:r�rrWr�r�r�rZrP)
rrTr6r7Zhas_device_fieldsr�r��partsrYr�r8r8r9r�s4

�&zTarInfo._create_headercCs.tt|�t�\}}|dkr*|t|t7}|S)Nr)r^r2r�r3)�payloadrerfr8r8r9�_create_payload�szTarInfo._create_payloadcCsR|�||�t}i}d|d<||d<t|�|d<t|d<|�|t||�|�|�S)Nz
././@LongLinkr�r�r'r
)r1r3r2rrr
r+)r!r�r�r6r7rr8r8r9r�s�zTarInfo._create_gnu_long_headerc	Cs0d}|��D]6\}}z|�dd�Wqty@d}YqDYq0qd}|rT|d7}|��D]�\}}|�d�}|r�|�|d�}n
|�d�}t|�t|�d}d	}	}
|tt|
��}	|	|
kr�q�|	}
q�|tt|
�d
�d|d|d
7}q\i}d|d<||d<t|�|d<t|d<|�|td
d�|�	|�S)NFr/rETr�s21 hdrcharset=BINARY
rr�rrD� �=�
z././@PaxHeaderr�r�r'r
r�)
�itemsr1rr2rrPrrr
r+)r!r�r�r6�binary�keyword�value�records�lrMr>rr8r8r9r�s<

(�z"TarInfo._create_pax_generic_headerc	Cstt|�dkrtd��t|�tkr(td��|�t�tkr>td��t|dd��}|t|�vrbt	d��|�}t
|dd�||�|_t|dd	��|_t|d	d
��|_
t|d
d��|_t|dd��|_t|dd��|_||_|dd
�|_t
|d
d�||�|_t
|dd�||�|_t
|dd�||�|_t|dd��|_t|dd��|_t
|dd�||�}|jtk�r�|j�d��r�t|_|jtk�r6d}g}td�D]j}	z0t|||d��}
t||d|d��}Wnt�y�Y�qYn0|�|
|f�|d7}�q�t|d�}t|dd��}
|||
f|_ |�!��rN|j�"d�|_|�rp|jt#v�rp|d|j|_|S)Nrzempty headerztruncated headerzend of file header��zbad checksumr�l�t�|��ii	i)iIiQiYi�ri�r�r�i�i�i�)$r2rtr�ru�countr3rvrOrZrLr?r�r�r)r*r'r(r�r�r�r+r,r�r��AREGTYPEr�r�GNUTYPE_SPARSErHrKr��boolr��isdir�rstrip�	GNU_TYPES)r!rYr6r7r��objrr��structsrNr��numbytes�
isextended�origsizer8r8r9�frombufsZ
zTarInfo.frombufcCs8|j�t�}|�||j|j�}|j��t|_|�|�Sr0)	r�r_r�rIr6r7r�r��_proc_member)r!r�rYrDr8r8r9�fromtarfile\szTarInfo.fromtarfilecCsT|jttfvr|�|�S|jtkr,|�|�S|jtttfvrF|�	|�S|�
|�SdSr0)r�rr�
_proc_gnulongr?�_proc_sparserr �SOLARIS_XHDTYPE�	_proc_pax�
_proc_builtin)r�r�r8r8r9rJqs



zTarInfo._proc_membercCsR|j��|_|j}|��s$|jtvr4||�|j�7}||_|�	|j
|j|j�|Sr0)
r�r�r��isregr��SUPPORTED_TYPES�_blockr'r��_apply_pax_infor�r6r7)r�r�r�r8r8r9rP~szTarInfo._proc_builtincCs�|j�|�|j��}z|�|�}Wnty<td��Yn0|j|_|jt	krdt
||j|j�|_
n|jtkr�t
||j|j�|_|S)N� missing or bad subsequent header)r�r_rSr'rKrrwr�r�rr?r6r7r�rr�)r�r�rY�nextr8r8r9rL�s

zTarInfo._proc_gnulongc
	Cs�|j\}}}|`|r�|j�t�}d}td�D]l}z0t|||d��}t||d|d��}	WntyxYq�Yn0|r�|	r�|�||	f�|d7}q,t|d�}q||_	|j�
�|_|j|�|j
�|_||_
|S)Nr�rr<i�)r�r�r_r�rHrOrKr�r@r�r�r�rSr'r�)
r�r�rErGrHrYr�rNr�rFr8r8r9rM�s(
zTarInfo._proc_sparsecCs,|j�|�|j��}|jtkr&|j}n
|j��}t�	d|�}|durX|�
d��d�|d<|�d�}|dkrr|j
}nd}t�d�}d}|�||�}|s��q6|��\}	}
t|	�}	|	dkr�td��||�d	�d|�d�|	d�}|�|
dd|j�}
|
tv�r|�|||j
|j�}n|�|dd|j�}|||
<||	7}q�z|�|�}Wnt�y`td
��Yn0d|v�rz|�||�nHd|v�r�|�|||�n.|�d
�dk�r�|�d�dk�r�|�|||�|jttfv�r(|� ||j
|j�|j!|_!d|v�r(|j"}
|�#��s|jt$v�r"|
|�|j�7}
|
|_!|S)Ns\d+ hdrcharset=([^\n]+)\nr#r/�
hdrcharsetZBINARYs(\d+) ([^=]+)=rrGr$rU�GNU.sparse.map�GNU.sparse.sizezGNU.sparse.major�1zGNU.sparse.minorrFr')%r�r_rSr'r�r r�r�re�search�groupr=r&r6�compile�match�groupsrIrLrjr��_decode_pax_fieldr7�PAX_NAME_FIELDSrKrrw�_proc_gnusparse_01�_proc_gnusparse_00�_proc_gnusparse_10rrNrTr�r�rQrR)r�r�rYr�r`rXr6Zregexr�r5r1r2rVr�r8r8r9rO�sh



$	
�
�
�


 
zTarInfo._proc_paxcCshg}t�d|�D]}|�t|�d���qg}t�d|�D]}|�t|�d���q:tt||��|_dS)Ns\d+ GNU.sparse.offset=(\d+)\nr#s\d+ GNU.sparse.numbytes=(\d+)\n)r\�finditerr�rIr^�list�zipr�)r�rVr�rYZoffsetsr`rFr8r8r9re)szTarInfo._proc_gnusparse_00cCs@dd�|d�d�D�}tt|ddd�|ddd���|_dS)NcSsg|]}t|��qSr8)rI)�.0�xr8r8r9�
<listcomp>7r�z.TarInfo._proc_gnusparse_01.<locals>.<listcomp>rY�,r$r#)r#rhrir�)r�rVr�r�r8r8r9rd4szTarInfo._proc_gnusparse_01cCs�d}g}|j�t�}|�dd�\}}t|�}t|�|dkrtd|vrT||j�t�7}|�dd�\}}|�t|��q,|j��|_t	t
|ddd�|ddd���|_dS)Nr.r#r$)r�r_r�r#rIr2r�r�r�rhrir�)r�rVr�r��fieldsr�rYZnumberr8r8r9rf:szTarInfo._proc_gnusparse_10c	Cs�|��D]�\}}|dkr&t|d|�q|dkr@t|dt|��q|dkrZt|dt|��q|tvr|tvr�zt||�}Wnty�d}Yn0|dkr�|�d�}t|||�q|��|_dS)NzGNU.sparse.namer%rZr'zGNU.sparse.realsizerr)	r/�setattrrI�
PAX_FIELDS�PAX_NUMBER_FIELDSrKrBrr�)r�r�r6r7r1r2r8r8r9rTJs"

zTarInfo._apply_pax_infocCs2z|�|d�WSty,|�||�YS0dS)NrE)r=�UnicodeDecodeError)r�r2r6Zfallback_encodingZfallback_errorsr8r8r9rbaszTarInfo._decode_pax_fieldcCs"t|t�\}}|r|d7}|tS)Nr#)r^r�)r�r=rerfr8r8r9rSiszTarInfo._blockcCs
|jtvSr0)r��
REGULAR_TYPESr�r8r8r9rQrsz
TarInfo.isregcCs|��Sr0)rQr�r8r8r9�isfilevszTarInfo.isfilecCs
|jtkSr0)r�rr�r8r8r9rAzsz
TarInfo.isdircCs
|jtkSr0)r��SYMTYPEr�r8r8r9�issym~sz
TarInfo.issymcCs
|jtkSr0)r��LNKTYPEr�r8r8r9�islnk�sz
TarInfo.islnkcCs
|jtkSr0)r�r'r�r8r8r9�ischr�sz
TarInfo.ischrcCs
|jtkSr0)r�r(r�r8r8r9�isblk�sz
TarInfo.isblkcCs
|jtkSr0)r��FIFOTYPEr�r8r8r9�isfifo�szTarInfo.isfifocCs
|jduSr0)r�r�r8r8r9�issparse�szTarInfo.issparsecCs|jtttfvSr0)r�r'r(r{r�r8r8r9�isdev�sz
TarInfo.isdev)r�)1rqrrrs�dict�	__slots__r��propertyr%�setterr&r�rrrr	rrr�classmethodr"r�staticmethodrr+rrrIrKrJrPrLrMrOrerdrfrTrbrSrQrtrArvrxryrzr|r}r~r8r8r8r9r�s��





:

#
	

2
>

h	rc
@s�eZdZdZdZdZdZeZe	Z
dZeZ
eZd[dd�Zedddefd	d
��Zed\dd��Zed]dd��Zed^dd��Zed_dd��Zddddd�Zdd�Zdd�Zdd�Zdd �Zd`d!d"�Zdadd$�d%d&�Zdbdd'�d(d)�Zdcd*d+�Z dddd-�d.d/�Z!dedd-�d1d2�Z"d3d4�Z#dfd5d6�Z$d7d8�Z%d9d:�Z&d;d<�Z'd=d>�Z(d?d@�Z)dAdB�Z*dCdD�Z+dEdF�Z,dGdH�Z-dIdJ�Z.dgdKdL�Z/dMdN�Z0dhdOdP�Z1dQdR�Z2dSdT�Z3dUdV�Z4dWdX�Z5dYdZ�Z6dS)irrFr#Nrzrc
Cs�ddddd�}||vrtd��||_|||_|sh|jdkrTtj�|�sTd|_d|_t||j�}d	|_n@|dur�t|d
�r�t	|j
ttf�r�|j
}t|d�r�|j|_d|_|r�tj�
|�nd|_
||_|dur�||_|dur�||_|dur�||_|dur�||_|du�r||_|	|_|
du�r0|jtk�r0|
|_ni|_|du�rF||_|du�rV||_|
|_d	|_g|_d	|_|j��|_i|_z�|jd
k�r�d|_ |�!�|_ |jdk�r2|j�"|j�z|j�#|�}|j�$|�WnXt%�y�|j�"|j�Y�q2Yn2t&�y,}zt't|���WYd}~n
d}~00�q�|jdv�r|d|_|j�r||j�(|j�)��}|j�*|�|jt+|�7_Wn&|j�s�|j�,�d|_�Yn0dS)N�rbzr+b�wb�xb�rz�ar{rk�!mode must be 'r', 'a', 'w' or 'x'r�r{Fr�r�Trz�r�r{rk)-rKr��_moder}r%�exists�	bltn_openr�r�rr�rrP�abspathr�rTr��dereference�ignore_zerosr6r7rr��debug�
errorlevel�copybufsizer��members�_loadedr�r��inodes�firstmemberrVr�rKr�rvrrr"rr`r2r�)r�r�r�r�rTr�r�r�r6r7r�r�r�r�Zmodes�erYr8r8r9r��s�
�





&
zTarFile.__init__c

s�|s|std��|dvr��fdd�}t�j|d�D]l}t��j|�}|durV|��}	z||d|fi|��WSttfy�|dur�|�|	�Yq2Yq20q2td���nd|v�r|�dd	�\}
}|
p�d}
|p�d
}|�jvr�t��j|�}ntd|��|||
|fi|��Sd|v�r�|�dd	�\}
}|
�p4d}
|�p>d
}|
d
v�rRtd��t	||
|||�}z�||
|fi|��}Wn|�
��Yn0d|_|S|dv�r��j|||fi|��Std��dS)Nznothing to open)rz�r:*cs�j|dkS)N�taropen)�	OPEN_METH)r��r!r8r9�not_compressedMsz$TarFile.open.<locals>.not_compressed��keyrzz%file could not be opened successfully�:r#r�r��|ryzmode must be 'r' or 'w'Fr�zundiscernible mode)
rK�sortedr�rkr�rrr�r#r�r�r�r�)
r!r�r�r�rd�kwargsr�r��funcZ	saved_pos�filemode�streamr�r8r�r9r#sP%







zTarFile.opencKs$|dvrtd��||||fi|��S)Nr�r�)rK)r!r�r�r�r�r8r8r9r�~szTarFile.taropenr�cKs�|dvrtd��zddlm}Wnty:td��Yn0z|||d||�}Wn,ty~|durx|dkrxtd���Yn0z|j|||fi|��}Wn@ty�|��|dkr�td���Yn|���Yn0d	|_	|S)
N�rzr{rk�mode must be 'r', 'w' or 'x'r)�GzipFilezgzip module is not availablergrzr�F)
rK�gzipr�r�rr�rr�r�r�)r!r�r�r��
compresslevelr�r�r�r8r8r9�gzopen�s0zTarFile.gzopenc	Ks�|dvrtd��zddlm}Wnty:td��Yn0||pD|||d�}z|j|||fi|��}WnDttfy�|��|dkr�t	d���Yn|���Yn0d	|_
|S)
Nr�r�r)�BZ2Filer�)r�rzznot a bzip2 fileF)rKr�r�r�rr�r��EOFErrorr�rr�)r!r�r�r�r�r�r�r�r8r8r9�bz2open�s&zTarFile.bz2openc		Ks�|dvrtd��zddlm}m}Wnty>td��Yn0||pH|||d�}z|j|||fi|��}WnD|tfy�|��|dkr�t	d���Yn|���Yn0d	|_
|S)
Nr�r�r)�LZMAFiler�r�)�presetrzznot an lzma fileF)rKr�r�r�r�rr�r�r�rr�)	r!r�r�r�r�r�r�r�r�r8r8r9�xzopen�s&zTarFile.xzopenr�r�r�r�)r�r�r�r�cCs�|jr
dSd|_zp|jdvrn|j�ttd�|jtd7_t|jt�\}}|dkrn|j�tt|�W|j	s�|j�
�n|j	s�|j�
�0dS)NTr�r$r)r�r�r�r`r3r�r�r^�
RECORDSIZEr�r�)r�rerfr8r8r9r��s
�z
TarFile.closecCs(|�|�d��}|dur$td|��|S)Nrzfilename %r not found)�
_getmemberrB�KeyError)r�r�r�r8r8r9�	getmember�szTarFile.getmembercCs|��|js|��|jSr0)�_checkr��_loadr�r�r8r8r9�
getmembers
szTarFile.getmemberscCsdd�|��D�S)NcSsg|]
}|j�qSr8r�)rjr�r8r8r9rlr�z$TarFile.getnames.<locals>.<listcomp>)r�r�r8r8r9�getnamesszTarFile.getnamescCsZ|�d�|dur|j}|dur$|}tj�|�\}}|�tjd�}|�d�}|��}||_	|dur�|j
stt�|�}q�t�|�}nt�
|���}d}|j}t�|�r�|j|jf}	|j
s�|jdkr�|	|jvr�||j|	kr�t}
|j|	}nt}
|	dr�||j|	<nht�|��rt}
nVt�|��r"t}
nDt�|��r>t}
t�|�}n(t�|��rPt}
nt� |��rbt!}
ndS||_||_"|j#|_$|j%|_&|
tk�r�|j'|_(nd|_(|j)|_*|
|_+||_,t-�r�zt-�.|j$�d|_/Wnt0�y�Yn0t1�rzt1�2|j&�d|_3Wnt0�yYn0|
tt!fv�rVt4td��rVt4td��rVt�5|j6�|_7t�8|j6�|_9|S)N�awxrr�r#r�major�minor):r�r�r}r%�
splitdriver��sep�lstripr�r�r��lstat�stat�fstat�fileno�st_mode�S_ISREG�st_ino�st_dev�st_nlinkr�rwr��S_ISDIRr�S_ISFIFOr{�S_ISLNKru�readlink�S_ISCHRr'�S_ISBLKr(r��st_uidr)�st_gidr*�st_sizer'�st_mtimer(r�r��pwd�getpwuidr+r��grp�getgrgidr,r�r��st_rdevr�r�r�)r�r��arcnamer��drvr�Zstatresr�Zstmd�inoder�r8r8r9�
gettarinfos�	


��

zTarFile.gettarinfoT)r�cCs�|��|dur|}|D]�}|r�tt�|j��td|jp>|j|jpH|jf�|�	�s`|�
�rztdd|j|jf�ntd|j
�tdt�|j�dd��t|j|��r�dnd�|r�|��r�td	|j�|��r�td
|j�t�qdS)Nz%s/%sz%10sz%d,%dz%10dz%d-%02d-%02d %02d:%02d:%02dr�rr�z-> zlink to )r�ror�r�r�r+r)r,r*ryrzr�r�r'r��	localtimer(r�rArvr�rxrn)r��verboser�r�r8r8r9rh}s0
���zTarFile.list��filtercCsL|�d�|dur|}|jdurFtj�|�|jkrF|�dd|�dS|�d|�|�||�}|durz|�dd|�dS|dur�||�}|dur�|�dd|�dS|��r�t|d��}|�	||�Wd�n1s�0Ynb|�
��r>|�	|�|�rHtt�|��D],}|j
tj�||�tj�||�||d��qn
|�	|�dS)	Nr�r$ztarfile: Skipped %rr#ztarfile: Unsupported type %rztarfile: Excluded %rr�r�)r�r�r}r%r��_dbgr�rQr��addfilerAr��listdir�addr�)r�r�r��	recursiver�r��fr8r8r9r��s6

,

�zTarFile.addcCs�|�d�t�|�}|�|j|j|j�}|j�|�|jt	|�7_|j
}|dur�t||j|j|d�t
|jt�\}}|dkr�|j�tt|�|d7}|j|t7_|j�|�dS)Nr�)rdrr#)r�rr	rTr6r7r�r`r�r2r�r]r'r^r�r3r�r�)r�r�r�rYrdrerfr8r8r9r��s

zTarFile.addfile�.��
numeric_ownercCs�g}|dur|}|D]>}|��r:|�|�t�|�}d|_|j|||��|d�q|jdd�d�|��|D]�}tj�	||j
�}z,|j|||d�|�||�|�
||�Wqpty�}z*|jdkr΂n|�dd|�WYd}~qpd}~00qpdS)	N���	set_attrsr�cSs|jSr0r�)r�r8r8r9�<lambda>r�z$TarFile.extractall.<locals>.<lambda>r�r�r#�tarfile: %s)rAr�rr��extract�sort�reverser}r%r�r��chown�utime�chmodr
r�r�)r�r%r�r�Zdirectoriesr��dirpathr�r8r8r9�
extractall�s.

�
zTarFile.extractallr�c
Cs|�d�t|t�r |�|�}n|}|��r>tj�||j�|_	z"|j
|tj�||j�||d�Wn�ty�}zP|j
dkr~�n6|jdur�|�dd|j�n|�dd|j|jf�WYd}~nLd}~0t�y
}z*|j
dkr�n|�dd|�WYd}~n
d}~00dS)Nrzr�rr#r�ztarfile: %s %r)r�rrr�rxr}r%r�r�r��_extract_memberr�r�r��filenamer��strerrorr
)r��memberr%r�r�r�r�r8r8r9r�s*	

�


,
zTarFile.extractcCs�|�d�t|t�r |�|�}n|}|��s6|jtvrB|�||�S|��sR|�	�rzt|j
t�rhtd��q~|�
|�|��SndSdS)Nrzz'cannot extract (sym)link as file object)r�rrr�rQr�rR�
fileobjectrxrvr�r�r	�extractfile�_find_link_target)r�r�r�r8r8r9r�7s


zTarFile.extractfilecCsT|�d�}|�dtj�}tj�|�}|r>tj�|�s>t�|�|��sN|�	�rh|�
dd|j|jf�n|�
d|j�|�
�r�|�||�n�|��r�|�||�nx|��r�|�||�nb|��s�|��r�|�||�nD|��s�|�	�r�|�||�n&|jtv�r|�||�n|�||�|�rP|�|||�|�	��sP|�||�|�||�dS)Nrr#z%s -> %s)rBr�r}r�r%�dirnamer��makedirsrxrvr�r�r�rQ�makefilerA�makedirr|�makefiforyrz�makedev�makelinkr�rR�makeunknownr�r�r�)r�r��
targetpathr�r�Z	upperdirsr8r8r9r�Ws4


zTarFile._extract_membercCs(zt�|d�Wnty"Yn0dS)Nr�)r}�mkdir�FileExistsError�r�r�rr8r8r9r�szTarFile.makedircCs�|j}|�|j�|j}t|d��l}|jdurn|jD]"\}}|�|�t|||t|�q4|�|j�|�	�nt|||jt|�Wd�n1s�0YdS)Nr�)
r�r�r�r�r�r�r]rr'�truncate)r�r�r�sourcerd�targetr�r'r8r8r9r�s


zTarFile.makefilecCs"|�||�|�dd|j�dS)Nr#z9tarfile: Unknown file type %r, extracted as regular file.)rr�r�r
r8r8r9r�s�zTarFile.makeunknowncCs"ttd�rt�|�ntd��dS)N�mkfifozfifo not supported by system)r�r}rr
r
r8r8r9r�s
zTarFile.makefifocCs^ttd�rttd�std��|j}|��r6|tjO}n
|tjO}t�||t�	|j
|j��dS)N�mknodrz'special devices not supported by system)r�r}r
r�rzr��S_IFBLK�S_IFCHRrrr�r�)r�r�rr�r8r8r9r�s
�zTarFile.makedevcCs�zb|��r0tj�|�r t�|�t�|j|�n0tj�|j�rNt�	|j|�n|�
|�|�|�WnDty�z|�
|�|�|�Wnt
y�td��Yn0Yn0dS)Nz%unable to resolve link inside archive)rvr}r%�lexists�unlink�symlinkr�r�r��linkr�r��symlink_exceptionr�r
r
r8r8r9r�s"
��zTarFile.makelinkcCs�ttd�r�t��dkr�|j}|j}|s~ztr<t�|j�d}WntyPYn0zt	rht	�
|j�d}Wnty|Yn0z4|��r�ttd�r�t�
|||�nt�|||�Wnty�td��Yn0dS)N�geteuidrr$�lchownzcould not change owner)r�r}rr*r)r��getgrnamr,r�r��getpwnamr+rvrr�r�r
)r�r�rr��g�ur8r8r9r��s(z
TarFile.chowncCs2zt�||j�Wnty,td��Yn0dS)Nzcould not change mode)r}r�r�r�r
r
r8r8r9r��sz
TarFile.chmodcCsFttd�sdSzt�||j|jf�Wnty@td��Yn0dS)Nr�z"could not change modification time)r�r}r�r(r�r
r
r8r8r9r�	s
z
TarFile.utimecCsl|�d�|jdur$|j}d|_|S|j|j��krZ|j�|jd�|j�d�sZtd��d}z|j�	|�}W�qJt
y�}zD|jr�|�dd|j|f�|jt
7_WYd}~q^WYd}~�qJd}~0t�yD}z`|j�r|�dd|j|f�|jt
7_WYd}~q^n|jdk�r.tt|���WYd}~�qJd}~0t�yj|jdk�rftd��Yn�t�y�}z$|jdk�r�tt|���WYd}~n�d}~0t�y�}ztt|���WYd}~nvd}~0t�yB}zTz.ddl}t||j��rtd|����n|�Wnt�y,|�Yn0WYd}~n
d}~00�qJq^|du�rb|j�|�nd	|_|S)
NZrar#r[r$z0x%X: %srz
empty filezzlib error: T)r�r�r�r�r�r�r_rr�rKrvr�r�r�rLrrtrurw�	Exceptionr�rr�r�r�r�r�)r��mr�r�r�r8r8r9rV	sZ

""   
zTarFile.nextcCsn|��}|dur"|d|�|��}|r2tj�|�}t|�D].}|rRtj�|j�}n|j}||kr:|Sq:dSr0)r��indexr}r%�normpath�reversedr�)r�r�r��	normalizer�r��member_namer8r8r9r�J	szTarFile._getmembercCs|��}|durqqd|_dSr�)rVr�)r�r�r8r8r9r�a	sz
TarFile._loadcCs:|jrtd|jj��|dur6|j|vr6td|j��dS)Nz%s is closedzbad operation for mode %r)r�r�r�rqr�)r�r�r8r8r9r�k	szTarFile._checkcCs`|��r.d�tdtj�|j�|jf��}d}n
|j}|}|j||dd�}|dur\t	d|��|S)NrT)r�r"zlinkname %r not found)
rvr�r�r}r%r�r�r�r�r�)r�r�r��limitr�r8r8r9r�t	s zTarFile._find_link_targetccs�|jr|jEdHdSd}|jdur:|��}|d7}|V|t|j�krT|j|}n"|jsr|��}|svd|_dSndS|d7}|Vq:dS)Nrr#T)r�r�r�rVr2)r�rr�r8r8r9�__iter__�	s$
zTarFile.__iter__cCs||jkrt|tjd�dS)N��file)r�rnrl�stderr)r��level�msgr8r8r9r��	s
zTarFile._dbgcCs|��|Sr0)r�r�r8r8r9�	__enter__�	szTarFile.__enter__cCs,|dur|��n|js"|j��d|_dSr�)r�r�r�r�)r�r�r2�	tracebackr8r8r9�__exit__�	s


zTarFile.__exit__)
NrzNNNNNNrNNNN)rzN)rzNr�)rzNr�)rzNN)NNN)T)NT)N)r�N)r�T)TF)NF)N)7rqrrrsr�r�r�r�rrTrr6r7rr�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�rhr�r�r�r�r�r�rrrrrrr�r�r�rVr�r�r�r�r%r�r+r-r8r8r8r9r�sz�
oZ �


c 3
(& �
1
?


	rcCsFz,t|d�rt|d�}nt|�}|��WdSty@YdS0dS)Nr_)r�TF)r�rr�r)r�r�r8r8r9r�	s
rc	Cs,ddl}d}|j|d�}|jdddddd	�|jd
d�}|jdd
ddd�|jdddddd�|jdddddd�|jddddd�|��}|jdu�r|j}t|��rt|d��*}|��t	|��t
jd�Wd�n1s�0Y|j�rt	d �
|��n|�d!d"�
|���n|jdu�r�|j}t|��rtt�|d#��}|j|jd$�Wd�n1�sh0Yn|�d!d"�
|���n�|jdu�rpt|j�d!k�r�|jd}tj}n,t|j�d%k�r�|j\}}n|�d!|���t|��r\t�|d#��}|j|d&�Wd�n1�s0Y|j�rn|d'k�rFd(�
|�}	nd)�
||�}	t	|	�n|�d!d"�
|��n�|jdu�r(|j�d�}
tj�|
�\}}d*d*d+d+d,d,d,d,d-�}
||
v�r�d.|
|nd/}|j}t�|
|��&}|D]}|�|��q�Wd�n1�s0Y|j�r(t	d0�
|
��dS)1Nrz3A simple command-line interface for tarfile module.)�descriptionz-vz	--verbose�
store_trueFzVerbose output)�action�default�helpT)�requiredz-lz--list�	<tarfile>zShow listing of a tarfile)�metavarr2z-ez	--extract�+)r4z<output_dir>zExtract tarfile into target dir)�nargsr5r2z-cz--create)z<name>z<file>zCreate tarfile from sourcesz-tz--testzTest if a tarfile is validrzr&z{!r} is a tar archive.r#z{!r} is not a tar archive.
r�)r�r$)r%r�z{!r} file is extracted.z+{!r} file is extracted into {!r} directory.r�r�r�)r�z.tgzz.xzz.txzz.bz2z.tbzz.tbz2z.tb2zw:r{z{!r} file created.)�argparse�ArgumentParser�add_argument�add_mutually_exclusive_group�
parse_args�testrrr�rnrlr(r�rT�exitrhrr�r2r}�curdir�format_helpr�Zcreate�popr%�splitextr�)r8r.�parserr^�argsrar�Ztfr?r*Ztar_name�_�extZcompressionsZtar_modeZ	tar_files�	file_namer8r8r9�main�	s��
�
�
�
�
0
0

,
�
�
.rH�__main__)]�version�
__author__�__credits__�builtinsrr�rlr}r�r\r�r�rWrr\r�r�r��AttributeError�NotImplementedErrorrr��	NameError�__all__r3r�r�rrrr
r$r�r>rwrur'r(rr{ZCONTTYPErrr?rr rNr
rrrrRrsrCrprcrrIrqr�r�getfilesystemencodingr:r?rOrUrZr]rorrr
rrr	rrtrurvrLrwrxr��objectr�r��BufferedReaderr�rrrrHrqr8r8r8r9�<module> s�

����
shU+W


Youez - 2016 - github.com/yon3zu
LinuXploit