a
    zeZ                     @   sF  d dl Z d dlZd dlZd dlmZ dgZd ZdZe	dgZ
e	dgZe	dgZe	dgZe	d	gZe	d gZe	d
gZe	dgZe	dgZe	dgZe	dgZe	dgZe	dgZe	dgZe	dgZe	dgZe	dgZe	d gZe	dgZe	dgZe	dgZe	dgZe	dgZ e	dgZ!e	dgZ"e	dgZ#e	dgZ$e	dgZ%e	dgZ&e	d gZ'e	d!gZ(e	d"gZ)e	d#gZ*e	d$gZ+e	d%gZ,e	d&gZ-e	d'gZ.e	d(gZ/e	d)gZ0e	d*gZ1e	dgZ2e	d+gZ3e	d,gZ4e	d-gZ5e	d.gZ6e	d/gZ7e	d0gZ8e	d1gZ9e	d2gZ:e	d3gZ;e	d4gZ<e	d5gZ=e	d6gZ>e	d7gZ?e	d8gZ@e	d9gZAe	d:gZBe	d;gZCe	d<gZDe	d=gZEe	d>gZFe	d?gZGe	d@gZHe	dAgZIe	dBgZJe	dCgZKe	dDgZLe	dEgZMe	dFgZNe	dGgZOe	dgZPe	d gZQeRedHrejSZTnejUZTG dId dZVdJdK ZWeXdLkrBeW  dS )M    N)	monotonicTelnet                                                                           	   
                                                                   !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   0   1            PollSelectorc                   @   s  e Zd ZddejfddZdejf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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-d. Zd/d0 Zd1d2 Zd3d4 Zd<d5d6Zd7d8 Zd9d: Z dS )=r   Nr   c                 C   sh   t | _|| _|| _|| _d | _d| _d| _d| _d| _	d| _
d| _d| _d | _|d urd| ||| d S )N    r   )
DEBUGLEVEL
debuglevelhostporttimeoutsockrawqirawqcookedqeofiacseqsbsbdataqoption_callbackopenselfrL   rM   rN    r[   /usr/lib/python3.9/telnetlib.py__init__   s    zTelnet.__init__c                 C   sF   d| _ |st}|| _|| _|| _td| || t||f|| _	d S )Nr   ztelnetlib.Telnet.open)
rS   TELNET_PORTrL   rM   rN   sysauditsocketcreate_connectionrO   rY   r[   r[   r\   rX      s    zTelnet.openc                 C   s   |    d S NcloserZ   r[   r[   r\   __del__   s    zTelnet.__del__c                 G   s@   | j dkr<td| j| jf dd |r4t||  nt| d S )Nr   zTelnet(%s,%s): )end)rK   printrL   rM   )rZ   msgargsr[   r[   r\   rk      s
    
z
Telnet.msgc                 C   s
   || _ d S rc   )rK   )rZ   rK   r[   r[   r\   set_debuglevel   s    zTelnet.set_debuglevelc                 C   s.   | j }d | _ d| _d| _d| _|r*|  d S )NTrI   r   )rO   rS   rT   rU   re   )rZ   rO   r[   r[   r\   re     s    zTelnet.closec                 C   s   | j S rc   )rO   rf   r[   r[   r\   
get_socket  s    zTelnet.get_socketc                 C   s
   | j  S rc   )rO   filenorf   r[   r[   r\   ro     s    zTelnet.filenoc                 C   sB   t |v r|t t t  }td| | | d| | j| d S )Nztelnetlib.Telnet.writezsend %r)IACreplacer_   r`   rk   rO   sendall)rZ   bufferr[   r[   r\   write  s
    zTelnet.writec                 C   sB  t |}|   | j|}|dkrN|| }| jd | }| j|d  | _|S |d ur`t | }t }|| tj | j	s|
|rtdt | j| }|   |   | j||}|dkr|| }| jd | }| j|d  | _|W  d    S |d urv|t  }|dk rvqqvW d    n1 s00    Y  |  S Nr   )lenprocess_rawqrR   find_time_TelnetSelectorregister	selectors
EVENT_READrS   selectmax	fill_rawqread_very_lazy)rZ   matchrN   nibufdeadlineselectorr[   r[   r\   
read_until&  s8    


&zTelnet.read_untilc                 C   s0   |    | js |   |    q| j}d| _|S NrI   )rw   rS   r   rR   rZ   r   r[   r[   r\   read_allK  s    
zTelnet.read_allc                 C   s6   |    | js&| js&|   |    q| j}d| _|S r   )rw   rR   rS   r   r   r[   r[   r\   	read_someU  s    
zTelnet.read_somec                 C   s0   |    | js(|  r(|   |    q|  S rc   )rw   rS   
sock_availr   r   rf   r[   r[   r\   read_very_eagerd  s
    
zTelnet.read_very_eagerc                 C   s6   |    | js.| js.|  r.|   |    q|  S rc   )rw   rR   rS   r   r   r   rf   r[   r[   r\   
read_eagerr  s
    
zTelnet.read_eagerc                 C   s   |    |  S rc   )rw   r   rf   r[   r[   r\   	read_lazy  s    zTelnet.read_lazyc                 C   s(   | j }d| _ |s$| jr$| js$td|S )NrI   ztelnet connection closed)rR   rS   rP   EOFErrorr   r[   r[   r\   r     s
    zTelnet.read_very_lazyc                 C   s   | j }d| _ |S r   )rV   r   r[   r[   r\   read_sb_data  s    zTelnet.read_sb_datac                 C   s
   || _ d S rc   )rW   )rZ   callbackr[   r[   r\   set_option_negotiation_callback  s    z&Telnet.set_option_negotiation_callbackc                 C   sP  ddg}z | j r|  }| jsf|tkr,q|dkr6q|tkrV|| j | || j< qn|  j|7  _qt| jdkr$|ttt	t
fv r|  j|7  _qd| _|tkr|| j | || j< nh|tkrd| _d| _n&|tkrd| _| j|d  | _d|d< | jr| | j|t n| dt|  qt| jdkr| jdd }d| _|}|ttfv r| d|tkrndppd	t| | jr| | j|| n| jtt
 |  q|t	t
fv r| d|t	krd
pdt| | jr| | j|| q| jtt |  qW n  ty*   d| _d| _Y n0 | j|d  | _| j|d  | _d S )NrI      r   r   zIAC %d not recognizedr   z	IAC %s %dDODONTWILLWONT)rP   rawq_getcharrT   theNULLrp   rU   rv   r   r   r   r   SBrV   SErW   rO   NOOPTrk   ordrr   r   rR   )rZ   r   ccmdoptr[   r[   r\   rw     sl    zTelnet.process_rawqc                 C   sZ   | j s|   | jrt| j | j| jd  }| jd | _| jt| j krVd| _ d| _|S )Nr   rI   r   )rP   r   rS   r   rQ   rv   )rZ   r   r[   r[   r\   r     s    zTelnet.rawq_getcharc                 C   sL   | j t| jkrd| _d| _ | jd}| d| | | _| j| | _d S )NrI   r   2   zrecv %r)rQ   rv   rP   rO   recvrk   rS   r   r[   r[   r\   r     s    zTelnet.fill_rawqc                 C   sF   t  ,}|| tj t|dW  d    S 1 s80    Y  d S ru   )rz   r{   r|   r}   boolr~   )rZ   r   r[   r[   r\   r     s    zTelnet.sock_availc              
   C   s  t jdkr|   d S t }|| tj |t jtj | D ]\}}|j	| u rz| 
 }W n* ty   td Y  W d    d S 0 |rt j|d t j  qD|j	t ju rDt j d}|s W d    d S | | qDq<W d    n1 s0    Y  d S )Nwin32(*** Connection closed by remote host ***ascii)r_   platformmt_interactrz   r{   r|   r}   stdinr~   fileobjr   r   rj   stdoutrt   decodeflushreadlineencode)rZ   r   keyeventstextliner[   r[   r\   interact  s*    

zTelnet.interactc                 C   s<   dd l }|| jd tj }|s&q8| |d qd S )Nr   r[   r   )_threadstart_new_threadlistenerr_   r   r   rt   r   )rZ   r   r   r[   r[   r\   r   3  s    
zTelnet.mt_interactc                 C   sR   z|   }W n ty(   td Y d S 0 |rBtj|d q tj  q d S )Nr   r   )r   r   rj   r_   r   rt   r   r   )rZ   datar[   r[   r\   r   =  s    zTelnet.listenerc                 C   sl  d }|d d  }t t|}|D ]0}t|| ds |s>dd l}||| ||< q |d urdt | }t }|| tj	 | j
s(|   |D ]Z}|| | j}|r| }	| jd |	 }
| j|	d  | _|||
f  W  d    S q|d ur||}|t  }|s|dk rzq(nqz|   qzW d    n1 s>0    Y  |  }
|
sb| j
rbtdd |
fS )Nsearchr   )rangerv   hasattrrecompilery   rz   r{   r|   r}   rS   rw   r   rR   ri   r~   r   r   r   )rZ   listrN   r   indicesr   r   r   mer   readyr[   r[   r\   expectJ  s@    



*zTelnet.expectc                 C   s   | S rc   r[   rf   r[   r[   r\   	__enter__  s    zTelnet.__enter__c                 C   s   |    d S rc   rd   )rZ   typevalue	tracebackr[   r[   r\   __exit__  s    zTelnet.__exit__)N)N)!__name__
__module____qualname__ra   _GLOBAL_DEFAULT_TIMEOUTr]   rX   rg   rk   rm   re   rn   ro   rt   r   r   r   r   r   r   r   r   r   rw   r   r   r   r   r   r   r   r   r   r[   r[   r[   r\   r      s<   7


%
H

8c                  C   s   d} t jdd  r2t jd dkr2| d } t jd= qd}t jdd  rNt jd }d}t jdd  rt jd }zt|}W n ty   t|d}Y n0 t 2}||  |j||dd |	  W d    n1 s0    Y  d S )	Nr   r   z-d	localhostr   Ztcpg      ?)rN   )
r_   argvint
ValueErrorra   getservbynamer   rm   rX   r   )rK   rL   rM   Zportstrtnr[   r[   r\   test  s$    



r   __main__)Yr_   ra   r|   timer   ry   __all__rJ   r^   bytesrp   r   r   r   r   r   r   ZNOPZDMZBRKZIPZAOZAYTZECZELZGAr   ZBINARYZECHOZRCPZSGAZNAMSZSTATUSZTMZRCTEZNAOLZNAOPZNAOCRDZNAOHTSZNAOHTDZNAOFFDZNAOVTSZNAOVTDZNAOLFDZXASCIIZLOGOUTZBMZDETZSUPDUPZSUPDUPOUTPUTZSNDLOCZTTYPEZEORZTUIDZOUTMRKZTTYLOCZVT3270REGIMEZX3PADZNAWSZTSPEEDZLFLOWZLINEMODEZXDISPLOCZOLD_ENVIRONZAUTHENTICATIONZENCRYPTZNEW_ENVIRONZTN3270EZXAUTHCHARSETZRSPZCOM_PORT_OPTIONZSUPPRESS_LOCAL_ECHOZTLSZKERMITZSEND_URLZ	FORWARD_XZPRAGMA_LOGONZ
SSPI_LOGONZPRAGMA_HEARTBEATZEXOPLr   r   rH   rz   SelectSelectorr   r   r   r[   r[   r[   r\   <module>$   s   







































































     
