o
    j#                     @   s   d dl Z d dlZd dlZzd dlmZ W n ey#   d dlmZ Y nw d dlmZ d dlm	Z	 G dd dZ
G dd de	ZdS )	    N)urlparse)LOG)Threadc                   @   sH   e Zd ZdddZedd Zdd Zdd	d
ZdddZdddZ	dS )TargetsProcessorNFc                 C   sh   g | _ g | _|| _|d u rd | _| ||| _n
|| _g | _|   |du r,t| j | j	dd d S )NT)full_reload)
finishedAttacksfailedAttacksprotocolClientsfilenameprocessTargetoriginalTargetsreadTargetsrandomshufflereloadTargets)selftargetListFilesingleTargetr	   	randomize r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/impacket/examples/ntlmrelayx/utils/targetsutils.py__init__/   s   zTargetsProcessor.__init__c                 C   sn   |  ddkrtd|  gS g }| d d  dkr2| dd  }|D ]}|td||f  q"|S t| gS )Nz://r   zsmb://%s   ALLz%s%s)findr   upperappend)targetr	   retValsstrippedTargetprotocolr   r   r   r   D   s   
zTargetsProcessor.processTargetc              
   C   s   z9t | jd)}g | _|D ]}| }|dkr(|d dkr(| j| || j qW d    n1 s3w   Y  W n tyU } zt	d| jt
| W Y d }~nd }~ww t| jdkrbtd |   d S )Nr r   #zCould not open file: %s - %sz$Warning: no valid targets specified!)openr
   r   stripextendr   r	   IOErrorr   errorstrlencriticalr   )r   fliner   er   r   r   r   U   s$    
zTargetsProcessor.readTargetsc                    s@   |rg  _ g  _ fdd jD  _ fdd jD  _d S )Nc                    s.   g | ]}| j vr| jvr|jd u r|qS Nr   r   username.0xr   r   r   
<listcomp>j      . z2TargetsProcessor.reloadTargets.<locals>.<listcomp>c                    s.   g | ]}| j vr| jvr|jd ur|qS r/   r0   r2   r5   r   r   r6   k   r7   )r   r   r   generalCandidatesnamedCandidates)r   r   r   r5   r   r   f   s
   zTargetsProcessor.reloadTargetsc                 C   s   |j d ur|r| j| d S | j| d S |d ur]|jddkr:|jr:td|j|dd|j	|j
|jf }ntd|j|dd|j	|j
f }|rU| j| d S | j| d S d S )Nhttpr   z%s://%s@%s%s?%s/\z%s://%s@%s%s)r1   r   r   r   schemer   queryr   replacenetlocpath)r   r   gotRelaygotUsername	newTargetr   r   r   registerTargetm   s   
("zTargetsProcessor.registerTargetTc                    s@  |d urIt | jdkrI| jD ]:jd urHj |ddkr*| j   S jddk rHj |dd krH| j   S qt | jdkr|d ur| jD ]Adj	|ddj
j f fdd| jD }fdd| jD }t| j t |dkrt |dkr| j   S qWtd	|  d S |d
kr| jD ]fdd| jD }t |dkr| j   S qtd d S | j S t | jdkrdd | jD dd | jD   fdd| jD | _t | jdkrt | jdkrtd d S |d urtd	|  d S | ||S )Nr   r;   r<      z
%s://%s@%sc                    $   g | ]}|     kr|qS r   geturlr   r2   	tmpTargetr   r   r6         $ z.TargetsProcessor.getTarget.<locals>.<listcomp>c                    rG   r   rH   r2   rJ   r   r   r6      rL   zNo more targets for user %sFc                    s(   g | ]}|j  jkr|j jkr|qS r   )hostnamer@   r=   r2   )r   r   r   r6      s   ( zNo more targetsc                 S      g | ]	}|j |jd qS )r@   _replacerM   r3   an_atkr   r   r   r6          c                 S   rN   rO   rP   rR   r   r   r   r6      rT   c                    s*   g | ]}|vr| vr|j d u r|qS r/   )r1   r2   )r   r   r   r   r6      s    zAll targets processed!)r*   r9   r1   r   r?   remover   splitr8   r=   r@   rA   r   r   printr   debugpopr   info	getTarget)r   identity
multiRelaymatch
fail_matchr   )r   r   r   rK   r   r[      s\   


 





zTargetsProcessor.getTarget)NNNF)F)FN)NT)
__name__
__module____qualname__r   staticmethodr   r   r   rE   r[   r   r   r   r   r   .   s    



r   c                   @   s   e Zd Zdd Zdd ZdS )TargetsFileWatcherc                 C   s&   t |  || _t| jjj| _d S r/   )r   r   targetprocessorosstatr
   st_mtime	lastmtime)r   re   r   r   r   r      s   
zTargetsFileWatcher.__init__c                 C   sB   	 t | jjj}|| jkrtd || _| j  t	
d q)NTz"Targets file modified - refreshingg      ?)rf   rg   re   r
   rh   ri   r   rZ   r   timesleep)r   mtimer   r   r   run   s   



zTargetsFileWatcher.runN)r`   ra   rb   r   rm   r   r   r   r   rd      s    rd   )rf   r   rj   urllib.parser   ImportErrorimpacketr   	threadingr   r   rd   r   r   r   r   <module>   s   " 