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