HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //lib/python3/dist-packages/twisted/conch/scripts/__pycache__/tkconch.cpython-38.pyc
U

��W[�Z�@s�dZddlmZddlmZddlmZddlmZm	Z	m
Z
mZmZddlm
Z
mZmZddlmZddlmZmZmZmZdd	lmZmZdd
lmZddlZddlZddlZddlZddl Z ddl!Z!er�ddl"Z#ddl$m%Z&ddl'm(Z)nddl#Z#ddl&Z&ddl)Z)Gdd
�d
e#j*�Z+Gdd�dej,�Z-da.da/da0da1dd�Z2dd�Z3dd�Z4Gdd�dej5�Z6Gdd�dej7�Z7Gdd�de	j8�Z8Gdd�de
j9�Z9Gdd�dej:�Z;e<d k�r�e3�dS)!z2
Implementation module for the `tkconch` command.
�)�print_function)�error)�tkvt100)�	transport�userauth�
connection�common�keys)�session�
forwarding�channel)�isInKnownHosts)�reactor�defer�protocol�	tksupport)�usage�log)�_PY3Nc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TkConchMenucOs�tjj|f|�|�|j�d�t��|_|j�d�tj|dddd�j	dddd�t�
|�|_|jj	d	d	dd
d�tj|dddd�j	dd	dd�t�
|�|_|jj	d	d	d	d
d�tj|ddd
d�j	dddd�t�
|�|_
|j
j	d	d	dd
d�tj|dddd�j	dddd�t�
|�|_|jj	d	d	dd
d�tj|dddd�j	dddd�t�
|�|_|jj	d	dd
d�tj||jdd�j	ddd
d�tj|dd�j	dddd�tj|ddd�|_|jj	d	d	dd
d�tj|d|jd�j	ddd�tj|d|jd�j	ddd�t�
|�|_|jj	d	dd
d�tj|dd�j	ddd
d�t�
|�|_|jj	d	dd
d�tj|d d�j	ddd
d�tj|d!|jdd"�|_|jj	d	d#d�tj|d$|jd%d"�|_|jj	dd#d�tj|d&d�j	ddd'd
d�tj|ddd(d�j	dd)dd�tj
|d*d+�|_|jj	d	d	d)d
d�tj|ddd,d�j	dd-dd�tj
|d.d+�|_|jj	d	d	d-d
d�tj|ddd/d�j	dd0dd�tj
|d1d+�|_|jj	d	d	d0d
d�tj|d2|jd�j	ddd3d
d�|jddd4d5�|j d	dd	d5�|j�!d6t"j#�dS)7N�TkConch�local�w�leftZHostname)ZanchorZjustify�text�)�column�row�sticky�Znesw)rZ
columnspanrrZPortZUsername�ZCommand�ZIdentity�ZBrowse)�commandrzPort Forwarding)r�r)�height�widthZAdd)rr#�)rrZRemove�ZHostZLocal)rZvariable�value�	ZRemoteZremotezAdvanced Options�
ZCipher��cipher)�nameZMAC��maczEscape Char�
�escapezConnect!��@)ZweightZminsizeZWM_DELETE_WINDOW)$�Tkinter�Frame�__init__�master�titleZ	StringVar�localRemoteVar�setZLabelZgridZEntry�host�port�userr#�identityZButton�getIdentityFileZListbox�forwards�
addForward�
removeForward�forwardPort�forwardHostZRadiobuttonZlocalForwardZ
remoteForwardr-r0r2�	doConnectZgrid_rowconfigureZgrid_columnconfigurer�sys�exit)�self�argsZparams�rK�?/usr/lib/python3/dist-packages/twisted/conch/scripts/tkconch.pyr7sb
 zTkConchMenu.__init__cCs0t��}|r,|j�dtj�|j�tj|�dS�Nr)�tkFileDialogZaskopenfilenamer?�deleter5�END�insert)rI�rrKrKrLr@aszTkConchMenu.getIdentityFilecCsx|j��}|j�dtj�|j��}|j�dtj�|j��dkr\|j�tjd||f�n|j�tjd||f�dS)NrrzL:%s:%szR:%s:%s)	rD�getrOr5rPrEr:rArQ)rIr=r<rKrKrLrBgs

zTkConchMenu.addForwardcCs"|j��}|r|j�|d�dSrM)rAZcurselection�remove)rIZcurrKrKrLrCqs
zTkConchMenu.removeForwardc	Cs�d}|j��td<|j��td<|j��td<|j��td<|j��}|j��}|j��}|r�|t	j
krr|gt	_
nt�dd�d}|r�|t	j
kr�|gt	_
n|r�t�dd	�d}|�r*|d
kr�dtd<nd|ddkr�t|�d
kr�tt|d�d�td<n2t|�dk�r|td<n|�r*t�dd|�d}|j���rHtj�|j���|j�dtj�D]:}|ddk�r~t�|d
d��nt�|d
d���qXdtdk�r�td�dd�\td<td<td�r�td�s�|�r�t�dd�d}|�r�|j��|j��td�r&tj}t� tj!�|t_nt�"�t#t_$tj�sFddgt_td}t%td�p\d�}t�&||f�t'�(||t)��t*j�+�t*j�,dtdtdf�n|�-�dS)Nrr<r=r>r#rzBad cipher.rzBad MAC.Znoner2�^rr4zBad escape character '%s'.�L�@zMissing host or username.rz
~/.ssh/id_rsaz
~/.ssh/id_dsa�z%s@%s - TkConch).r<rS�optionsr=r>r#r-r0r2�SSHClientTransport�supportedCiphers�tkMessageBoxZ	showerror�
supportedMACs�len�chr�ordr?�	identitys�appendrAr5rP�opt_localforward�opt_remoteforward�splitr8�quitZdestroyrG�stdoutrZstartLogging�stderrZdiscardLogs�handleError�deferr�int�msgrZ
connectTCP�SSHClientFactory�frameZ	deiconifyr9Zfocus)	rIZfinishedr-r0r2�lineZrealoutr<r=rKrKrLrFvst













zTkConchMenu.doConnectN)�__name__�
__module__�__qualname__r7r@rBrCrFrKrKrKrLrs
C
rc@s@eZdZdZddddgdddd	gd
ddd
gddddgddddgddddgddddgddddggZdddgd d!d"gd#d$d%gd&d'd(gd)d*d+gd,d-d.gd/d0d1gd2d3d4ggZejjZ	ejj
Zej
d5ge�e	�e�e�ejd6d7�ejd6d7�d8�e��ejd9d7�ejd:d;d<�gd=�ZgZgZgZd>d?�Zd@dA�ZdBdC�ZdDdE�ZdFdG�ZdS)H�GeneralOptionsz,Usage:    tkconch [options] host [command]
 r>�lNzLog in using this user name.r?�iz~/.ssh/identityz&Identity for public key authenticationr2�e�~z(Set escape character; ``none'' = disabler-�czSelect encryption algorithm.�macs�mz.Specify MAC algorithms for protocol version 2.r=�pz7Connect to this port.  Server must be on the same port.�localforwardrVz<listen-port:host:port   Forward local port to remote address�
remoteforward�Rz<listen-port:host:port   Forward remote port to local address�tty�tz-Tty; allocate a tty even if command is given.�notty�TzDo not allocate a tty.�version�VzDisplay version number only.�compress�CzEnable compression.�noshell�Nz"Do not execute a shell or command.�	subsystem�sz-Invoke command (mandatory) as SSH2 subsystem.r�vz
Log to stderr�ansilog�az!Print the received data to stdout)rr�zlisten-port:host:port)�descr)r-ryr|r}r#ZargumentT)r��repeat)ZmutuallyExclusiveZ
optActionsZextraActionscCs|j�|�dS�N)rarb)rIrurKrKrL�opt_identity�szGeneralOptions.opt_identitycCs8|�d�\}}}t|�}t|�}|j�|||ff�dS�N�:)rerk�
localForwardsrb)rI�f�	localPortZ
remoteHost�
remotePortrKrKrLrc�szGeneralOptions.opt_localforwardcCs8|�d�\}}}t|�}t|�}|j�|||ff�dSr�)rerk�remoteForwardsrb)rIr�r�ZconnHostZconnPortrKrKrLrd�sz GeneralOptions.opt_remoteforwardcCsdgtjdd�<dS)N�zlibrr)rZZsupportedCompressions�rIrKrKrL�opt_compress�szGeneralOptions.opt_compresscGs<|r(|d|d<d�|dd��|d<nd|d<d|d<dS)Nrr<� rr#�)�join)rIrJrKrKrL�	parseArgs�s
zGeneralOptions.parseArgs)rprqrrZsynopsisZ
optParametersZoptFlagsrrZr[Z_ciphersr]Z_macsrZCompletionsZCompleteListZ	CompleterZCompleteUserAtHostZcompDatarar�r�r�rcrdr�r�rKrKrKrLrs�sR







�
�	

�
��rscsJtjrtd��t���g}|f��fdd�	}|t_t�|�tj���S)Nzcan't ask 2 questions at once!cs�|sdS|dkrt��|dkrJt�d�d�|�}~dt_��|�dSdt|�krbdkr�nn|�|��r�t�|�n&t|�dkr�|r��r�t�d�|��dS)	N��
z
r�� �r(z )	r�stoprn�writer��callbackr`rb�pop)Zch�respZstresp��d�echorKrL�gotChars&




z!deferredAskFrame.<locals>.gotChar)rnr��
ValueErrorrZDeferredr��canvas�focus_force)Zquestionr�r�r�rKr�rL�deferredAskFrames

r�c
Cs�tjdd�}d|krF|�d�}|||d�|}||d|d�=|dd�D]\}zB|�|�}|dd�dkr�||dddkr�g|||d�<WqRtk
r�YqRXqRt��}|��t��}t|�a	t	j
tjtjdd�t
�azt�|�WnDtjk
�r<}z"td	|�t��t�d�W5d}~XYnXt��D]0\}}|�rFtt	|��rFtt	|��tj|��qFtjD](\}\}	}
t	j�tjd
||	|
f��q~gt_tjD](\}\}	}
t	j�tjd||	|
f��q�gt_tj|dd�a|� d
tj!tj"dtj#tj$df�tj
tjd�t%�&|�|��td�rPtd�s^dtdk�rht	�'�n|�(�t)�*�t�t+�dS)Nrz-lrr!z-or�-)�sideZfill�expandz	ERROR: %sz
L:%s:%s:%sz
R:%s:%s:%s)r�z%dx%dr )r�r<r>rW),rG�argv�indexr�r5ZTkZwithdrawZToplevelr�menuZpackZTOPZBOTHrsrYZparseOptionsrZ
UsageError�printZopt_helprH�items�hasattr�getattrrQrPr�rAr�rZ
VT100FramernZgeometryZ	fontWidthr&Z
fontHeightr%r�installrFZmainloopr�run�
exitStatus)rJru�arg�root�top�u�kr�r{ZrhZrprKrKrLr�"sV

$*
"
r�cCs,ddlm}dat�|���t���dS)Nr��failurer)�twisted.pythonr�r�r�errZFailurerr�r�rKrKrLriQs
ric@s(eZdZdZdd�Zdd�Zdd�ZdS)	rmrcCst��dSr�)rr�r�rKrKrL�stopFactory\szSSHClientFactory.stopFactorycCst�Sr�)rZ)rIZaddrrKrKrL�
buildProtocol_szSSHClientFactory.buildProtocolcCst�dd|j|jf�dS)Nrz"Connection Failed, Reason:
 %s: %s)r\�showwarning�typer))rIZ	connector�reasonrKrKrL�clientConnectionFailedbsz'SSHClientFactory.clientConnectionFailedN)rprqrrZnoisyr�r�r�rKrKrKrLrmYsrmc@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)rZcCsd||fadS)NzDconch:	Remote side disconnected with error code %i
conch:	reason: %s)r�)rI�codeZdescrKrKrL�receiveErrorgszSSHClientTransport.receiveErrorcCs d||fatj�|||�dS)Nz>conch:	Sending disconnect with error code %i
conch:	reason: %s)r�rrZ�sendDisconnect)rIr�r�rKrKrLr�ksz!SSHClientTransport.sendDisconnectcCs|stdrt�d|�dS)NrzReceived Debug Message: %s)rYrrl)rIZ
alwaysDisplay�messageZlangrKrKrL�receiveDebugpszSSHClientTransport.receiveDebugcCs�ttd|ddi�}|dkr&t�d�S|dkr>t�t�d��Std|j��j	krdtd}td}n0dtd|j��j	f}dtd|j��j	f}t
�|�d}d	|d
dd�||f}|d
7}t|d��
|j|||�SdS)Nr<zknown-hostsrr�bad host keyz%s (%s)z%s,%srzNThe authenticity of host '%s' can't be established.
%s key fingerprint is %s.�DSA�RSA�sssh-dsssssh-rsaz9
Are you sure you want to continue connecting (yes/no)? )r
rYr�succeedZfailr�
ConchErrorrZgetPeerr<rZgetNSr��addCallback�_cbVerifyHostKey)rI�pubKeyZfingerprintZgoodKeyr<�khHost�keyTypeZquesrKrKrL�
verifyHostKeyus.


�
���z SSHClientTransport.verifyHostKeyc	Cs�|��dkr$tdd��|j|||�S|��dkrDt�d�t�d��zdt�d|dd	d
�|f�tt	j
�d�d��,}t�
|��d
d�}|�d|||f�W5QRXWnt��tj�YnXdS)N)Zyes�nozPlease type  'yes' or 'no': rr�zHost key verification failed.
r�zBWarning: Permanently added '%s' (%s) to the list of known hosts.
r�r�r�z~/.ssh/known_hostsr��
�z	
%s %s %s)�lowerr�r�r�rnr�rr��open�os�path�
expanduser�base64Zencodestring�replacerrj)rI�ansr�r�r�Zknown_hostsZ
encodedKeyrKrKrLr��s"

��"z#SSHClientTransport._cbVerifyHostKeycCs0tdrtd}nt��}|�t|t���dS)Nr>)rY�getpassZgetuserZrequestService�SSHUserAuthClient�
SSHConnection)rIr>rKrKrL�connectionSecure�s
z#SSHClientTransport.connectionSecureN)	rprqrrr�r�r�r�r�r�rKrKrKrLrZesrZc@s2eZdZgZd
dd�Zdd�Zdd�Zdd	�ZdS)r�NcCs |sd|jtdf}t|d�S)Nz%s@%s's password: r<r)r>rYr�)rI�promptrKrKrL�getPassword�szSSHUserAuthClient.getPasswordcs��fdd�tjD�}|sdS|d}t�|��j�|�tj�|�}|d7}tj�	|�s^dSzt
j�|��
�WS���YSXdS)Ncsg|]}|�jkr|�qSrK)�	usedFiles)�.0�xr�rKrL�
<listcomp>�s
z2SSHUserAuthClient.getPublicKey.<locals>.<listcomp>rz.pub)rYrarrlr�rbr�r�r��existsr	�Key�fromFileZblob�getPublicKey)rI�files�filerKr�rLr��s
zSSHUserAuthClient.getPublicKeyc
Cs�tj�|jd�}tj�|�s"dSzt�tj�	|�j
�WStjk
r�}z<|jddkr�d|jd}t
|d��|jd�WY�SW5d}~XYnXdS)N���rzencrypted key with no password�Enter passphrase for key '%s': )r�r�r�r�r�rr�r	r�r��	keyObject�BadKeyErrorrJr�r��_cbGetPrivateKey)rIr�rvr�rKrKrL�
getPrivateKey�s�zSSHUserAuthClient.getPrivateKeycCsrtj�|jd�}ztjj||d�jWStjk
rl|dkrB�d|jd}t	|d��
|j|d�YSXdS)Nr�)Zpasswordrr�rr)r�r�r�r�r	r�r�r�r�r�r�r�)rIr��countr�r�rKrKrLr��s�z"SSHUserAuthClient._cbGetPrivateKey)N)rprqrrr�r�r�r�r�rKrKrKrLr��s

r�c@seZdZdd�ZdS)r�c	Cs�tds|�t��tjrBtjD] \}}t�|t�||tj��q tj	r�tj	D]>\}}t
�d||f�t�d|f�}|�
d|�||j	|<qNdS)Nr�z&asking for remote forwarding for %s:%sz0.0.0.0z
tcpip-forward)rYZopenChannel�
SSHSessionr�rZ	listenTCPrZSSHListenForwardingFactoryZ SSHListenClientForwardingChannelr�rrlZpackGlobal_tcpip_forwardZsendGlobalRequest)rIr�Zhostportr��datarKrKrL�serviceStarted�s(����zSSHConnection.serviceStartedN)rprqrrrrKrKrKrLr��sr�c@sPeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�ZdS)rssessioncCsd|_t��}tdr |j|_n|j|_|j|_|jt	_
t	j��tdrf|j
�|dt�td��n�tdr�tdr�tj�dd�}d	}t�||d
�}|j
�|d|�|j
�|dt�td��nHtd
s�tj�dd�}d	}t�||d
�}|j
�|d|�|j
�|dd�|j
jj�d�dS)Nrr2r�s	subsystemr#rZTERMZxterm)��Prrr�spty-req�execr�sshellr�)�
escapeModer
ZSSHSessionClientrY�handleInput�dataReceivedr��sendEOFZconnectionLostrnr�r�r��connZsendRequestrZNSr��environrSZpackRequest_pty_reqrZ
setTcpNoDelay)rIZfoorxZtermZwinSizeZ
ptyReqDatarKrKrL�channelOpen�s8


�
�zSSHSession.channelOpencCs�|dkrd|_|�|�n�|jdkr8|tdkr8d|_n�|jdkr�d|_|dkrft�d�t��dS|dkr�t�t�	�t
j�dS|dkr�t�d	�|jj
��dS|�d
|�nd|_|�|�dS)N)�
r�rr2r�.zdisconnecting from escape�r~zrekeying connectionrwr)rr�rYrrlrr�r��kill�getpid�signal�SIGSTOPr
rZsendKexInit)rI�charrKrKrLrs*


zSSHSession.handleInputcCs:trt|t�r|�d�}tdr,tt|��t�|�dS)Nzutf-8r�)	r�
isinstance�bytes�decoderYr��reprrnr��rIrrKrKrLr+s

zSSHSession.dataReceivedcCs6|tjkr2t�dt|��tj�|�tj��dS)Nzgot %s stderr data)	rZEXTENDED_DATA_STDERRrrlr^rGrhr��flush)rIr�rrKrKrL�extReceived2s
zSSHSession.extReceivedcCst�d�tj��dS)Nzgot eof)rrlrG�stdin�closer�rKrKrL�eofReceived8s
zSSHSession.eofReceivedcCs*t�d|�t|jj�dkr&t��dS)Nz	closed %sr)rrlr^r
Zchannelsrr�r�rKrKrL�closed<szSSHSession.closedcCs&tt�d|�d�at�dt�dS)Nz>Lrzexit status: %s)rk�structZunpackr�rrlrrKrKrL�request_exit_statusAszSSHSession.request_exit_statuscCs|j�|�dSr�)r
r	r�rKrKrLr	FszSSHSession.sendEOFN)rprqrrr.rrrrrrr!r	rKrKrKrLr�s#r�__main__)=�__doc__Z
__future__rZ
twisted.conchrZtwisted.conch.uirZtwisted.conch.sshrrrrr	r
rrZtwisted.conch.client.defaultr
Ztwisted.internetrrrrr�rrZtwisted.python.compatrr�rGr�r r�rZtkinterr5Ztkinter.filedialogZ
filedialogrNZtkinter.messageboxZ
messageboxr\r6rZOptionsrsrYr�r�rnr�r�riZ
ClientFactoryrmrZr�r�Z
SSHChannelrrprKrKrKrL�<module>s@0 E/D._