ó
    Ö›‘hÙ\  ã                   ó@  • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	J
r  SSKJr  SSKJrJr  SSKJr  SSKJr  SSKJrJrJrJrJrJrJrJr  SSKJ r   SSK!J"r"J#r#J$r$J%r%  SS	K&J'r'J(r(   " S
 S\RR                  5      r* " S S\(RV                  5      r,Sq-Sq.Sq/Sq0S r1S r2S r3 " S S\#Rh                  5      r5 " S S\Rl                  5      r6 " S S\Rn                  5      r7 " S S\Rp                  5      r8 " S S\Rr                  5      r:\;S:X  a  \2" 5         gg)z2
Implementation module for the `tkconch` command.
é    N)ÚListÚTuple)Úerror)ÚisInKnownHosts)ÚchannelÚcommonÚ
connectionÚ
forwardingÚkeysÚsessionÚ	transportÚuserauth)Útkvt100)ÚdeferÚprotocolÚreactorÚ	tksupport)ÚlogÚusagec                   ó2   • \ rS rSrS rS rS rS rS rSr	g)	ÚTkConchMenué&   c                 ó(  • [         R                  R                  " U /UQ70 UD6  U R                  R	                  S5        [         R
                  " 5       U l        U R                  R                  S5        [         R                  " U SSSS9R                  SSSS9  [         R                  " U 5      U l        U R                  R                  S	S	SS
S9  [         R                  " U SSSS9R                  SS	SS9  [         R                  " U 5      U l        U R                  R                  S	S	S	S
S9  [         R                  " U SSSS9R                  SSSS9  [         R                  " U 5      U l        U R                  R                  S	S	SS
S9  [         R                  " U SSSS9R                  SSSS9  [         R                  " U 5      U l        U R                  R                  S	S	SS
S9  [         R                  " U SSSS9R                  SSSS9  [         R                  " U 5      U l        U R                  R                  S	SS
S9  [         R                   " X R"                  SS9R                  SSS
S9  [         R                  " U SS9R                  SSSS9  [         R$                  " U SSS9U l        U R&                  R                  S	S	SS
S9  [         R                   " U SU R(                  S9R                  SSS9  [         R                   " U SU R*                  S9R                  SSS9  [         R                  " U 5      U l        U R,                  R                  S	SS
S9  [         R                  " U SS9R                  SSS
S9  [         R                  " U 5      U l        U R.                  R                  S	SS
S9  [         R                  " U S S9R                  SSS
S9  [         R0                  " U S!U R                  SS"9U l        U R2                  R                  S	S#S9  [         R0                  " U S$U R                  S%S"9U l        U R4                  R                  SS#S9  [         R                  " U S&S9R                  SSS'S
S9  [         R                  " U SSS(S9R                  SS)SS9  [         R                  " U S*S+9U l        U R6                  R                  S	S	S)S
S9  [         R                  " U SSS,S9R                  SS-SS9  [         R                  " U S.S+9U l        U R8                  R                  S	S	S-S
S9  [         R                  " U SSS/S9R                  SS0SS9  [         R                  " U S1S+9U l        U R:                  R                  S	S	S0S
S9  [         R                   " U S2U R<                  S9R                  SSS3S
S9  U R?                  SSS4S59  U RA                  S	SS	S59  U R                  RC                  S6[D        RF                  5        g )7NÚTkConchÚlocalÚwÚleftÚHostname)ÚanchorÚjustifyÚtexté   )ÚcolumnÚrowÚstickyé   Únesw)r#   Ú
columnspanr$   r%   ÚPortÚUsernameé   ÚCommandé   ÚIdentityé   ÚBrowse)Úcommandr!   zPort Forwarding)r!   é   r   )ÚheightÚwidthÚAdd)r!   r1   é   )r#   r$   ÚRemoveé   ÚHostÚLocal)r!   ÚvariableÚvalueé	   ÚRemoteÚremotezAdvanced Optionsé
   ÚCipheré   Úcipher)ÚnameÚMACé   ÚmaczEscape Charé   ÚescapezConnect!é   é@   )ÚweightÚminsizeÚWM_DELETE_WINDOW)$ÚTkinterÚFrameÚ__init__ÚmasterÚtitleÚ	StringVarÚlocalRemoteVarÚsetÚLabelÚgridÚEntryÚhostÚportÚuserr1   ÚidentityÚButtonÚgetIdentityFileÚListboxÚforwardsÚ
addForwardÚremoveForwardÚforwardPortÚforwardHostÚRadiobuttonÚlocalForwardÚremoteForwardrC   rG   rI   Ú	doConnectÚgrid_rowconfigureÚgrid_columnconfigurer   ÚsysÚexit)ÚselfÚargsÚparamss      ÚaC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/conch/scripts/tkconch.pyrQ   ÚTkConchMenu.__init__'   s†  € ä�‰×Ò˜tÐ5 dÒ5¨fÒ5à�‰×Ñ˜)Ô$Ü%×/Ò/Ó1ˆÔØ×Ñ×Ñ Ô(ä�Š�d 3°¸ZÑH×MÑMØ˜! Cð 	Nñ 	
ô —M’M $Ó'ˆŒ	Ø�	‰	�‰˜a¨A°1¸VˆÑDä�Š�d 3°¸VÑD×IÑIØ˜! Cð 	Jñ 	
ô —M’M $Ó'ˆŒ	Ø�	‰	�‰˜a¨A°1¸VˆÑDä�Š�d 3°¸ZÑH×MÑMØ˜! Cð 	Nñ 	
ô —M’M $Ó'ˆŒ	Ø�	‰	�‰˜a¨A°1¸VˆÑDä�Š�d 3°¸YÑG×LÑLØ˜! Cð 	Mñ 	
ô —}’} TÓ*ˆŒØ�‰×Ñ ¨q°aÀÐÑGä�Š�d 3°¸ZÑH×MÑMØ˜! Cð 	Nñ 	
ô  Ÿš dÓ+ˆŒØ�‰×Ñ !¨°6ÐÑ:Ü�Š�t×%9Ñ%9ÀÑI×NÑNØ˜! Fð 	Oñ 	
ô 	�Š�dÐ!2Ñ3×8Ñ8ÀÀqÐQTÐ8ÑUÜŸš¨°Q¸aÑ@ˆŒØ�‰×Ñ !°°qÀÐÑHÜ�Š�t %°·±ÑA×FÑFÈaÐUVÐFÑWÜ�Š�t (°D×4FÑ4FÑG×LÑLØ˜!ð 	Mñ 	
ô #Ÿ=š=¨Ó.ˆÔØ×Ñ×Ñ Q¨A°fÐÑ=Ü�Š�d Ñ(×-Ñ-°Q¸AÀfÐ-ÑMÜ"Ÿ=š=¨Ó.ˆÔØ×Ñ×Ñ Q¨A°fÐÑ=Ü�Š�d Ñ(×-Ñ-°Q¸AÀfÐ-ÑMÜ#×/Ò/Ø�w¨×)<Ñ)<ÀGñ
ˆÔð 	×Ñ×Ñ a¨QÐÑ/Ü$×0Ò0Ø�x¨$×*=Ñ*=ÀXñ
ˆÔð 	×Ñ×Ñ q¨aÐÑ0ä�Š�dÐ!3Ñ4×9Ñ9Ø ¨°6ð 	:ñ 	
ô 	�Š�d 3°¸XÑF×KÑKØ˜" Sð 	Lñ 	
ô —m’m D¨xÑ8ˆŒØ�‰×Ñ ¨a°RÀÐÑGä�Š�d 3°¸UÑC×HÑHØ˜" Sð 	Iñ 	
ô —=’= ¨EÑ2ˆŒØ�‰�‰˜Q¨1°"¸VˆÑDä�Š�d 3°¸]ÑK×PÑPØ˜" Sð 	Qñ 	
ô —m’m D¨xÑ8ˆŒØ�‰×Ñ ¨a°RÀÐÑGÜ�Š�t *°d·n±nÑE×JÑJØ ¨°6ð 	Kñ 	
ð
 	×Ñ˜q¨°BÐÑ7Ø×!Ñ! !¨A°qÐ!Ñ9à�‰×ÑÐ/´·±Õ:ó    c                 óæ   • [         R                  " 5       nU(       aU  U R                  R                  S[        R
                  5        U R                  R                  [        R
                  U5        g g ©Nr   )ÚtkFileDialogÚaskopenfilenamer]   ÚdeleterO   ÚENDÚinsert)rn   Úrs     rq   r_   ÚTkConchMenu.getIdentityFile…   sH   € Ü×(Ò(Ó*ˆÞØ�M‰M× Ñ  ¤G§K¡KÔ0Ø�M‰M× Ñ ¤§¡¨aÕ0ð rs   c                 ó  • U R                   R                  5       nU R                   R                  S[        R                  5        U R
                  R                  5       nU R
                  R                  S[        R                  5        U R                  R                  5       S:X  a1  U R                  R                  [        R                  SU SU 35        g U R                  R                  [        R                  SU SU 35        g )Nr   r   úL:Ú:úR:)	rd   Úgetrx   rO   ry   re   rU   ra   rz   )rn   r[   rZ   s      rq   rb   ÚTkConchMenu.addForward‹   s¿   € Ø×Ñ×#Ñ#Ó%ˆØ×Ñ×Ñ ¤7§;¡;Ô/Ø×Ñ×#Ñ#Ó%ˆØ×Ñ×Ñ ¤7§;¡;Ô/Ø×Ñ×"Ñ"Ó$¨Ó/Ø�M‰M× Ñ ¤§¡°°4°&¸¸$¸Ð.@ÕAà�M‰M× Ñ ¤§¡°°4°&¸¸$¸Ð.@ÕArs   c                 ó„   • U R                   R                  5       nU(       a  U R                   R                  US   5        g g ru   )ra   ÚcurselectionÚremove)rn   Úcurs     rq   rc   ÚTkConchMenu.removeForward•   s2   € Ø�m‰m×(Ñ(Ó*ˆÞØ�M‰M× Ñ   Q¡Õ(ð rs   c                 ón	  • SnU R                   R                  5       [        S'   U R                  R                  5       [        S'   U R                  R                  5       [        S'   U R
                  R                  5       [        S'   U R                  R                  5       nU R                  R                  5       nU R                  R                  5       nU(       a:  U[        R                  ;   a  U/[        l
        O[        R                  " SS5        SnU(       aA  U[        R                  ;   a  U/[        l        O U(       a  [        R                  " SS	5        SnU(       a†  US
:X  a
  S [        S'   OvUS   S:X  a1  [        U5      S:X  a"  [        [!        US   5      S-
  5      [        S'   O<[        U5      S:X  a
  U[        S'   O#U(       a  [        R                  " SSU-  5        SnU R"                  R                  5       (       a7  [        R$                  R'                  U R"                  R                  5       5        U R(                  R                  S[*        R,                  5       H>  nUS   S:X  a  [        R/                  USS  5        M&  [        R1                  USS  5        M@     S[        S   ;   a*  [        S   R3                  SS5      u  [        S'   [        S'   [        S   (       a  [        S   (       d   U(       a  [        R                  " SS5        SnU(       Ga~  U R4                  R7                  5         U R4                  R9                  5         [        S   (       a@  [:        R<                  n[>        R@                  " [:        RB                  5        U[:        l        O[>        RD                  " 5         [F        [>        l$        [        R$                  (       d  SS/[        l        [        S   n[K        [        S   =(       d    S5      n[>        RL                  " Xx45        [N        RP                  " Xx[S        5       5        [T        R4                  RW                  5         [T        R4                  RY                  SR[                  [        S   [        S   5      5        g U R]                  5         g )Nr"   rZ   r[   r\   r1   r   zBad cipher.r   zBad MAC.ÚnonerI   Ú^r&   rK   zBad escape character '%s'.ÚLÚ@zMissing host or username.r   z~/.ssh/id_rsaz~/.ssh/id_dsaé   z{}@{} - TkConch)/rZ   r�   Úoptionsr[   r\   r1   rC   rG   rI   ÚSSHClientTransportÚsupportedCiphersÚtkMessageBoxÚ	showerrorÚsupportedMACsÚlenÚchrÚordr]   Ú	identitysÚappendra   rO   ry   Úopt_localforwardÚopt_remoteforwardÚsplitrR   ÚquitÚdestroyrl   Ústdoutr   ÚstartLoggingÚstderrÚdiscardLogsÚhandleErrorÚdeferrÚintÚmsgr   Ú
connectTCPÚSSHClientFactoryÚframeÚ	deiconifyrS   ÚformatÚfocus)	rn   ÚfinishedrC   rG   rI   ÚlineÚrealoutrZ   r[   s	            rq   ri   ÚTkConchMenu.doConnectš   s<  € ØˆØŸ)™)Ÿ-™-›/Œ�‰ØŸ)™)Ÿ-™-›/Œ�‰ØŸ)™)Ÿ-™-›/Œ�‰Ø!Ÿ\™\×-Ñ-Ó/Œ�	ÑØ—‘—‘Ó"ˆØ�h‰h�l‰l‹nˆØ—‘—‘Ó"ˆÞØÔ+×<Ñ<Ó<Ø7=°hÔ"Õ3ä×&Ò& y°-Ô@Ø�æØÔ(×6Ñ6Ó6Ø47°5Ô"Õ0ÞÜ×&Ò& y°*Ô=Ø�æØ˜ÓØ$(”˜Ò!Ø˜‘˜cÓ!¤c¨&£k°QÓ&6Ü$'¬¨F°1©I«¸Ñ(;Ó$<”˜Ò!Ü�V“ Ó!Ø$*”˜Ò!ÞÜ×&Ò& yÐ2NÐQWÑ2WÔXØ�à�=‰=×Ñ×ÑÜ×Ñ×$Ñ$ T§]¡]×%6Ñ%6Ó%8Ô9à—M‘M×%Ñ% a¬¯©Ö5ˆDØ�A‰w˜#‹~Ü×(Ñ(¨¨a¨b¨Ö2ä×)Ñ)¨$¨q¨r¨(Ö3ñ	 6ð ”'˜&‘/Ó!Ü/6°v©×/DÑ/DÀSÈ!Ó/LÑ,ŒG�F‰OœW V™_ä˜—¤w¨v§¾HÜ×"Ò" 9Ð.IÔJØˆHßØ�K‰K×ÑÔØ�K‰K×ÑÔ!Ü�u�~ÜŸ*™*�Ü× Ò ¤§¡Ô,Ø$”•
ä—’Ô!Ü$ŒCŒJÜ×$×$Ø%4°oÐ$F”Ô!Ü˜6‘?ˆDÜ”w˜v‘×,¨"Ó-ˆDÜ�GŠG�T�LÔ!Ü×Ò˜tÔ+;Ó+=Ô>Ü�L‰L×"Ñ"Ô$Ü�L‰L×ÑØ!×(Ñ(¬°©¼'À&¹/ÓJõð �J‰J�Lrs   )rC   r1   rI   re   rd   ra   rZ   r]   rg   rU   rG   r[   rh   r\   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rQ   r_   rb   rc   ri   Ú__static_attributes__© rs   rq   r   r   &   s   † ò\;ò|1òBò)õ
Frs   r   c                   óú  • \ rS rSr% Sr/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/r/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/r\R                  R                  r
\R                  R                  r\R                  " S/\R                  " \
 V Vs/ s H  oR!                  5       PM     snn 5      \R                  " \ V Vs/ s H  oR!                  5       PM     snn 5      \R"                  " SS9\R"                  " SS9S.\R$                  " 5       \R"                  " SS9\R"                  " SSS9/S9r/ r\\   \S'   / r\\\\\\4   4      \S'   / r\\\\\\4   4      \S'   S rS  rS! rS" rS# r S$r!g%s  snn f s  snn f )&ÚGeneralOptionséã   z,Usage:    tkconch [options] host [command]
 )r\   ÚlNzLog in using this user name.)r]   Úiz~/.ssh/identityz&Identity for public key authentication)rI   ÚeÚ~z(Set escape character; ``none'' = disable)rC   ÚcNzSelect encryption algorithm.)ÚmacsÚmNz.Specify MAC algorithms for protocol version 2.)r[   ÚpNz7Connect to this port.  Server must be on the same port.)Úlocalforwardr‹   Nz<listen-port:host:port   Forward local port to remote address)ÚremoteforwardÚRNz<listen-port:host:port   Forward remote port to local address)ÚttyÚtz-Tty; allocate a tty even if command is given.)ÚnottyÚTzDo not allocate a tty.)ÚversionÚVzDisplay version number only.)ÚcompressÚCzEnable 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)rÄ   rÆ   zlisten-port:host:port)Údescr)rC   r¾   rÁ   rÂ   r1   ÚargumentT)rÓ   Úrepeat)ÚmutuallyExclusiveÚ
optActionsÚextraActionsr—   ÚlocalForwardsÚremoteForwardsc                 ó:   • U R                   R                  U5        g ©N)r—   r˜   )rn   rº   s     rq   Úopt_identityÚGeneralOptions.opt_identity  s   € Ø�‰×Ñ˜aÕ rs   c                 ó”   • UR                  S5      u  p#n[        U5      n[        U5      nU R                  R                  X#U445        g ©Nr   )r›   r¤   rÙ   r˜   )rn   ÚfÚ	localPortÚ
remoteHostÚ
remotePorts        rq   r™   ÚGeneralOptions.opt_localforward   sB   € Ø,-¯G©G°C«LÑ)ˆ	˜zÜ˜	“Nˆ	Ü˜“_ˆ
Ø×Ñ×!Ñ! 9¸:Ð.FÐ"GÕHrs   c                 ó”   • UR                  S5      u  p#n[        U5      n[        U5      nU R                  R                  X#U445        g rà   )r›   r¤   rÚ   r˜   )rn   rá   rä   ÚconnHostÚconnPorts        rq   rš   Ú GeneralOptions.opt_remoteforward&  sB   € Ø)*¯©°«Ñ&ˆ
˜hÜ˜“_ˆ
Ü�x“=ˆØ×Ñ×"Ñ" J¸8Ð0DÐ#EÕFrs   c                 ó,   • S/[         R                  SS& g )NÚzlibr   r"   )r�   ÚsupportedCompressions©rn   s    rq   Úopt_compressÚGeneralOptions.opt_compress,  s   € Ø9?¸Ô×0Ñ0°°1Ñ5rs   c                 óf   • U(       a   US   U S'   SR                  USS  5      U S'   g SU S'   SU S'   g )Nr   rZ   Ú r"   r1   Ú )Újoin)rn   ro   s     rq   Ú	parseArgsÚGeneralOptions.parseArgs/  s<   € ÞØ ™7ˆD�‰LØ!Ÿh™h t¨A¨B xÓ0ˆD�ŠOàˆD�‰LØ ˆD�ŠOrs   rµ   N)"r°   r±   r²   r³   ÚsynopsisÚoptParametersÚoptFlagsr   r�   r�   Ú_ciphersr“   Ú_macsr   ÚCompletionsÚCompleteListÚdecodeÚ	CompleterÚCompleteUserAtHostÚcompDatar—   r   ÚstrÚ__annotations__rÙ   r   r¤   rÚ   rÝ   r™   rš   rî   rô   r´   )Ú.0rÐ   s   00rq   r·   r·   ã   s�  ‡ ð€Hò 	<ÚVÚHÚ=ÚMÚVò	
ò	
ð€Mò, 	FÚ0Ú8Ú0Ú>ÚKÚ%Ú=ð	€Hð ×+Ñ+×<Ñ<€HØ×(Ñ(×6Ñ6€Eà× Ò Ø+Ð,à×(Ò(¹hÔ)Gºh¸¯(©(®*¹hÒ)GÓHØ×&Ò&¹EÔ'BºE°q¯©®
¹EÒ'BÓCØ!ŸOšOÐ2IÑJØ"Ÿ_š_Ð3JÑKñ	
ð ×$Ò$Ó&Ø�OŠO )Ñ,Ø�OŠO *°TÑ:ð
ñ€Hð €Iˆt�C‰yÓØ79€M�4˜˜c 5¨¨c¨¡?Ð2Ñ3Ñ4Ó9Ø8:€N�D˜˜s E¨#¨s¨(¡OÐ3Ñ4Ñ5Ó:ò!òIòGòAõ!ùóE *HùÛ'Bs   Â	E1Â:E7r·   c                 ó  ^^• [         R                  (       a  [        S5      e[        R                  " 5       m/ nU4UU4S jjnU[         l        [         R                  U 5        [         R                  R                  5         T$ )Nzcan't ask 2 questions at once!c                 óø  >• U (       d  g U S:X  a  [         R                  " 5         U S:X  aD  [        R                  S5        SR	                  U5      nAS [        l        TR                  U5        g S[        U 5      s=::  a  S:  a2  O  O/UR                  U 5        T(       a  [        R                  U 5        g g [        U 5      S:X  a5  U(       a-  T(       a  [        R                  S5        UR                  5         g g g )	NÚÚz
rò   é    é   r8   z )	r   Ústopr¨   Úwriteró   Úcallbackr–   r˜   Úpop)ÚchÚrespÚstrespÚdÚechos      €€rq   ÚgotCharÚ!deferredAskFrame.<locals>.gotCharE  s­   ø€ ÞØØ�‹<Ü�LŠLŒNØ�‹:Ü�K‰K˜ÔØ—W‘W˜T“]ˆFØØ!ŒEŒNØ�J‰J�vÔØØ”3�r“7Õ ˜SÖ Ø�K‰K˜ŒOÞÜ—‘˜B•ð ä�‹W˜‹\ždÞÜ—‘˜KÔ(Ø�H‰H�Jð #ˆ\rs   )r¨   r  Ú
ValueErrorr   ÚDeferredr  ÚcanvasÚfocus_force)Úquestionr  r  r  r  s    `  @rq   ÚdeferredAskFramer  ?  s^   ù€ Ü‡~‡~ÜÐ9Ó:Ð:Ü�ŠÓ€AØ€Dà÷ ð ð* „E„NÜ	‡K�K�ÔÜ	‡L�L×ÑÔØ€Hrs   c            
      ó¸  • [         R                  SS  n SU ;   a%  U R                  S5      nXUS-    U -   n XS-   US-   2	 U S S   H7  n U R                  U5      nUS S S:X  a  XS-      S   S:w  a	  / XUS-   & M5  M7  M9     [        R
                  " 5       nUR                  5         [        R                  " 5       n[        U5      q	[        R                  [        R                  [        R                  SS9  [        5       q [        R                  U 5        [        R+                  5        HS  u  pgU(       d  M  [-        [        U5      (       d  M%  [/        [        U5      R1                  [        R2                  U5        MU     [        R4                   H?  u  nu  pš[        R6                  R1                  [        R2                  S
U SU	 SU
 35        MA     / [        l        [        R8                   H?  u  nu  pš[        R6                  R1                  [        R2                  SU SU	 SU
 35        MA     / [        l        [:        R<                  " US S9qURA                  S[:        RB                  [>        RD                  -  S-   [:        RF                  [>        RH                  -  S-   4-  5        [>        R                  [        R                  S9  [J        RL                  " U5        UR                  5         [        S   (       a  [        S   (       d  S[        S   ;   a  [        RO                  5         OURQ                  5         [R        RT                  " 5         [         R(                  " [V        5        g ! [         a     GM:  f = f! [         R"                   aC  n[%        S	U-  5        [        R'                  5         [         R(                  " S5         S nAGN¿S nAff = f)Nr"   z-lr&   r-   z-or   Ú-)ÚsideÚfillÚexpandz	ERROR: %sr~   r   r€   )r  z%dx%dr+   )r  rZ   r\   rŒ   ),rl   ÚargvÚindexr  rO   ÚTkÚwithdrawÚToplevelr   ÚmenuÚpackÚTOPÚBOTHr·   rŽ   ÚparseOptionsr   Ú
UsageErrorÚprintÚopt_helprm   ÚitemsÚhasattrÚgetattrrz   ry   rÙ   ra   rÚ   r   Ú
VT100Framer¨   ÚgeometryÚ	fontWidthr4   Ú
fontHeightr3   r   Úinstallri   Úmainloopr   ÚrunÚ
exitStatus)ro   rº   ÚargÚrootÚtopÚuÚkrÐ   rÀ   ÚrhÚrps              rq   r6  r6  `  sç  € ä�8‰8�A�Bˆ<€DØˆtƒ|Ø�J‰J�tÓˆØ˜˜A™ˆ Ñ%ˆØ�Q‘˜˜Q™�ÐØ‘A‹wˆð	Ø—
‘
˜3“ˆAØ�2�Aˆw˜$‹ 4¨A©¡;¨q¡>°SÓ#8Ø"$�˜˜Q™’ñ $9‰ñ ô �:Š:‹<€DØ‡M�M„OÜ
×
Ò
Ó
€CÜ�sÓ€DÜ‡I�I”7—;‘;¤W§\¡\¸!€IÑ<ÜÓ€GðÜ×Ñ˜TÔ"ô
 —‘–‰ˆßˆ1”œ˜q×!Ó!Ü”D˜!Ó×#Ñ#¤G§K¡K°Ö3ñ  ô ×,Ô,‰ˆ‰8ˆBÜ�‰×ÑœWŸ[™[¨B¨q¨c°°2°$°a¸°tÐ*<Ö=ñ -à„GÔÜ×-Ô-‰ˆ‰8ˆBÜ�‰×ÑœWŸ[™[¨B¨q¨c°°2°$°a¸°tÐ*<Ö=ñ .à„GÔÜ×Ò˜t¨dÑ3€EØ‡M�MØÜ×ÑœuŸ{™{Ñ*¨QÑ.´×0BÑ0BÄUÇ\Á\Ñ0QÐTUÑ0UÐ
Vñ	Wôô 
‡J�J”G—K‘K€JÑ Ü×Ò�dÔØ‡M�M„OÜ��œG FŸO°´w¸v±Ó0FÜ�‰Õà�‰ŒÜ‡K‚K„MÜ‡H‚HŒZÕøôI ó 	Ûð	ûô ×Ñó Üˆk˜A‰oÔÜ×ÑÔÜ�Š��Šûðús*   Á/M0Ä N Í0
M?Í>M?ÎOÎ8OÏOc                  ó†   • SSK Jn   Sq[        R                  " U R                  5       5        [        R                  " 5         e )Nr   ©Úfailurer&   )Útwisted.pythonrA  r7  r   ÚerrÚFailurer   r
  r@  s    rq   r¢   r¢   “  s+   € Ý&ð €JÜ‡G‚GˆG�O‰OÓÔÜ‡L‚L„NØ	rs   c                   ó*   • \ rS rSrSrS rS rS rSrg)r§   i�  Tc                 ó.   • [         R                  " 5         g rÜ   )r   r
  rí   s    rq   ÚstopFactoryÚSSHClientFactory.stopFactory   s   € Ü�Š�rs   c                 ó   • [        5       $ rÜ   )r�   )rn   Úaddrs     rq   ÚbuildProtocolÚSSHClientFactory.buildProtocol£  s   € Ü!Ó#Ð#rs   c                 óf   • [         R                  " SSUR                   SUR                   35        g )Nr   zConnection Failed, Reason:
 z: )r‘   ÚshowwarningÚtyper<   )rn   Ú	connectorÚreasons      rq   ÚclientConnectionFailedÚ'SSHClientFactory.clientConnectionFailed¦  s+   € Ü× Ò ØØ+¨F¯K©K¨=¸¸6¿<¹<¸.ÐIõ	
rs   rµ   N)	r°   r±   r²   r³   ÚnoisyrG  rK  rR  r´   rµ   rs   rq   r§   r§   �  s   † Ø€Eòò$õ
rs   r§   c                   ó8   • \ rS rSrS rS rS rS rS rS r	Sr
g	)
r�   i­  c                 ó   • SX4-  q g )NzDconch:	Remote side disconnected with error code %i
conch:	reason: %s)r7  )rn   ÚcodeÚdescs      rq   ÚreceiveErrorÚSSHClientTransport.receiveError®  s   € ð VØˆlññ 	rs   c                 óP   • SX4-  q [        R                  R                  XU5        g )Nz>conch:	Sending disconnect with error code %i
conch:	reason: %s)r7  r   r�   ÚsendDisconnect)rn   rW  rQ  s      rq   r\  Ú!SSHClientTransport.sendDisconnectµ  s/   € ð PØˆnñð 	ô 	×$Ñ$×3Ñ3°DÀÕGrs   c                 ób   • U(       d  [         S   (       a  [        R                  " SU-  5        g g )Nr   zReceived Debug Message: %s)rŽ   r   r¥   )rn   ÚalwaysDisplayÚmessageÚlangs       rq   ÚreceiveDebugÚSSHClientTransport.receiveDebug½  s"   € æœG EŸNÜ�GŠGÐ0°7Ñ:Õ;ð +rs   c                 óò  • [        [        S   USS 05      nUS:X  a  [        R                  " S5      $ US:X  a*  [        R                  " [
        R                  " S5      5      $ [        S   U R                  R                  5       R                  :X  a  [        S   n[        S   nOvSR                  [        S   U R                  R                  5       R                  5      nSR                  [        S   U R                  R                  5       R                  5      n[        R                  " U5      S   nS	R                  US
SS.U   U5      nUS-  n[        US5      R                  U R                  XU5      $ )NrZ   zknown-hostsr"   r&   úbad host keyz{} ({})z{},{}r   zNThe authenticity of host '{}' can't be established.
{} key fingerprint is {}.ÚDSAÚRSA©s   ssh-dsss   ssh-rsaz9
Are you sure you want to continue connecting (yes/no)? )r   rŽ   r   ÚsucceedÚfailr   Ú
ConchErrorr   ÚgetPeerrZ   rª   r   ÚgetNSr  ÚaddCallbackÚ_cbVerifyHostKey)rn   ÚpubKeyÚfingerprintÚgoodKeyrZ   ÚkhHostÚkeyTypeÚquess           rq   ÚverifyHostKeyÚ SSHClientTransport.verifyHostKeyÂ  sA  € ô
 !¤¨¡°&¸=È$Ð:OÓPˆØ�a‹<Ü—=’= Ó#Ð#Ø˜‹\Ü—:’:œe×.Ò.¨~Ó>Ó?Ð?ä�v‰ $§.¡.×"8Ñ"8Ó":×"?Ñ"?Ó?Ü˜v‘�Ü  ™‘à ×'Ñ'¬°©¸¿¹×9OÑ9OÓ9Q×9VÑ9VÓW�Ø Ÿ™¬°©¸¿¹×9OÑ9OÓ9Q×9VÑ9VÓW�Ü—l’l 6Ó*¨1Ñ-ˆGðß#™VØØ"°Ñ6°wÑ?Øóð ð ÐQÑQˆDÜ# D¨!Ó,×8Ñ8Ø×%Ñ% v°wóð rs   c           	      óŽ  • UR                  5       S;  a'  [        SS5      R                  U R                  X#U5      $ UR                  5       S:X  a+  [        R                  S5        [        R                  " S5      e [        R                  SU< SS	S
S.U   < S35        [        [        R                  R                  S5      S5       n[        R                  " U5      nUR                  SU SU SU 35        S S S 5        g ! , (       d  f       g = f! [         a&    [        R                   " 5         [        R                  ef = f)N)ÚyesÚnozPlease type  'yes' or 'no': r"   rz  zHost key verification failed.
re  zWarning: Permanently added 'z' (rf  rg  rh  z) to the list of known hosts.
z~/.ssh/known_hostsrÒ   Ú
rñ   )Úlowerr  rn  ro  r¨   r  r   rk  ÚopenÚosÚpathÚ
expanduserÚbase64Ú	b64encodeÚBaseExceptionr   r£   )rn   Úansrp  rs  rt  Úknown_hostsÚ
encodedKeys          rq   ro  Ú#SSHClientTransport._cbVerifyHostKeyß  s  € Ø�9‰9‹;˜mÓ+Ü#Ð$BÀAÓF×RÑRØ×%Ñ% v°wóð ð �9‰9‹;˜$ÓÜ�K‰KÐ;Ô<Ü×"Ò" >Ó2Ð2ð	#Ü�KŠKó ¨¸5ÑAÀ'ÔJðLôô
 ”b—g‘g×(Ñ(Ð)=Ó>ÀÔDÈÜ#×-Ò-¨fÓ5�
Ø×!Ñ! B v h¨a°¨y¸¸*¸Ð"FÔG÷ E×DÖDûô ó 	#Ü�JŠJŒLÜ×"Ñ"Ð"ð	#ús+   Á<AD Ã	1DÃ:D Ä
DÄD ÄD Ä0Ec                 ó¤   • [         S   (       a
  [         S   nO[        R                  " 5       nU R                  [	        U[        5       5      5        g )Nr\   )rŽ   ÚgetpassÚgetuserÚrequestServiceÚSSHUserAuthClientÚSSHConnection)rn   r\   s     rq   ÚconnectionSecureÚ#SSHClientTransport.connectionSecureô  s6   € Ü�6�?Ü˜6‘?‰Dä—?’?Ó$ˆDØ×ÑÔ-¨d´M³OÓDÕErs   rµ   N)r°   r±   r²   r³   rY  r\  rb  rv  ro  rŽ  r´   rµ   rs   rq   r�   r�   ­  s"   † ò
òHò<ò
ò:#õ*Frs   r�   c                   óF   • \ rS rSr% / r\\   \S'   S	S jrS r	S r
S rSrg)
rŒ  iü  Ú	usedFilesNc                 ón   • U(       d#  SR                  U R                  [        S   5      n[        US5      $ )Nz{}@{}'s password: rZ   r   )rª   r\   rŽ   r  )rn   Úprompts     rq   ÚgetPasswordÚSSHUserAuthClient.getPasswordÿ  s,   € ÞØ)×0Ñ0°·±¼GÀF¹OÓLˆFÜ ¨Ó*Ð*rs   c                 ó  • [         R                   Vs/ s H  oU R                  ;  d  M  UPM     nnU(       d  g US   n[        R                  " U5        U R                  R                  U5        [        R                  R                  U5      nUS-  n[        R                  R                  U5      (       d  g  [        R                  R                  U5      R                  5       $ s  snf ! [         a    U R                  5       s $ f = f)Nr   z.pub)rŽ   r—   r‘  r   r¥   r˜   r~  r  r€  Úexistsr   ÚKeyÚfromFileÚblobrƒ  ÚgetPublicKey)rn   ÚxÚfilesÚfiles       rq   r›  ÚSSHUserAuthClient.getPublicKey  sÏ   € Ü#×-Ò-ÓIÒ-�q¸$¿.¹.Ñ1H—Ñ-ˆÐIÞØØ�Q‰xˆÜ�Š�ŒØ�‰×Ñ˜dÔ#Ü�w‰w×!Ñ! $Ó'ˆØ�‰ˆÜ�w‰w�~‰~˜d×#Ñ#Øð	'Ü—8‘8×$Ñ$ TÓ*×/Ñ/Ó1Ð1ùò Jøô ó 	'Ø×$Ñ$Ó&Ò&ð	'ús   “C'ªC'Â:,C, Ã,D	ÄD	c                 ó  • [         R                  R                  U R                  S   5      n[         R                  R	                  U5      (       d  g  [
        R                  " [        R                  R                  U5      R                  5      $ ! [        R                   aZ  nUR                  S   S:X  a=  SU R                  S   -  n[        US5      R                  U R                  S5      s S nA$  S nAg S nAff = f)Néÿÿÿÿr   zencrypted key with no passwordúEnter passphrase for key '%s': )r~  r  r€  r‘  r—  r   ri  r   r˜  r™  Ú	keyObjectÚBadKeyErrorro   r  rn  Ú_cbGetPrivateKey)rn   rž  r»   r“  s       rq   ÚgetPrivateKeyÚSSHUserAuthClient.getPrivateKey  sÁ   € Ü�w‰w×!Ñ! $§.¡.°Ñ"4Ó5ˆÜ�w‰w�~‰~˜d×#Ñ#Øð	YÜ—=’=¤§¡×!2Ñ!2°4Ó!8×!BÑ!BÓCÐCøÜ×Ñó 	YØ�v‰v�a‰yÐ<Ó<Ø:¸T¿^¹^ÈBÑ=OÑO�Ü'¨°Ó2×>Ñ>¸t×?TÑ?TÐVWÓXÕXô =ûð	Yús   Á<B ÂC>Â$A
C9Ã.C>Ã9C>c                 ób  • [         R                  R                  U R                  S   5      n [        R
                  R                  X1S9R                  $ ! [        R                   aE    US:X  a  e SU R                  S   -  n[        US5      R                  U R                  US-   5      s $ f = f)Nr¡  )Úpasswordr&   r¢  r   r"   )r~  r  r€  r‘  r   r˜  r™  r£  r¤  r  rn  r¥  )rn   r„  Úcountrž  r“  s        rq   r¥  Ú"SSHUserAuthClient._cbGetPrivateKey  s�   € Ü�w‰w×!Ñ! $§.¡.°Ñ"4Ó5ˆð	Ü—8‘8×$Ñ$ TÐ$Ð8×BÑBÐBøÜ×Ñó 	Ø˜‹zØØ6¸¿¹ÈÑ9KÑKˆFÜ# F¨AÓ.×:Ñ:Ø×%Ñ% u¨q¡yóò ð		ús   ®&A ÁAB.Â-B.rµ   rÜ   )r°   r±   r²   r³   r‘  r   r  r  r”  r›  r¦  r¥  r´   rµ   rs   rq   rŒ  rŒ  ü  s%   ‡ Ø€Iˆt�C‰yÓô+ò
'ò 	Yõ
rs   rŒ  c                   ó   • \ rS rSrS rSrg)r�  i,  c           	      ó:  • [         S   (       d  U R                  [        5       5        [         R                  (       aS  [         R                   H?  u  p[        R
                  " U[        R                  " X[        R                  5      5        MA     [         R                  (       aw  [         R                   Hb  u  p2[        R                  " SR                  X25      5        [        R                  " SU45      nU R                  SU5        X R                  U'   Md     g g )NrÌ   z&asking for remote forwarding for {}:{}z0.0.0.0ztcpip-forward)rŽ   ÚopenChannelÚ
SSHSessionrÙ   r   Ú	listenTCPr
   ÚSSHListenForwardingFactoryÚ SSHListenClientForwardingChannelrÚ   r   r¥   rª   ÚpackGlobal_tcpip_forwardÚsendGlobalRequest)rn   râ   Úhostporträ   Údatas        rq   ÚserviceStartedÚSSHConnection.serviceStarted-  sÕ   € Ü�y×!Ø×ÑœZ›\Ô*Ü× × Ü'.×'<Ô'<Ñ#�	Ü×!Ò!ØÜ×9Ò9Ø¬
×(SÑ(Sóöñ (=ô ×!×!Ü(/×(>Ô(>Ñ$�
Ü—’Ø<×CÑCØ"óôô
 "×:Ò:¸IÀzÐ;RÓS�Ø×&Ñ& ¸Ô=Ø2:×#Ñ# JÓ/ò )?ð "rs   rµ   N)r°   r±   r²   r³   r·  r´   rµ   rs   rq   r�  r�  ,  s   † õ;rs   r�  c                   óH   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rSrg)r¯  iD  s   sessionc                 ól  • SU l         [        R                  " 5       n[        S   (       a  U R                  Ul        OU R                  Ul        U R                  Ul        UR
                  [        l
        [        R                  R                  5         [        S   (       a:  U R                  R                  U S[        R                   " [        S   5      5        GO,[        S   (       a�  [        S   (       aV  ["        R$                  R'                  SS5      nS	n[        R(                  " X4S
5      nU R                  R                  U SU5        U R                  R                  U S[        R                   " [        S   5      5        O�[        S   (       dV  ["        R$                  R'                  SS5      nS	n[        R(                  " X4S
5      nU R                  R                  U SU5        U R                  R                  U SS5        U R                  R*                  R*                  R-                  S5        g )Nr"   rI   rÎ   s	   subsystemr1   rÄ   ÚTERMÚxterm)é   éP   r   r   rò   s   pty-reqÚexecrÆ   s   shellrs   )Ú
escapeModer   ÚSSHSessionClientrŽ   ÚhandleInputÚdataReceivedr  ÚsendEOFÚconnectionLostr¨   r  r  r  ÚconnÚsendRequestr   ÚNSr~  Úenvironr�   ÚpackRequest_pty_reqr   ÚsetTcpNoDelay)rn   Úfoor½   ÚtermÚwinSizeÚ
ptyReqDatas         rq   ÚchannelOpenÚSSHSession.channelOpenG  s}  € ð ˆŒÜ×$Ò$Ó&ˆÜ�8×Ø!×-Ñ-ˆA�Nà!ŸZ™ZˆAŒNØŸ<™<ˆÔØŸ™ŒŒÜ�‰× Ñ Ô"Ü�;×Ø�I‰I×!Ñ! $¨´f·i²iÄÈ	Ñ@RÓ6SÖTÜ�Y×Ü�u�~Ü—z‘z—~‘~ f¨gÓ6�à(�Ü$×8Ò8¸ÈÓK�
Ø—	‘	×%Ñ% d¨J¸
ÔCØ�I‰I×!Ñ! $¨´·	²	¼'À)Ñ:LÓ0MÕNä˜7×#Ü—z‘z—~‘~ f¨gÓ6�à(�Ü$×8Ò8¸ÈÓK�
Ø—	‘	×%Ñ% d¨J¸
ÔCØ�I‰I×!Ñ! $¨°#Ô6Ø�	‰	×Ñ×%Ñ%×3Ñ3°AÕ6rs   c                 óx  • US;   a  SU l         U R                  U5        g U R                   S:X  a  U[        S   :X  a  SU l         g U R                   S:X  aÎ  SU l         US:X  a,  [        R                  " S5        [
        R                  " 5         g US:X  a9  [        R                  " [        R                  " 5       [        R                  5        g US:X  a;  [        R                  " S	5        U R                  R                  R                  5         g U R                  S
U-   5        g SU l         U R                  U5        g )N)r{  r  r"   rI   r&   Ú.zdisconnecting from escapeÚrÃ   zrekeying connectionr¼   r   )rÀ  r  rŽ   r   r¥   r   r
  r~  ÚkillÚgetpidÚsignalÚSIGSTOPrÆ  r   ÚsendKexInit)rn   Úchars     rq   rÂ  ÚSSHSession.handleInputh  sá   € à�<ÓØˆDŒOØ�J‰J�tÕØ�_‰_ Ó! d¬g°hÑ.?Ó&?ØˆD�OØ�_‰_ Ó!ØˆDŒOØ�s‹{Ü—’Ð3Ô4Ü—’”ØØ˜“ä—’œŸ	š	›¤V§^¡^Ô4ØØ˜“Ü—’Ð-Ô.Ø—	‘	×#Ñ#×/Ñ/Ô1ØØ�J‰J�s˜T‘zÕ"àˆDŒOØ�J‰J�tÕrs   c                 ó”   • UR                  S5      n[        S   (       a  [        [        U5      5        [        R                  U5        g )Nzutf-8rÑ   )rý   rŽ   r+  Úreprr¨   r  ©rn   r¶  s     rq   rÃ  ÚSSHSession.dataReceived‚  s0   € Ø�{‰{˜7Ó#ˆÜ�9×Ü”$�t“*ÔÜ�‰�DÕrs   c                 óì   • U[         R                  :X  a`  [        R                  " S[	        U5      -  5        [
        R                  R                  U5        [
        R                  R                  5         g g )Nzgot %s stderr data)	r	   ÚEXTENDED_DATA_STDERRr   r¥   r”   rl   r    r  Úflush)rn   rÅ   r¶  s      rq   ÚextReceivedÚSSHSession.extReceivedˆ  sM   € Ø”
×/Ñ/Ó/Ü�GŠGÐ(¬3¨t«9Ñ4Ô5Ü�J‰J×Ñ˜TÔ"Ü�J‰J×ÑÕð 0rs   c                 ól   • [         R                  " S5        [        R                  R	                  5         g )Nzgot eof)r   r¥   rl   ÚstdinÚcloserí   s    rq   ÚeofReceivedÚSSHSession.eofReceivedŽ  s   € Ü�Š�	ÔÜ�	‰	�‰Õrs   c                 ó¨   • [         R                  " SU -  5        [        U R                  R                  5      S:X  a  [
        R                  " 5         g g )Nz	closed %sr"   )r   r¥   r”   rÆ  Úchannelsr   r
  rí   s    rq   ÚclosedÚSSHSession.closed’  s8   € Ü�Š�˜dÑ"Ô#Üˆt�y‰y×!Ñ!Ó" aÓ'Ü�LŠL�Nð (rs   c                 ó„   • [        [        R                  " SU5      S   5      q[        R
                  " S[        -  5        g )Nz>Lr   zexit status: %s)r¤   ÚstructÚunpackr7  r   r¥   rÞ  s     rq   Úrequest_exit_statusÚSSHSession.request_exit_status—  s.   € äœŸš t¨TÓ2°1Ñ5Ó6ˆ
Ü�ŠÐ!¤JÑ.Õ/rs   c                 ó:   • U R                   R                  U 5        g rÜ   )rÆ  rÄ  rí   s    rq   rÄ  ÚSSHSession.sendEOFœ  s   € Ø�	‰	×Ñ˜$Õrs   )rÀ  N)r°   r±   r²   r³   rD   rÐ  rÂ  rÃ  rã  rè  rì  rñ  rÄ  r´   rµ   rs   rq   r¯  r¯  D  s0   † Ø€Dò7òBò4òòòò
0õ
 rs   r¯  Ú__main__)<Ú__doc__r�  r‰  r~  r×  rï  rl   ÚtkinterrO   Útkinter.filedialogÚ
filedialogrv   Útkinter.messageboxÚ
messageboxr‘   Útypingr   r   Útwisted.conchr   Útwisted.conch.client.defaultr   Útwisted.conch.sshr   r   r	   r
   r   r   r   r   Útwisted.conch.uir   Útwisted.internetr   r   r   r   rB  r   r   rP   r   ÚOptionsr·   rŽ   r%  r7  r¨   r  r6  r¢   ÚClientFactoryr§   r�   rŒ  r�  Ú
SSHChannelr¯  r°   rµ   rs   rq   Ú<module>r     s  ðñ
ó
 Û Û 	Û Û Û 
Û Ý )Ý )ß å Ý 7÷	÷ 	ó 	õ %ß @Ó @ß %ôz�'—-‘-ô zôzR!�U—]‘]ô R!ðl €Ø€Ø€
Ø€òòB0òf
ô
�x×-Ñ-ô 
ô LF˜×5Ñ5ô LFô^-˜×2Ñ2ô -ô`;�J×,Ñ,ô ;ô0Y �×#Ñ#ô Y ðx ˆzÓÙ…Eð rs   