o
    j                     @   sT   d dl Z d dlZd dlZG dd dZG dd dZG dd dZG dd	 d	ZdS )
    Nc                   @   sn   e Zd ZdddZdd Zdd	 Zd
d Zdd Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )UniCredentialGenN,  Fc                 C   sB   || _ || _i | _i | _g | _|| _|| _| j d u rd| _ d S d S )N)max_attempts
sleep_time	usernames	passwordscredentialsusername_is_passworddomain)selfr   r   r   r
    r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/asysocks/unicomm/common/scanner/targetgen.py__init__   s   

zUniCredentialGen.__init__c                 C   s
   || _ d S N)r   )r   r   r   r   r   
set_domain      
zUniCredentialGen.set_domainc                 C   s    |d u rd}| j ||f d S )N )r	   append)r   usernamepasswordr   r   r   add_credential   s   zUniCredentialGen.add_credentialc                 C   s   | d\}}| || d S )N:)splitr   )r   tr   r   r   r   r   add_credential_tuple   s   z%UniCredentialGen.add_credential_tuplec                 C   L   t |d}|D ]}| }| | qW d    d S 1 sw   Y  d S Nr)openstripr   r   fnamefliner   r   r   add_credential_file       "z$UniCredentialGen.add_credential_filec                 C   r   r   )r   r    add_usernamer!   r   r   r   add_users_file&   r&   zUniCredentialGen.add_users_filec                 C   r   r   )r   r    add_passwordr!   r   r   r   add_passwords_file,   r&   z#UniCredentialGen.add_passwords_filec                 C   s   d| j |< d S )N   )r   )r   r   r   r   r   r'   2   s   zUniCredentialGen.add_usernamec                 C   s   |d u rd}d| j |< d S )Nr   r+   )r   )r   r   r   r   r   r)   5   s   zUniCredentialGen.add_passwordc                 C   s   t | jt | jt | j  S r   )lenr	   r   r   r   r   r   r   	get_total:   s   zUniCredentialGen.get_totalc                 C  sf   d}| j D ]*}tt }|| j||ffV  |d7 }| jdkr0|| jkr0t| jI d H  d}qd S )Nr   r+   r   )	r   struuiduuid4r   r   asynciosleepr   )r   r   current_attemptr   uidr   r   r   get_password_candidates=   s   


z(UniCredentialGen.get_password_candidatesc              	   C  s   | j du r| jD ]}tt }|| j||ffV  q	d S g }| jD ]
}|| | q"t|dkrZ|D ]}z
|	 I d H V  W q5 t
yO   || Y q5   Y q5t|dks3| jD ]\}}tt }|| j||ffV  q]d S )NTr   )r
   r   r/   r0   r1   r   r   r6   r,   	__anext__StopAsyncIterationremover	   )r   r   r5   taskstaskr   r   r   r   runK   s.   




zUniCredentialGen.run)NNr   F)__name__
__module____qualname__r   r   r   r   r%   r(   r*   r'   r)   r.   r6   r<   r   r   r   r   r      s    
r   c                   @   X   e Zd Zdd Zedd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd ZdS )UniTargetGenc                 C   s   g | _ g | _d S r   )targetsexcludesr-   r   r   r   r   h      
zUniTargetGen.__init__c                 C      t  }||  |S r   rA   add_listtl	targetgenr   r   r   	from_listl      
zUniTargetGen.from_listc              
   C   H   |D ]}z|  | W q   z| | W n	   | | Y Y qd S r   add_ipadd_fileadd_hostnamer   
targetlistr   r   r   r   rG   r      zUniTargetGen.add_listc              	   C      g }zt | tt }|| | j||f W |S    t j|ddD ]&}t|ds8t|dr9q(tt }|| | j|t|f q(Y |S NF)strictz.0z.255		ipaddress
ip_addressr/   r0   r1   r   rB   
ip_networkendswithr   ipuidsr5   r   r   r   r   rO   |       


zUniTargetGen.add_ipc              	   C   p   g }t |d'}|D ]}| }z	|| |7 }W q
   || |7 }Y q
W d    |S 1 s1w   Y  |S r   r   r    rO   rQ   r   r"   r_   r#   r$   r   r   r   rP         
zUniTargetGen.add_filec                 C   &   t t }| j|t |f |gS r   r/   r0   r1   rB   r   r   hosntamer5   r   r   r   rQ         zUniTargetGen.add_hostnamec                 C   
   t | jS r   r,   rB   r-   r   r   r   r.      r   zUniTargetGen.get_totalc                 C   s`   t | }| jD ]$}zt|}t||v rW  dS W n   Y |t | kr- dS q	dS )NFT)r/   lowerrC   rY   r[   rZ   )r   targetstargetexcludeipnr   r   r   check_excludes   s   

zUniTargetGen.check_excludesc                 C  s0   | j D ]\}}| |du rq||fV  qd S )NF)rB   rq   r   tidrm   r   r   r   r<      s   zUniTargetGen.runN)r=   r>   r?   r   staticmethodrK   rG   rO   rP   rQ   r.   rq   r<   r   r   r   r   rA   g   s    

rA   c                   @   r@   )UniTargetPortGenc                 C   s   g | _ i | _d S r   rB   portsr-   r   r   r   r      rD   zUniTargetPortGen.__init__c                 C   rE   r   rF   rH   r   r   r   rK      rL   zUniTargetPortGen.from_listc                    sJ    fdd}|D ]}| ddkr|dD ]}|| qq|| qd S )Nc                    sX   |  ddkr#| d\}}tt|t|D ]	}d  jt|< qd S d  jt| < d S )N-r   )findr   rangeintrw   )xstartendir-   r   r   
calc_range   s   z2UniTargetPortGen.add_port_list.<locals>.calc_range,r   )ry   r   )r   
portrangesr   prangeportr   r-   r   add_port_list   s   

zUniTargetPortGen.add_port_listc              
   C   rM   r   rN   rR   r   r   r   rG      rT   zUniTargetPortGen.add_listc              	   C   rU   rV   rX   r]   r   r   r   rO      r`   zUniTargetPortGen.add_ipc              	   C   ra   r   rb   rc   r   r   r   rP      rd   zUniTargetPortGen.add_filec                 C   re   r   rf   rg   r   r   r   rQ      ri   zUniTargetPortGen.add_hostnamec                 C   s   t | jt | j S r   )r,   rB   rw   r-   r   r   r   r.      s   zUniTargetPortGen.get_totalc                 C  s0   | j D ]\}}| jD ]	}|||ffV  qqd S r   rv   )r   rs   rm   r   r   r   r   r<      s   
zUniTargetPortGen.runN)r=   r>   r?   r   rt   rK   r   rG   rO   rP   rQ   r.   r<   r   r   r   r   ru      s    

ru   c                   @   s8   e Zd Zdd Zedd Zdd Zdd Zd	d
 ZdS )UniGenericGenc                 C   s
   g | _ d S r   rB   r-   r   r   r   r     r   zUniGenericGen.__init__c                 C   rE   r   )r   rG   rH   r   r   r   rK     rL   zUniGenericGen.from_listc                 C   s*   |D ]}t t }| j||f qd S r   rf   )r   rS   r   r5   r   r   r   rG     s   zUniGenericGen.add_listc                 C   rj   r   rk   r-   r   r   r   r.     r   zUniGenericGen.get_totalc                 C  s    | j D ]	\}}||fV  qd S r   r   rr   r   r   r   r<     s   zUniGenericGen.runN)	r=   r>   r?   r   rt   rK   rG   r.   r<   r   r   r   r   r     s    
r   )r2   rY   r0   r   rA   ru   r   r   r   r   r   <module>   s   `KO