
    5i"                     2   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZ d dlmZ d dlmZ d d	l
mZmZmZmZmZmZmZmZmZmZ d d
lmZ  G d d          Z G d d          Z  G d d          Z!d Z"e#dk    r e"             dS dS )    N)logger)
__banner__)HTTPProxyAuthFailed)SOCKS5AuthFailed)SOCKSClientSocksTunnelError)SocksCredential)SocksQueueComms)
SOCKS5Method
SOCKS5NegoSOCKS5NegoReplySOCKS5RequestSOCKS5ReplySOCKS5ReplyTypeSOCKS5CommandSOCKS5PlainAuthSOCKS5PlainAuthReplySOCKS5ServerErrorReply)SocksClientURLc                       e Zd ZdZd Zd ZdS )FileStringGenz
	Parses a file line by line
	c                     || _         d S N)filename)selfr   s     R/home/kali/Ninja/venv/lib/python3.11/site-packages/asysocks/examples/socksbrute.py__init__zFileStringGen.__init__   s    $---    c                 Z  K   	 d}t          | j        d          5 }|D ]W}|                                }|dk    r|                    |           d {V  t	          j        d           d {V  |dz  }X	 d d d            n# 1 swxY w Y   |d fS # t          $ r}||fcY d }~S d }~ww xY w)Nr   r    )openr   stripputasynciosleep	Exception)r   target_qcntflinees         r   runzFileStringGen.run   s0     	
3T]C   A  JJLLT

<<=AXSS               t)	   
q&======sA   B AB7B BB 
BB 
B*B%B*%B*N)__name__
__module____qualname____doc__r   r.    r   r   r   r      s<               r   r   c                       e Zd Zd Zd ZdS )ListStringGenc                     || _         d S r   )targets)r   r7   s     r   r   zListStringGen.__init__+   s    $,,,r   c                    K   	 d}| j         D ]<}|                    |           d {V  t          j        d           d {V  |dz  }=|d fS # t          $ r}||fcY d }~S d }~ww xY w)Nr   r"   )r7   r%   r&   r'   r(   )r   r)   r*   targetr-   s        r   r.   zListStringGen.run.   s      		
3  v
,,v


-

1HCC
t)	   
q&======s   A	A 
A&A!A&!A&N)r/   r0   r1   r   r.   r3   r   r   r5   r5   *   s2          
 
 
 
 
r   r5   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )
SOCKSBrutec                    || _         g | _        g | _        i | _        d| _        d| _        d| _        d| _        d| _        d| _	        d | _
        d| _        g | _        d | _        d | _        d | _        d| _        d| _        d| _        d S )Nd   r"      z8.8.8.85   Fr   )proxies	user_genspassword_gens	passwords
worker_cnttimeoutmax_retriesretries_sleepverify_targetverify_portoutput_fileonly_positive_SOCKSBrute__worker_tasks_SOCKSBrute__addr_queue_SOCKSBrute__target_queue_SOCKSBrute__result_queue_SOCKSBrute__total_addrs_SOCKSBrute__total_targets_SOCKSBrute__total_finished)r   r@   s     r   r   zSOCKSBrute.__init__<   s    $,$.$$.$/$,$$ $$$$$$$$$$$r   c                   K   	 	 	 | j                                          d {V }|d S |\  }}}| j        }|dk    r=|| j        k    rt          j        | j                   d {V  |dz  }|                                 d {V \  }}|t          |t          t          f          r%| j
                            ||dd f           d {V  nt          |t                    r/t          j        dt          j        |j                  z             nCt          |t$                    r.t          j        dt          j        |j                  z             | j
                            ||dd f           d {V  	 |dk    r$| j
                            ||d |f           d {V  n(# t          j        $ r Y d S t(          $ r
}Y d }~nd }~ww xY w# t          j        $ r Y d S t(          $ r}t+          |           Y d }~d S d }~ww xY w)NTr   r"   FzTunnel setup failed!. Reason %sz5Failed socket connection to initial proxy!. Reason %s)rN   getrF   r&   r'   rG   handle_queue
isinstancer   r   rO   r%   r   r   debug	traceback	format_tb__traceback__OSErrorCancelledErrorr(   print)	r   tempusernamepasswordclientretries_errr-   s	            r   	__scannerzSOCKSBrute.__scannerQ   s     *#
"
%))++++++++Tf"&XxWa<<	D$	$	$]4-.........lg((********fa	
S.0@A
B
B w!%%x5$&GHHHHHHHHHs,-- w69LSM^9_9__````sG$$ wLyObcfctOuOuuvvv##Xxt$DEEEEEEEEE1##Xxs$CDDDDDDDDD!   VV 
 
 
	TTTT
E#
J 
	 
 
 
	66	   888888888sR   G !F% E;F% $G %G
4G 7	G
 G G

G H!	H*G??Hc                 :  K   	 	 | j                                          d {V }|nd| j        |<   -	 | j                                         d {V }|n| j        D ]}| xj        dz  c_        t                      }||_        ||_        t          j	        | j
                  }d|d         _        d|d         _        | j        |d         _        | j        |d         _        ||d         _        t%          j                    }t%          j                    }t)          ||          }t+          ||          }| j                            |||f           d {V  (| j                                         d S # t4          $ r}	t7          |	           Y d }	~	d S d }	~	ww xY w)NTr"   )_SOCKSBrute__passwords_queuerT   rC   _SOCKSBrute__users_queuerQ   r	   r_   r`   copydeepcopyr@   	only_open	only_authrH   endpoint_iprI   endpoint_port
credentialr&   Queuer
   r   rN   r%   $_SOCKSBrute__target_gen_finished_evtsetr(   r]   )
r   r`   userrp   r@   in_qout_qcommsra   r-   s
             r   __gen_targetszSOCKSBrute.__gen_targets~   s     $!+//11111111H
 DN8	!=#''))))))))D|
N = =	Q!##ZZ#Z}T\**W!WR[!WR[#1WR[!%!1WR[(WR[ MOOT]__UT5))U%))V""D(F#;<<<<<<<<<<1=4 !%%'''''	   888888888s   E0E6 6
F FFc                 6  K   	 | j         D ]F}|                    | j                   d {V \  }}|t          |           | xj        |z  c_        G| j                            d            d {V  d S # t          $ r}t          |           Y d }~d S d }~ww xY wr   )rA   r.   ri   r]   rP   r%   r(   )r   user_genr*   rd   r-   s        r   __gen_userszSOCKSBrute.__gen_users   s      
>  x\\$"455555555HC

3ZZZ#					%	%%%%%%%%%%	   888888888   A.A4 4
B>BBc                 6  K   	 | j         D ]F}|                    | j                   d {V \  }}|t          |           | xj        |z  c_        G| j                            d            d {V  d S # t          $ r}t          |           Y d }~d S d }~ww xY wr   )rB   r.   rh   r]   rP   r%   r(   )r   password_genr*   rd   r-   s        r   __gen_passwordszSOCKSBrute.__gen_passwords   s      
)  |!%%d&<========HC

3ZZZ#			#	#D	)	))))))))))	   888888888r|   c                   K   	 t          j                    | _        t          j                    | _        t          j        | j                  | _        t          j                    | _        t          j                    | _        t          j	        | 
                                           t          j	        |                                            t          j	        |                                            t          | j                  D ]@}| j                            t          j	        |                                                      Ad }| j        t%          | j        dd          }	 | j                                         d {V \  }}}}| xj        dz  c_        |5t+          |           t+          t-          j        |j                             |[||                    |d|d           n]|du rt+          |d|d|           nA| j        d	u rt+          |d|d|           n | j        d	u rt+          |d|d|           | j                                        du r| j        | j        k    rnt          t;          | j                            D ]"}| j                            d            d {V  #| j        D ]}|                                 d
S # t@          $ r}d	|fcY d }~S d }~ww xY w)Nwr!   )newlineTr"   :z
z -> F)TN)!r&   rq   rh   ri   rD   rN   rO   Eventrr   create_task_SOCKSBrute__gen_passwords_SOCKSBrute__gen_users_SOCKSBrute__gen_targetsrangerL   append_SOCKSBrute__scannerrJ   r#   rT   rR   r]   rX   rY   rZ   writerK   is_setrQ   lenr%   cancelr(   )	r   rc   outfiler_   r`   statusrd   workerr-   s	            r   r.   zSOCKSBrute.run   s#     1#MOO44 t774 4$+MOO4!
t++--...
t''))***
t))++,,,$/"" F Fqw24>>3C3CDDEEEE7
"4#SB777G,0,?,C,C,E,E&E&E&E&E&E&E#HhQ 
3ZZZ
9s011222
{mm888XXX67777
D..XXXxxx89999


%
%XXXxxx8999e##XXXxxx8999 %,,..$66!555/2 #d)**++ ( (q


!
!$
'
'''''''''$  v
MMOOOO
*	   
(??????s   KK$ $
K<.K71K<7K<N)	r/   r0   r1   r   r   r   r   r   r.   r3   r   r   r;   r;   ;   sp          *+ + +Z% % %N    2 2 2 2 2r   r;   c                  (   dd l } |                     d          }|                    dddd           |                    d	d
dd           |                    ddt          d d           |                    ddt          dd           |                    ddddd           |                    dddd           |                    ddd            |                    d!dd"           |                    d#d$d%&           |                                }|j        d'u rt          t                     t          j	        d(           |j
        dk    rt          j	        t          j                   n|j
        d)k    rt          j	        d           t          j        |j                  }t!          |          }|j        |_        |j        |_        |j        |_        |j        |_        |j        |j        t          d*           d S g }|j        D ]j}	 t5          |d+          }|                                 |j                            t=          |                     O#  |                    |           Y hxY wt?          |          dk    r'|j                            tA          |                     t?          |j                  dk    rt          d,           d S g }|j        D ]j}	 t5          |d+          }|                                 |j!                            t=          |                     O#  |                    |           Y hxY wt?          |          dk    r'|j!                            tA          |                     t?          |j!                  dk    rt          d-           d S tE          j#        |#                                          \  }}	|	t          d.|	z             d S |j        d'u rt          d/           d S d S )0Nr   zSOCKS5 proxy auth bruteforcer)descriptionz-uz--usersr   z9User or users file with one user per line. can be stacked)actionhelpz-pz--passwordszDPassword or password file with one password per line. can be stackedz-tz	--timeoutzBrute retries sleep time)typedefaultr   z-wz--worker-countr"   Parallelismz-vz	--verbosecount	Verbosity)r   r   r   z-sz--silent
store_truezdont print bannerz-oz
--out-filezoutput file)r   z
--positivezonly show sucsessful resultsr@   *zconnection string(s) of the target proxy. if you want a chain of proxies to use before reaching the target then supply the chain in order, the target must be the LAST OF THE URLS!!!)nargsr   Fr=      z2Users "-u" and Passwords "-p" must be set! Exitingr    z![-] No suitable users were found!z%[-] No suitable passwords were found!z%Failed to perform bruting! Reason: %szDone!)$argparseArgumentParseradd_argumentint
parse_argssilentr]   r   r   setLevelverboseloggingDEBUGr   	from_urlsr@   r;   rE   worker_countrD   out_filerJ   positiverK   usersrC   r#   closerA   r   r   r   r5   rB   r&   r.   )
r   parserargs
proxychainbrutenotfiler9   r+   rc   rd   s
             r   mainr      s2   

!
!.M
!
N
NT9X<wxxxT=  AG  H  H  HT;sdIcdddT+C1=YYYT;wTTTT:lCVWWWT<>>>\,?]^^^Yc  1h  i  i  i 	K5
L1/'-     lQ/!&t|44	J		%]}J$.0<===&z  VFC177999?-//0000
>>&LL1/w//000A+,,,&~  VFC177999mF334444
>>&LL1]733444!!/000&
+eiikk
"
"CO/#5666&K5..... s   AI##I<.AL::M__main__)$r&   r   rX   rj   asysocksr   asysocks._versionr   asysocks.protocol.httpr   asysocks.protocol.socks5r   asysocks.clientr   r   asysocks.common.credentialsr	   asysocks.common.commsr
   r   r   r   r   r   r   r   r   r   r   asysocks.common.clienturlr   r   r5   r;   r   r/   r3   r   r   <module>r      s
                ( ( ( ( ( ( 6 6 6 6 6 6 5 5 5 5 5 5 9 9 9 9 9 9 9 9 7 7 7 7 7 7 1 1 1 1 1 1 J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J  J 4 4 4 4 4 4       0       "v v v v v v v vpN N N` z r   