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/site-packages/olefile/__pycache__/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

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

��a_��@s�ddlmZdZdZdZgd�ZddlZddlZddlZddl	Z	ddl
ZddlZddl
Z
eeurdeZzeZWneZYn0e	�	d�jdkr�dZn4e	�	d	�jdkr�d	Zne	�	d
�jdkr�d
Zned��zeWney�eZYn0dZejdd
k�rdZndZe
jdfdd�Zed�Zdd�Z dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+d
Z,dZ-dZ.dZ/dZ0dZ1dZ2d
Z3dZ4dZ5dZ6dZ7d Z8d!Z9d"Z:d#Z;d$Z<d%Z=d&Z>d'Z?d(Z@d)ZAd*ZBd+ZCd,ZDd-ZEd.ZFd/ZGd0ZHd1ZId2ZJd3ZKd4ZLd5ZMd6ZNd7ZOd8ZPd9ZQd:ZRd;ZSd<ZTd=ZUd>ZVd?ZWd@ZXdAZYd"ZZd+Z[d5Z\dBZ]dCZ^dDdE�Z_eeu�r<dFdG�Z`ndHdG�Z`d\dIdJ�Zad]dKdL�ZbdMdN�ZcdOdP�ZdGdQdR�dR�ZeGdSdT�dTejf�ZgGdUdV�dV�ZhGdWdX�dX�ZidYdZ�Zjekd[k�r�ej�dS)^�)�print_functionz
2018-09-09z0.46zPhilippe Lagadec)�	isOleFile�	OleFileIO�OleMetadata�enable_logging�MAGIC�STGTY_EMPTY�KEEP_UNICODE_NAMES�STGTY_STREAM�
STGTY_STORAGE�
STGTY_ROOT�STGTY_PROPERTY�STGTY_LOCKBYTES�MINIMAL_OLEFILE_SIZE�
DEFECT_UNSURE�DEFECT_POTENTIAL�DEFECT_INCORRECT�DEFECT_FATAL�DEFAULT_PATH_ENCODING�
MAXREGSECT�DIFSECT�FATSECT�
ENDOFCHAIN�FREESECT�	MAXREGSID�NOSTREAM�UNKNOWN_SIZE�
WORD_CLSIDN�L��I�iz>Need to fix a bug with 32 bit arrays, please contact author...T�zutf-8�cCsL|tjjjvr&t�|�}|�|�|St�|�}|�t���|�|�|S�N)�loggingZLogger�managerZ
loggerDictZ	getLogger�setLevelZ
addHandlerZNullHandler)�name�level�logger�r+�3/usr/lib/python3.9/site-packages/olefile/olefile.py�
get_logger�s



r-�olefilecCst�tj�dSr$)�logr'r%ZNOTSETr+r+r+r,r�srs��ࡱ�l��l��l��l�������i�������	�
���
������������������@�A�B�C�D�E�F�G�H�z$00020900-0000-0000-C000-000000000046�(icCs�t|d�r$|�tt��}|�d�n`t|t�rLt|�tkrL|dtt��}n8t|d��}|�tt��}Wd�n1sz0Y|tkr�dSdSdS)N�readr�rbTF)	�hasattrrW�lenr�seek�
isinstance�bytesr�open)�filename�header�fpr+r+r,rs
,rcCst|�Sr$)�ord��cr+r+r,�i8?srecCs|jtur|S|dS�Nr)�	__class__�intrcr+r+r,reCscCst�d|||d��dS)Nz<Hr1r��struct�unpack�rd�or+r+r,�i16GsrncCst�d|||d��dS)Nz<Irrrirlr+r+r,�i32QsrocCsD|�d�sdSdt|d�t|d�t|d�fttt|dd���S)	N��z0%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02Xrrr3r5r<)�striprorn�tuple�mapre)�clsidr+r+r,�_clsid[s	
��rvcCs(t�dddddd�}|tj|dd�S)N�Ar#rr7�Zmicroseconds)�datetime�	timedelta)Zfiletime�_FILETIME_null_dater+r+r,�filetime2datetimelsr|c@s4eZdZgd�Zgd�Zdd�Zdd�Zdd�Zd	S)
r)�codepage�title�subject�author�keywords�comments�template�
last_saved_by�revision_number�total_edit_time�last_printed�create_time�last_saved_time�	num_pages�	num_words�	num_chars�	thumbnail�creating_application�security)�codepage_doc�category�presentation_targetr]�lines�
paragraphs�slides�notes�
hidden_slides�mm_clips�
scale_crop�
heading_pairs�titles_of_partsr&�company�links_dirty�chars_with_spaces�unused�
shared_doc�	link_base�hlinks�hlinks_changed�version�dig_sig�content_type�content_status�language�doc_versioncCsd|_d|_d|_d|_d|_d|_d|_d|_d|_d|_	d|_
d|_d|_d|_
d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_!d|_"d|_#d|_$d|_%d|_&d|_'d|_(d|_)d|_*d|_+d|_,d|_-d|_.dSr$)/r}r~rr�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�r&r�r�r�r�r�r�r�r�r�r�r�r�r�r���selfr+r+r,�__init__�s^zOleMetadata.__init__cCs�|j|jD]}t||d�q|�d�rp|jdddgd�}tt|j��D]&}|�|dd�}t||j||�qH|�d�r�|jddd�}tt|j��D]&}|�|dd�}t||j||�q�dS)NzSummaryInformationTr7)�convert_time�
no_conversionr#zDocumentSummaryInformation�r�)�SUMMARY_ATTRIBS�DOCSUM_ATTRIBS�setattr�exists�
getproperties�rangerZ�get)r�r.Zattrib�propsr!�valuer+r+r,�parse_properties�s 	
�
�zOleMetadata.parse_propertiescCshtd�|jD]"}t||�}td|t|�f�qtd�|jD]"}t||�}td|t|�f�q@dS)Nz*Properties from SummaryInformation stream:�- %s: %sz2Properties from DocumentSummaryInformation stream:)�printr��getattr�reprr�)r�Zpropr�r+r+r,�dumps



zOleMetadata.dumpN)�__name__�
__module__�__qualname__r�r�r�r�r�r+r+r+r,rzs
%8 rc@seZdZdd�ZdS)�	OleStreamc	CsBt�d�t�d|||||t|�t|�f�||_|jjjrFtd��d}	|tkrlt|�|}d}	t�d�||d|}
t�d|
�|
t|�kr�|j�	t
d	�g}|d
kr�|tkr�t�d�|j�	t
d�t|
�D�]�}t�d
||f�|tk�r*|	�rt�d��q�nt�d�|j�	t
d�|d
k�sB|t|�k�r�t�d||t|�f�t�d||
f�|j�	t
d��q�z|�
|||�Wn>t�d|||||f�|j�	t
d�Y�q�Yn0|�|�}
t|
�|k�rT|t|�dk�rTt�d|t|�||||t|
�f�t�d|||t|
��|j�	t
d�|�|
�z||d@}Wq�t�y�|j�	t
d�Y�q�Yq�0q�d�|�}t|�|k�r�t�dt|�|f�|d|�}||_nR|	�rt�dt|��t|�|_n.t�dt|�|f�t|�|_|j�	t
d�tj�||�dS)NzOleStream.__init__:zE  sect=%d (%X), size=%d, offset=%d, sectorsize=%d, len(fat)=%d, fp=%sz2Attempting to open a stream from a closed OLE FileFTz  stream with UNKNOWN SIZEr#�nb_sectors = %dz(malformed OLE document, stream too largerz!size == 0 and sect != ENDOFCHAIN:z+incorrect OLE sector index for empty streamzReading stream sector[%d] = %Xhz6Reached ENDOFCHAIN sector for stream with unknown sizez$sect=ENDOFCHAIN before expected sizezincomplete OLE streamzsect=%d (%X) / len(fat)=%dzi=%d / nb_sectors=%d�,incorrect OLE FAT, sector index out of rangezsect=%d, seek=%d, filesize=%d�OLE sector index out of rangez9sect=%d / len(fat)=%d, seek=%d / filesize=%d, len read=%dzseek+len(read)=%d�incomplete OLE sectorr0�z3Read data of length %d, truncated to stream size %dz3Read data of length %d, the stream size was unknownz9Read data of length %d, less than expected stream size %dz%OLE stream size is less than declared)r/�debugrZr��olera�closed�OSErrorr�
_raise_defectrrr�r[rW�append�
IndexError�join�size�io�BytesIOr�)r�ra�sectr��offset�
sectorsize�fat�filesize�	olefileioZunknown_size�
nb_sectors�datar!Zsector_datar+r+r,r�*s�
�





�
 �


zOleStream.__init__N)r�r�r�r�r+r+r+r,r�sr�c@sneZdZdZdZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zddd�Z
dd�Zdd�ZdS)�OleDirectoryEntryz<64sHBBIII16sIQQIII�cCsj||_||_g|_i|_d|_t�tj|�\|_	|_
|_|_|_
|_|_}|_|_|_|_|_|_|jttttfvr�|�td�|jtkr�|dkr�|�td�|dkr�|jtkr�|�td�|j
dkr�|�td�d|_
|j	d|j
d�|_|�|j�|_t� d	|jt!|j�f�t� d
|j�t� d|j�t� d|j
|j|jf�|j"d
k�r�|jdk�r�|jdk�r�t� d|j"|j|j|jf�|�t#d�|j|_$n|jt%|j�d>|_$t� d|j$|j|jf�t&|�|_'|jtk�r|j$dk�r|�t(d�d|_)|jttfv�r`|j$dk�r`|j$|j*k�rJ|jtk�rJd|_)nd|_)|�+|j|j)�d|_,dS)NFzunhandled OLE storage typerzduplicate OLE root entryzincorrect OLE root entryrLz(incorrect DirEntry name length >64 bytesr1zDirEntry SID=%d: %sz - type: %dz - sect: %Xhz% - SID left: %d, right: %d, child: %d�r0z+sectorsize=%d, sizeLow=%d, sizeHigh=%d (%X)zincorrect OLE stream size� z% - size: %d (sizeLow=%d, sizeHigh=%d)zOLE storage with size>0T)-�sidr.�kids�	kids_dict�usedrjrkr��STRUCT_DIRENTRYZname_rawZ
namelength�
entry_typeZcolor�sid_left�	sid_right�	sid_childZdwUserFlags�
createTime�
modifyTime�
isectStartZsizeLowZsizeHighrrr
rr�rZ
name_utf16�_decode_utf16_strr(r/r�r�r�rr��longrvrur�
is_minifat�minisectorcutoff�_check_duplicate_stream�
sect_chain)r��entryr�r.rur+r+r,r��sv	�

��

�zOleDirectoryEntry.__init__cCs~|jr
dS|jttfvs"|jdkr&dSt�|_|jrB|jsB|��|j	}|t
krz|j�|�|jrn|j|}qH|j|}qHdSrf)
r�r�rr
r��listr��minifat�loadminifatr�rr�r�)r�r.Z	next_sectr+r+r,�build_sect_chain-sz"OleDirectoryEntry.build_sect_chaincCsBt�d|jt|j�|jf�|jtkr>|�|j�|j�	�dS)Nz.build_storage_tree: SID=%d - %s - sid_child=%d)
r/r�r�r�r(r�r�append_kidsr��sortr�r+r+r,�build_storage_tree@s�
	z$OleDirectoryEntry.build_storage_treecCs�t�d|�|tkrdS|dks2|t|jj�krB|j�td�n�|j�|�}t�d|j	t
|j�|j|j
|jf�|jr�|j�td�dSd|_|�|j�|j��}||jvr�|j�td�|j�|�||j|<|�|j
�|��dS)Nzappend_kids: child_sid=%drzOLE DirEntry index out of rangezHappend_kids: child_sid=%d - %s - sid_left=%d, sid_right=%d, sid_child=%dz#OLE Entry referenced more than onceTz!Duplicate filename in OLE storage)r/r�rrZr.�
direntriesr�r�_load_direntryr�r�r(r�r�r�r�r��lowerr�r�r�r�)r�Z	child_sid�childZ
name_lowerr+r+r,r�Xs2��

�
zOleDirectoryEntry.append_kidscCs|j|jkSr$�r(�r��otherr+r+r,�__eq__�szOleDirectoryEntry.__eq__cCs|j|jkSr$r�r�r+r+r,�__lt__�szOleDirectoryEntry.__lt__cCs|�|�Sr$)rr�r+r+r,�__ne__�szOleDirectoryEntry.__ne__cCs|�|�p|�|�Sr$)rrr�r+r+r,�__le__�szOleDirectoryEntry.__le__rcCs�gd�}z||j}Wnty,d}Yn0td|t|j�|dd�|jttfvrht|jddd�t�|jttfvr�|j	r�td|d|j	�|j
D]}|�|d�q�dS)N)z	(invalid)z	(storage)z(stream)z(lockbytes)z
(property)z(root)z	(UNKNOWN)� ��endr]z{%s}r1)r�r�r�r�r(r
rr�rrur�r�)r��tabZTYPES�	type_name�kidr+r+r,r��s

zOleDirectoryEntry.dumpcCs|jdkrdSt|j�Srf)r�r|r�r+r+r,�getmtime�s	
zOleDirectoryEntry.getmtimecCs|jdkrdSt|j�Srf)r�r|r�r+r+r,�getctime�s	
zOleDirectoryEntry.getctimeN)r)r�r�r�r�Z
DIRENTRY_SIZEr�r�r�r�rrrrr�r
rr+r+r+r,r��sb/	
r�c@sVeZdZdeddefdd�Zdd�Zdd�Zefd	d
�Z	dOdd
�Z
dPdd�Zdd�ZdQdd�Z
dRdd�ZdSdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�ZdTd$d%�ZdUd&d'�Zd(d)�Zd*d+�Zd,d-�Zedfd.d/�ZdVd1d2�ZdWd3d4�Zd5d6�Zd7d8�Zd9d:�Z d;d<�Z!d=d>�Z"d?d@�Z#dAdB�Z$dCdD�Z%dEdF�Z&dGdH�Z'dIdJ�Z(dXdKdL�Z)dMdN�Z*dS)YrNFcCs||_g|_||_||_d|_d|_g|_g|_d|_d|_	d|_
d|_d|_d|_
d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_!d|_"d|_#d|_$d|_%d|_&|�r|j'||d�dS)N)�
write_mode)(�_raise_defects_level�parsing_issuesr�
path_encoding�	_filesize�
ministream�_used_streams_fat�_used_streams_minifat�
byte_order�directory_fpr��dll_versionr��first_difat_sector�first_dir_sector�first_mini_fat_sectorra�header_clsid�header_signature�metadata�mini_sector_shift�mini_sector_size�mini_stream_cutoff_sizer��minifatsectr��minisectorsize�
minor_version�nb_sect�num_difat_sectors�num_dir_sectors�num_fat_sectors�num_mini_fat_sectors�	reserved1�	reserved2�root�sector_shift�sector_size�transaction_signature_numberr^)r�r_Z
raise_defectsrr�rr+r+r,r��sTzOleFileIO.__init__cCs|Sr$r+r�r+r+r,�	__enter__6szOleFileIO.__enter__cGs|��dSr$)�close)r��argsr+r+r,�__exit__:szOleFileIO.__exit__cCs<||jkrt�|�||��n|j�||f�t�|�dSr$)r
r/�errorrr��warning)r�Zdefect_level�messageZexception_typer+r+r,r�>s



zOleFileIO._raise_defect�replacecCs(|�d|�}|jr |�|j|�S|SdS)NzUTF-16LE)�decoder�encode)r�Z	utf16_str�errorsZunicode_strr+r+r,r�Xs
zOleFileIO._decode_utf16_strc	Cs�||_t|d�r||_n@t|t�r<t|�tkr<t�|�|_n|jrHd}nd}t	||�|_d}|j�
dtj�z|j�
�}W|j�
d�n|j�
d�0||_t�d|j|jf�g|_g|_|j�d�}t|�dks�|dd�tk�rt�d|dd�tf�|�td	�d
}t�|�}t�d||df�|d|�}t�||�\|_|_|_|_|_|_|_ |_!|_"|_#|_$|_%|_&|_'|_(|_)|_*|_+t�t�||��|jtk�r�|�td
�|jt,d�k�r�|�t-d�t�d|j�t�d|j�|jdv�r|�t-d�t�d|j�|jdk�r8|�t-d�d|j|_.t�d|j.�|j.dv�rl|�t-d�|jdk�r�|j.dk�s�|jdk�r�|j.dk�r�|�t-d�d|j |_/t�d|j/�|j/d v�r�|�t-d!�|j!dk�s�|j"dk�r|�t-d"�t�d#|j#�|j.dk�r4|j#dk�r4|�t-d$�t�d%|j$�t�d&|j%�t�d'|j&�|j&dk�r||�t0d(�t�d)|j'�|j'dk�r�|�t-d*�t�1d+|j'�d|_'t�d,|j(�t�d-|j)�t�d.|j*�t�d/|j+�||j.d0|j.d0|_2t�d1|j2|j2f�t3|dd2��|_|j.|_4|j/|_5|j'|_6|�7|j%�|j)�rt|�7|j(�|j+�r�|�7|j*�|�8|�|�9|j%�|j(|_:dS)3NrWzr+brXrzFile size: %d bytes (%Xh)r�r5zMagic = %r instead of %rz#not an OLE2 structured storage filez<8s16sHHHHHHLLLLLLLLLLzfmt_header size = %d, +FAT = %di�zincorrect OLE signaturer<zincorrect CLSID in OLE headerzMinor Version = %dz%DLL Version   = %d (expected: 3 or 4))r"rz"incorrect DllVersion in OLE headerz#Byte Order    = %X (expected: FFFE)i��z!incorrect ByteOrder in OLE headerr1z0Sector Size   = %d bytes (expected: 512 or 4096))r�rUz#incorrect sector_size in OLE headerr"rrUz3sector_size does not match DllVersion in OLE headerz/MiniFAT Sector Size   = %d bytes (expected: 64))rLz(incorrect mini_sector_size in OLE headerz.incorrect OLE header (non-null reserved bytes)z Number of Directory sectors = %dz3incorrect number of directory sectors in OLE headerzNumber of FAT sectors = %dzFirst Directory sector  = %Xhz$Transaction Signature Number    = %dz5incorrect OLE header (transaction_signature_number>0)z/Mini Stream cutoff size = %Xh (expected: 1000h)z/incorrect mini_stream_cutoff_size in OLE headerzJFixing the mini_stream_cutoff_size to 4096 (mandatory value) instead of %dzFirst MiniFAT sector      = %XhzNumber of MiniFAT sectors = %dzFirst DIFAT sector        = %XhzNumber of DIFAT sectors   = %dr#z/Maximum number of sectors in the file: %d (%Xh)rD);rrYrar\r]rZrr�r�r^r[�os�SEEK_END�tellrr/r�rrrWrr�rrj�calcsizerkrrr"rrr+rr(r)r%r&rr-rrr'rr$�	bytearrayrr,rrr3r#rvr�r!r�r��loadfat�
loaddirectoryr )	r�r_r�moder�r`Z
fmt_header�header_sizeZheader1r+r+r,r^ks�
'

����
zOleFileIO.opencCs|j��dSr$)rar/r�r+r+r,r/KszOleFileIO.closecCsf|rt�d|�|j}n(t�d|�|ttttfvr<dS|j}||vrX|�t	d�n
|�
|�dS)Nz,_check_duplicate_stream: sect=%Xh in MiniFATz(_check_duplicate_stream: sect=%Xh in FATzStream referenced twice)r/r�rrrrrrr�rr�)r�Z
first_sectr�Zused_streamsr+r+r,r�Rs	z!OleFileIO._check_duplicate_streamrc
Cs�d}tdtdtdtdi}t|�}||d|}tddd	�t|�D]}td
|dd	�qDt�t|�D]�}||}	td||	dd	�t|	|	|�D]X}||kr�q�||}
|
d@}||vr�||}n|
|dkr�d
}nd
|
}t|dd	�q�t�qhdS)Nr5z..free..z[ END. ]zFATSECT zDIFSECT r#�indexrr�%8X�%6X:r0z    --->)rrrrrZr�r�)
r�r��
firstindex�VPLZfatnames�nbsect�nlinesr!�lrBr�Zauxr(r+r+r,�dumpfatls6�
zOleFileIO.dumpfatcCs�d}t�t|�}tjdkr"|��t|�}||d|}tddd�t|�D]}td|dd�qNt�t|�D]b}||}	td||	dd�t|	|	|�D],}||kr�q�||}
d|
}t|dd�q�t�qrdS)	Nr5�bigr#rBrrrCrD)�array�UINT32�sys�	byteorder�byteswaprZr�r�)r��sectorrErFrrGrHr!rIrBr�r(r+r+r,�dumpsect�s(
zOleFileIO.dumpsectcCs"t�t|�}tjdkr|��|S)NrK)rLrMrNrOrP)r�r��ar+r+r,�
sect2array�s
zOleFileIO.sect2arraycCs�t|tj�r|}n |�|�}t�tj�r2|�|�d}|D]X}|d@}t�d|�|t	ksd|t
krrt�d�q�|�|�}|�|�}|j||_q:|S)Nr0z
isect = %Xzfound end of sector chain)
r\rLrTr/�isEnabledForr%�DEBUGrRr�rr�getsectr�)r�r�Zfat1Zisect�sZnextfatr+r+r,�loadfat_sect�s 




zOleFileIO.loadfat_sectc	Cs�t�d�|dd�}t�dt|�t|�df�t�t�|_|�|�|jdk�rnt�d�|jdkrv|�	t
d	�|j|jkr�|�	t
d
�t�d�|jdd}|jd|d|}t�d
|�|j|kr�td��|j}t|�D]j}t�d||f�|�|�}|�|�}t�tj��r,|�|�|�|d|��||}t�d|�q�|ttfv�rxtd��n
t�d�t|j�|jk�r�t�dt|j�|jf�|jd|j�|_t�dt|j�|jf�t�tj��r�t�d�|�|j�dS)NzDLoading the FAT table, starting with the 1st sector after the header�Lr�zlen(sect)=%d, so %d integersrrz)DIFAT is used, because file size > 6.8MB.�mz#incorrect DIFAT, not enough sectorsz)incorrect DIFAT, first index out of rangezDIFAT analysis...r#z
nb_difat = %dzincorrect DIFATzDIFAT block %d, sector %Xznext DIFAT sector: %Xzincorrect end of DIFATz$No DIFAT, because file size < 6.8MB.z!len(fat)=%d, shrunk to nb_sect=%dz6FAT references %d sectors / Maximum %d sectors in filez
FAT:)r/r�rZrLrMr�rYr$r&r�rrr#rr��IOError�	iterrangerWrTrUr%rVrRrrrJ)	r�r`r�Znb_difat_sectorsZnb_difatZisect_difatr!Zsector_difatZdifatr+r+r,r>�sJ	












zOleFileIO.loadfatcCs�|j|j}|jj|jd|j}|d}t�d|j|j|||f�||kr\|�t	d�|j
|j|dd���}|�|�|_
t�dt|j
�|f�|j
d|�|_
t�dt|j
��t�tj�r�t�d	�|�|j
�dS)
Nr#rzaloadminifat(): minifatsect=%d, nb FAT sectors=%d, used_size=%d, stream_size=%d, nb MiniSectors=%dz%OLE MiniStream is larger than MiniFATT��	force_FATz$MiniFAT shrunk from %d to %d sectorszloadminifat(): len=%dz	
MiniFAT:)r'r,r*r�rr/r�r r�r�_openrWrTr�rZrUr%rVrJ)r�Zstream_sizeZnb_minisectorsZ	used_sizerXr+r+r,r�.s �
zOleFileIO.loadminifatc
Cs�z|j�|j|d�Wn8t�d||j|d|jf�|�td�Yn0|j�|j�}t	|�|jkr�t�d|t	|�|jf�|�td�|S)Nr#z(getsect(): sect=%X, seek=%d, filesize=%dr�z*getsect(): sect=%X, read=%d, sectorsize=%dr�)
rar[r�r/r�rr�rrWrZ)r�r�rQr+r+r,rWRs��zOleFileIO.getsectrpc
Cs�t|t�std��t|t�r(t|�dkr0td��z|j�|j|d�Wn8t�d||j|d|j	f�|�
td�Yn0t|�|jkr�|||jt|�7}nt|�|jkr�td��|j�
|�dS)Nz'write_sect: data must be a bytes stringr#z4write_sect: padding must be a bytes string of 1 charz+write_sect(): sect=%X, seek=%d, filesize=%dr��Data is larger than sector size)r\r]�	TypeErrorrZrar[r�r/r�rr�r�
ValueError�write)r�r�r��paddingr+r+r,�
write_sectrs 
�zOleFileIO.write_sectcCs�t|t�std��t|t�r(t|�dkr0td��z|j�|�Wn,t�d||jf�|�	t
d�Yn0t|�}||jkr�|||j|7}|j|kr�td��|j�
|�dS)Nz,write_mini_sect: data must be a bytes stringr#z9write_mini_sect: padding must be a bytes string of 1 charz)write_mini_sect(): fp_pos=%d, filesize=%dr�ra)r\r]rbrZrar[r/r�rr�rrrcrd)r��fp_posr�reZlen_datar+r+r,�_write_mini_sect�s"
�

zOleFileIO._write_mini_sectcCslt�d�|j|dd�|_|jjd}t�d|jj|f�dg||_|�d�}|jd|_|j��dS)NzLoading the Directory:Tr^r�z&loaddirectory: size=%d, max_entries=%dr)	r/r�r`rr�r�r�r*r�)r�r�Zmax_entriesZ
root_entryr+r+r,r?�s

�
zOleFileIO.loaddirectorycCs~|dks|t|j�kr"|�td�|j|durF|�td�|j|S|j�|d�|j�d�}t|||�|j|<|j|S)Nrz OLE directory index out of rangez'double reference for OLE stream/storager�)	rZr�r�rrrr[rWr�)r�r�r�r+r+r,r��s�
zOleFileIO._load_direntrycCs|j��dSr$)r*r�r�r+r+r,�
dumpdirectory�szOleFileIO.dumpdirectoryc
Cs�t�d||t|�f�||jkr�|s�|jsh|��|jj}t�d|jj|f�|j	|jj|dd�|_t
|j||d|j|j|jj|d�St
|j
|||j|j|j|j|d�SdS)Nz1OleFileIO.open(): sect=%Xh, size=%d, force_FAT=%sz%Opening MiniStream: sect=%Xh, size=%dTr^r)rar�r�r�r�r�r�r�)r/r��strr�rr�r*r�r�r`r�r!r�rar�r�r)r��startr�r_Zsize_ministreamr+r+r,r`�s0
�
�
�

�
�zOleFileIO._openTcCs�||jg}|jD]v}|jtkrR|r>|�|dd�|jg�|�|||||�q|jtkr||r�|�|dd�|jg�q|�td�qdS)Nr#zIThe directory tree contains an entry which is not a stream nor a storage.)	r(r�r�rr��_listr
r�r)r��files�prefix�node�streams�storagesr�r+r+r,rls


zOleFileIO._listcCsg}|�|g|j||�|Sr$)rlr*)r�rprqrmr+r+r,�listdir3s	zOleFileIO.listdircCsXt|t�r|�d�}|j}|D]2}|jD]}|j��|��kr(qLq(td��|}q|jS)N�/zfile not found)	r\�
basestring�splitr*r�r(r�r\r�)r�r_ror(r	r+r+r,�_findAs


zOleFileIO._findcCs6|�|�}|j|}|jtkr&td��|�|j|j�S)Nzthis file is not a stream)rvr�r�r
r\r`r�r��r�r_r�r�r+r+r,�
openstreamas



zOleFileIO.openstreamcCs�|js|�|�t|j�}|jjs.|j�|�|j|j}t|j�D]�\}}||}||}|jj|d|j||j}	||dkr�|||j|d|j�}
n|||jd�}
|�|	|
�qDdS)Nr#)r�r�rZr*r,r�	enumeraterh)r�r��
data_to_writer�Z
block_size�idxr�Z	sect_baseZsect_offsetrgZdata_per_sectorr+r+r,�_write_mini_streamvs

 zOleFileIO._write_mini_streamc
	CsVt|t�std��|�|�}|j|}|jtkr8td��|j}|t	|�krRt
d��||jkrt|jtkrt|j
||d�S|j}||jd|j}t�d|�t|�D]�}||dkr�|||j|d|j�}	n4|||jd�}	t�d||jt	|	�||jf�|�||	�z|j|}Wq�t�y<td��Yq�0q�|tk�rRtd	��dS)
Nz)write_stream: data must be a bytes stringzthis is not a streamz?write_stream: data must be the same size as the existing stream)r�rzr#r�zGwrite_stream: size=%d sectorsize=%d data_sector=%Xh size%%sectorsize=%dr�z)incorrect last sector index in OLE stream)r\r]rbrvr�r�r
r\r�rZrcr�rr|r�r�r/r�r�rfr�r�r)
r�Zstream_namer�r�r�r�r�r�r!Zdata_sectorr+r+r,�write_stream�s:



�
zOleFileIO.write_streamcCs0z|�|�}|j|}|jWSYdS0dS)NF)rvr�r�rwr+r+r,�get_type�s

zOleFileIO.get_typecCs|�|�}|j|}|jSr$)rvr�rurwr+r+r,�getclsid�s


zOleFileIO.getclsidcCs|�|�}|j|}|��Sr$)rvr�r
rwr+r+r,r
�s

zOleFileIO.getmtimecCs|�|�}|j|}|��Sr$)rvr�rrwr+r+r,r�s

zOleFileIO.getctimecCs$z|�|�}WdSYdS0dS)NTF)rv)r�r_r�r+r+r,r�	s
	
zOleFileIO.existscCs,|�|�}|j|}|jtkr&td��|jS)Nzobject is not an OLE stream)rvr�r�r
rbr�rwr+r+r,�get_sizes
	


zOleFileIO.get_sizecCs|jjSr$)r*r(r�r+r+r,�get_rootentry_name*szOleFileIO.get_rootentry_namecCsH|dkrg}|}t|t�s$d�|�}|�|�}i}zn|�d�}t|dd��}|�d�}t|dd��}	|�t|d��d|�t|�d��d�}t|d�}
WnJty�}z2d	t	|�|f}|�
t|t|��|WYd}~Sd}~00t
|
tt|�d��}
t|
�D�]6}
d
}�z�t|d|
d�}t|d|
d�}t||�}t�d|||f�|tk�r�t||d�}|d
k�r�|d}�nb|tk�r�t||d�}�nF|tttfv�r�t||d�}�n$|ttfv�r�t||d�}�n|ttfv�r.t||d�}||d|d|d�}|�dd�}�n�|tk�rbt||d�}||d|d|�}�n�|tk�r�t||d�}|� ||d|d|d��}�nJ|t!k�rDt"t||d��t"t||d��d>}|�r:||v�r:t�d||t#|�df�t$�$dddd
d
d
�}t�d|d�|t$j%|dd�}n|d}n�|t&k�r`t'||d�}n�|t(k�r�t||d|d��}nf|t)k�r�t||d�}||d|d|�}n4|t*k�r�t+t||d��}nd}t�d||f�|||<WnJt�y>}z0d|t	|�|f}|�
t|t|��WYd}~n
d}~00�q
|S)NrsrHr5rDr@r<s****rz6Error while parsing properties header in stream %s: %srr9z!property id=%d: type=%d offset=%Xi�ir#rpr�r1r�z8Converting property #%d to python datetime, value=%d=%fsi���rwztimedelta days=%dl@�T$r7rxz5property id=%d: type=%d not implemented in parser yetz3Error while parsing property id %d in stream %s: %s),r\rjr�rxrWrvr[ro�
BaseExceptionr�r�r�type�minrhrZr]r/r��VT_I2rn�VT_UI2�VT_I4�VT_INT�VT_ERROR�VT_UI4�VT_UINT�VT_BSTR�VT_LPSTRr5�VT_BLOB�	VT_LPWSTRr��VT_FILETIMEr��floatryrz�VT_UI1re�VT_CLSID�VT_CF�VT_BOOL�bool)r�r_r�r�Z
streampathrar�rXruZfmtidZ	num_props�exc�msgr!Zproperty_idr�Z
property_typer��countr{r+r+r,r�2s�





�





&
(�





�,zOleFileIO.getpropertiescCst�|_|j�|�|jSr$)rrr�r�r+r+r,�get_metadata�szOleFileIO.get_metadata)r5)F)F)r)r)rp)rp)TF)TF)FN)+r�r�r�rrr�r.r1r\r�r�r^r/r�rJrRrTrYr>r�rWrfrhr?r�rirr`rlrrrvrxr|r}r~rr
rr�r�r�r�r�r+r+r+r,r�sP�
M

a

%
$T$ 

)&

 >
rc	Cs�ddl}ddl}d}tjtjtjtjtjd�}d}|j|d�}|j	dddd	d
�|j	dddd
d
�|j	dddd|dd�|�
�\}}tdtt
f�t|�dkr�tt�|��|��|jr�d|_tj||jdd�t�|D�]�}�z�t|�}	td�t|�td�|	��|	��D]�}
|
dddk�rtd|
�z�|	j|
dd�}t|���}|D]p\}}
t|
ttf��r�t|
�dk�r�|
dd�}
t|
t��r�dD]}|t|
�v�r�d }
�q��q�td!||
��q^Wnt �!d"|
�Yn0�q|j"�rptd#�|	��D]^}
td$t#d%�$|
��d$d&d'�|	�%|
�}|t&k�rZtd(|	�'|
��|	�(|
�ntd)|��q
t�td*�|	j)D],}|du�r~td+|j*|�+�|�,�f��q~t�z|	�-�}|�.�Wnt �!d,�Yn0t�|	�/�}td-|�|	�0d.��r@td/�td0|	�%d.��td1|	�'d.��|	�0d2��r@td3�td4�|	j1�rv|	j1D]\}}td5|j2|f��qVntd6�Wq�t �!d7|�Yq�0q�dS)8Nrr3)r��infor3r2Zcriticalz1usage: %prog [options] <filename> [filename2 ...])�usagez-c�
store_true�
check_streamsz*check all streams (for debugging purposes))�action�dest�helpz-d�
debug_modez\debug mode, shortcut for -l debug (displays a lot of debug information, for developers only)z-lz
--loglevel�loglevel�storezBlogging level debug/info/warning/error/critical (default=%default))r�r��defaultr�z=olefile version %s %s - https://www.decalage.info/en/olefile
r�z%(levelname)-8s %(message)s)r)�formatzD--------------------------------------------------------------------����z%r: propertiesTr��2)r#r1r"rr2r3r4r8r9r;�r<r=r>r?r@rArBrCrDrErFrGrHrIrJrKz
(binary data)z   z&Error while parsing property stream %rz
Checking streams...�-rsrrzsize %dzNOT a stream : type=%dz5Modification/Creation times of all directory entries:z- %s: mtime=%s ctime=%szError while parsing metadatazRoot entry name: "%s"ZworddocumentzThis is a Word document.ztype of stream 'WordDocument':zsize :z
macros/vbaz%This document may contain VBA macros.z(
Non-fatal issues raised during parsing:r��NonezError while parsing file %r)3rN�optparser%rV�INFOZWARNINGZERROR�CRITICALZOptionParserZ
add_option�
parse_argsr��__version__�__date__rZ�__doc__�
print_help�exitr�r�ZbasicConfigrrrirrr��sorted�itemsr\rtr]r=r/�	exceptionr�r�r�r~r
r�rxr�r(r
rr�r�r�r�rr�)rNr�ZDEFAULT_LOG_LEVELZ
LOG_LEVELSr��parser�optionsr0r_r�Z
streamnamer��k�vrdZst_typer��metar*�exctyper�r+r+r,�main�s��
�
��





�r��__main__)r)r)lZ
__future__rr�r��
__author__�__all__r�rNrjrLZos.pathr9ryr%rjr]rhr�Zxranger]r��itemsizerMrcrt�	NameErrorr	�version_inforr�r-r/rrrrrrrrrrrr
rr
rrZVT_EMPTYZVT_NULLr�r�ZVT_R4ZVT_R8ZVT_CYZVT_DATEr�ZVT_DISPATCHr�r�Z
VT_VARIANTZ
VT_UNKNOWNZ
VT_DECIMALZVT_I1r�r�r�ZVT_I8ZVT_UI8r�r�ZVT_VOIDZ
VT_HRESULTZVT_PTRZVT_SAFEARRAYZ	VT_CARRAYZVT_USERDEFINEDr�r�r�r�Z	VT_STREAMZ
VT_STORAGEZVT_STREAMED_OBJECTZVT_STORED_OBJECTZVT_BLOB_OBJECTr�r�Z	VT_VECTORrrrrrrrrernrorvr|rr�r�r�rr�r�r+r+r+r,�<module>s�<
(

*





"


Youez - 2016 - github.com/yon3zu
LinuXploit