Spamworldpro Mini Shell
Spamworldpro


Server : Apache/2.4.52 (Ubuntu)
System : Linux webserver 6.8.0-49-generic #49~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Nov 6 17:42:15 UTC 2 x86_64
User : www-data ( 33)
PHP Version : 8.1.2-1ubuntu2.21
Disable Function : NONE
Directory :  /lib/python3/dist-packages/twisted/conch/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python3/dist-packages/twisted/conch/__pycache__/unix.cpython-310.pyc
o

�b�@�@s�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
Z
ddlmZddlmZddlmZmZmZddlmZdd	lmZmZmZdd
lmZmZmZm Z m!Z!m"Z"ddl#m$Z$ddl%m&Z&dd
l'm(Z(ddl)m*Z*ddl+m,Z,zddl-Z-Wne.y�dZ-Ynwee$j/�Gdd�d��Z0Gdd�de�Z1ee�Gdd�d��Z2ee�Gdd�d��Z3ee�Gdd�d��Z4Gdd�d�Z5e*�6e3e1ej�e*�6e2e1ej�dS)z
A UNIX SSH server.
�N)�implementer)�ttymodes)�	ConchUser)�
ConchError)�ISession�	ISFTPFile�ISFTPServer)�lsLine)�filetransfer�
forwarding�session)�
FXF_APPEND�	FXF_CREAT�FXF_EXCL�FXF_READ�	FXF_TRUNC�	FXF_WRITE)�portal)�ProcessExitedAlready)�Logger)�
components)�nativeStringc@seZdZdd�ZdS)�UnixSSHRealmcGst|�}|d||jfS�Nr)�
UnixConchUser�logout)�self�username�mind�
interfaces�user�r!�4/usr/lib/python3/dist-packages/twisted/conch/unix.py�
requestAvatar0szUnixSSHRealm.requestAvatarN)�__name__�
__module__�__qualname__r#r!r!r!r"r.src@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)rcCs�t�|�||_t�|j�|_|jdg}t��D]\}}}}||vr(|�|�q||_	i|_
|j�t
jtjd��|j�dtji�dS)N�)ssessionsdirect-tcpipssftp)r�__init__r�pwd�getpwnam�pwdData�grp�getgrall�append�otherGroups�	listeners�
channelLookup�updater�
SSHSessionr�openConnectForwardingClient�subsystemLookupr
�FileTransferServer)rr�l�	groupname�password�gid�userlistr!r!r"r(6s 

���zUnixConchUser.__init__cCs|jdd�S)N���r+�rr!r!r"�getUserGroupIdIszUnixConchUser.getUserGroupIdcCs|jS�N)r/r?r!r!r"�getOtherGroupsLszUnixConchUser.getOtherGroupscC�
|jdS)N�r>r?r!r!r"�
getHomeDirO�
zUnixConchUser.getHomeDircCrC)N�r>r?r!r!r"�getShellRrFzUnixConchUser.getShellcCs�t�|�\}}ddlm}z|j|j|t�|j||ftj�|d�}Wn
t	y,YdSw||j
||f<|dkrF|��d}dt�
d|�fSdS)Nr��reactor)�	interfacer<�z>L)r�unpackGlobal_tcpip_forward�twisted.internetrJ�
_runAsUser�	listenTCP�SSHListenForwardingFactory�conn� SSHListenServerForwardingChannel�
BaseExceptionr0�getHost�struct�pack)r�data�
hostToBind�
portToBindrJ�listenerr!r!r"�global_tcpip_forwardUs*�
�
�z"UnixConchUser.global_tcpip_forwardcCsDt�|�\}}|j�||fd�}|sdS|j||f=|�|j�dS)NrrL)rrMr0�getrO�
stopListening)rrXrYrZr[r!r!r"�global_cancel_tcpip_forwardnsz)UnixConchUser.global_cancel_tcpip_forwardcCs:|j��D]}|�|j�q|jjd|jt|j�d�dS)Nz,avatar {username} logging out ({nlisteners}))r�
nlisteners)r0�valuesrOr^�_log�infor�len)rr[r!r!r"rws
�zUnixConchUser.logoutc	OsDt��}t��}t��}|��\}}t�d�t�d�t�|���t�|�t�|�zt	|�}Wnt
yB|||fg}YnwzD|D]%}	|	d}
t|	�dkrV|	dpWd}t|	�dkrb|	dpci}|
|i|��}qFWt�d�t�d�t�|�t�|�t�|�|St�d�t�d�t�|�t�|�t�|�w)NrrLr!r<)�os�geteuid�getegid�	getgroupsr@�setegid�seteuid�	setgroupsrB�iter�	TypeErrorrd)r�f�args�kw�euid�egid�groups�uidr:�i�func�rr!r!r"rO�s@



��





�


zUnixConchUser._runAsUserN)r$r%r&r(r@rBrErHr\r_rrOr!r!r!r"r5s	
rc@sneZdZe�Zddd�Zddd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�SSHSessionForUnixConchUserNcCs:|dur
ddlm}||_||_ddi|_d|_d|_dS)a
        Construct an C{SSHSessionForUnixConchUser}.

        @param avatar: The L{UnixConchUser} for whom this is an SSH session.
        @param reactor: An L{IReactorProcess} used to handle shell and exec
            requests. Uses the default reactor if None.
        NrrI�PATHz/bin:/usr/bin:/usr/local/bin)rNrJ�_reactor�avatar�environ�pty�ptyTuple)rr{rJr!r!r"r(�s

z#SSHSessionForUnixConchUser.__init__rLcCstsdS|jjjj��j}t�dt�	|��\}|j
ddd�}t��}t|�}t||d�}t�
�}|r9tjp;tj|_|jj|_||_|dd�|_||f|_|rg|jj|_t�|�d|_|dddf|_t�tj�}	|	�|�|	��t�tj �}
|
�|�|
��dS)N�Lr<rDg��.A���r)!�utmpr{rR�	transport�getPeer�hostrV�unpack�socket�	inet_atonr~�time�int�	UtmpEntry�USER_PROCESS�DEAD_PROCESS�ut_typer}�pid�ut_pid�ut_line�ut_id�ut_tvr�ut_user�
gethostbyaddr�ut_host�
ut_addr_v6�
UtmpRecord�	UTMP_FILE�	pututline�endutent�	WTMP_FILE)r�loggedIn�	ipAddress�packedIp�ttyName�t�t1�t2�entry�a�br!r!r"�addUTMPEntry�s0




z'SSHSessionForUnixConchUser.addUTMPEntrycCsF||jd<||_||_t��\}}t�|�}||jd<|||f|_dS)N�TERM�SSH_TTY)r|�winSize�modesr}�openptyre�ttynamer~)r�term�
windowSizer��master�slaver�r!r!r"�getPty�s


z!SSHSessionForUnixConchUser.getPtyc	
CsB|js
|j�d�td��|j��\}}|j��}|j��}|jj|j	d<||j	d<||j	d<t
j�|�}|jj
jj��}|jj
jj��}|j�d|j�d|j��|j	d<|��|jj||d|��g|j	||||jd	�|_|��t�|j��tjtjd
g|j�R��|j r�|�!�|jj"|_#|j$|j_"|jj
jj�%d�dS)Nz'tried to get shell without pty, failingzno pty�USER�HOME�SHELL� �
SSH_CLIENT�-��usePTY�4HrL)&r~rb�errorrr{r@rErHrr|re�path�basenamerRr�r�rUr��port�getPtyOwnershiprz�spawnProcessr}r��fcntl�ioctl�fileno�tty�
TIOCSWINSZrVrWr�r��setModes�write�oldWrite�
_writeHack�
setTcpNoDelay)	r�protortr:�homeDir�shell�	shellExec�peerr�r!r!r"�	openShell�s>



 
�
&

z$SSHSessionForUnixConchUser.openShellc

Cs�|j��\}}|j��}|j��pd}||jd<|d|f}|jjjj��}|jjjj��}	|j	�d|j
�d|	j
��|jd<|jrD|��|j
j||||j||||jpSdd�|_|jre|��|jre|��|jjjj�d�dS)	Nz/bin/shr�z-cr�r�rr�rL)r{r@rErHr|rRr�r�rUr�r�r~r�rzr�r}r�r�r�r�)
rr��cmdrtr:r�r��commandr�r�r!r!r"�execCommand�s2


 �
z&SSHSessionForUnixConchUser.execCommandc	Cs�t�|jd�d}|j��\}}t��t��}}t�d�t�d�zt�	|jd||�Wt�|�t�|�dSt�|�t�|�w)Nr<rDr)
re�statr~r{r@rfrgrirj�chown)r�ttyGidrtr:rqrrr!r!r"r�s



�z*SSHSessionForUnixConchUser.getPtyOwnershipc	Cs|j}t�|���}|jD]n\}}|tjvrq
tj|}t|�dkrF|\}}tt|�s,q
t	t|�}|r<|||B||<q
|||@||<q
|dkrVt	td|���|tj
<q
|dkrft	td|���|tj<q
tt|�slq
t	t|�}t|f�|tj
|<q
t�|��tj|�dS)Nr<�OSPEED�B�ISPEED)r}r��	tcgetattrr�r�r�TTYMODESrd�hasattr�getattrr�r��bytes�CC�	tcsetattr�TCSANOW)	rr}�attr�mode�	modeValue�ttyMode�flag�ttyAttr�ttyvalr!r!r"r�s.





z#SSHSessionForUnixConchUser.setModescCs|jr
|j��dSdSrA)r}�
closeStdinr?r!r!r"�eofReceived8s�z&SSHSessionForUnixConchUser.eofReceivedc	Cs�|jr tj�|jd�r t�|jd�d}t�|jdd|�|jrAz|j�d�Wntt	fy6Ynw|j�
�|�d�|j�
d�dS)Nr<rDr�HUPzshell closed)r~rer��existsr�r�r}�
signalProcess�OSErrorr�loseConnectionr�rbrc)r�ttyGIDr!r!r"�closed<s�

z!SSHSessionForUnixConchUser.closedcCs0||_t�|j��tjtjdg|j�R��dS)Nr�)	r�r�r�r}r�r�r�rVrW)rr�r!r!r"�
windowChangedIs*z(SSHSessionForUnixConchUser.windowChangedcCs\|jdur't�|j���d}|tj@s'|tj@r'|jjj�	ddt
|��|�|�dS)zF
        Hack to send ignore messages when we aren't echoing.
        Nr'��)r}r�r�r��ECHO�ICANONr{rRr��
sendIgnorerdr�)rrXr�r!r!r"r�Ms

z%SSHSessionForUnixConchUser._writeHackrA)rL)r$r%r&rrbr(r�r�r�r�r�r�r�r�r�r�r!r!r!r"rx�s

	!
rxc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#S)$�SFTPServerForUnixConchUsercCs
||_dSrA)r{)rr{r!r!r"r(ZrFz#SFTPServerForUnixConchUser.__init__cCsrd|vrd|vrt�||d|d�d|vrt�||d�d|vr5d|vr7t�||d|df�dSdSdS)zl
        NOTE: this function assumes it runs as the logged-in user:
        i.e. under _runAsUser()
        rtr:�permissions�atime�mtimeN)rer��chmod�utime�rr��attrsr!r!r"�	_setAttrs]s�z$SFTPServerForUnixConchUser._setAttrscCs&|j|j|j|jt|j�t|j�d�S)N)�sizertr:r�r�r�)�st_size�st_uid�st_gid�st_moder��st_atime�st_mtime�r�sr!r!r"�	_getAttrsis�z$SFTPServerForUnixConchUser._getAttrscCs"|j��}tj�t|j�t|��SrA)r{rErer��joinr)rr��homer!r!r"�_absPathss
z#SFTPServerForUnixConchUser._absPathcCsiSrAr!)r�otherVersion�extDatar!r!r"�
gotVersionw�z%SFTPServerForUnixConchUser.gotVersioncCst||�|�||�SrA)�UnixSFTPFiler
)r�filename�flagsr�r!r!r"�openFilez�z#SFTPServerForUnixConchUser.openFilecC�|�|�}|j�tj|�SrA)r
r{rOre�remove)rrr!r!r"�
removeFile}�
z%SFTPServerForUnixConchUser.removeFilecCs&|�|�}|�|�}|j�tj||�SrA)r
r{rOre�rename)r�oldpath�newpathr!r!r"�
renameFile��

z%SFTPServerForUnixConchUser.renameFilecCs,|�|�}|j�tj|ff|j||ffg�SrA)r
r{rOre�mkdirrr�r!r!r"�
makeDirectory�s
�z(SFTPServerForUnixConchUser.makeDirectorycCs|�|�}|j�tj|�dSrA)r
r{rOre�rmdir�rr�r!r!r"�removeDirectory�s
z*SFTPServerForUnixConchUser.removeDirectorycCst||�|��SrA)�UnixSFTPDirectoryr
r#r!r!r"�
openDirectory�sz(SFTPServerForUnixConchUser.openDirectorycCs:|�|�}|r|j�tj|�}n|j�tj|�}|�|�SrA)r
r{rOrer��lstatr
)rr��followLinksr	r!r!r"�getAttrs�s


z#SFTPServerForUnixConchUser.getAttrscCs |�|�}|j�|j||�dSrA)r
r{rOrr�r!r!r"�setAttrs�s
z#SFTPServerForUnixConchUser.setAttrscCrrA)r
r{rOre�readlinkr#r!r!r"�readLink�rz#SFTPServerForUnixConchUser.readLinkcCs&|�|�}|�|�}|j�tj||�SrA)r
r{rOre�symlink)r�linkPath�
targetPathr!r!r"�makeLink�rz#SFTPServerForUnixConchUser.makeLinkcCstj�|�|��SrA)rer��realpathr
r#r!r!r"�realPath�sz#SFTPServerForUnixConchUser.realPathcC�t�rA��NotImplementedError)r�extNamerr!r!r"�extendedRequest�rz*SFTPServerForUnixConchUser.extendedRequestN)r$r%r&r(rr
r
rrrrr!r$r&r)r*r,r0r2r7r!r!r!r"r�Xs$
r�c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)rcCs||_d}|t@tkr|t@dkrtj}|t@tkr#|t@dkr#tj}|t@tkr2|t@tkr2tj}|t@tkr=|tjO}|t	@t	krH|tj
O}|t@tkrS|tjO}|t
@t
kr^|tjO}d|vrj|d}|d=nd}|j�tj|||�}|r�|j�|j||�||_dS)Nrr�i�)�serverrrre�O_RDONLY�O_WRONLY�O_RDWRr
�O_APPENDr�O_CREATr�O_TRUNCr�O_EXCLr{rO�openr�fd)rr8rrr��	openFlagsr�rAr!r!r"r(�s0




zUnixSFTPFile.__init__cCs|jj�tj|j�SrA)r8r{rOre�closerAr?r!r!r"rC�rzUnixSFTPFile.closecC�,|jj�tj|j|dfftj|j|ffg�Sr)r8r{rOre�lseekrA�read)r�offset�lengthr!r!r"�	readChunk�� �zUnixSFTPFile.readChunkcCrDr)r8r{rOrerErAr�)rrGrXr!r!r"�
writeChunk�rJzUnixSFTPFile.writeChunkcCs |jj�tj|j�}|j�|�SrA)r8r{rOre�fstatrAr
rr!r!r"r)�szUnixSFTPFile.getAttrscCr3rAr4)rr�r!r!r"r*�rzUnixSFTPFile.setAttrsN)	r$r%r&r(rCrIrKr)r*r!r!r!r"r�src@s0eZdZdd�Zdd�Zdd�ZeZdd�Zd	S)
r%cCs"||_|j�tj|�|_||_dSrA)r8r{rOre�listdir�files�dir)rr8�	directoryr!r!r"r(�s
zUnixSFTPDirectory.__init__cCs|SrAr!r?r!r!r"�__iter__�rzUnixSFTPDirectory.__iter__cCsbz|j�d�}Wn	tyt�w|jj�tjtj	�
|j|��}t||�}|j�
|�}|||fSr)rN�pop�
IndexError�
StopIterationr8r{rOrer'r�rrOr	r
)rrnr	�longnamer�r!r!r"�__next__�s�

zUnixSFTPDirectory.__next__cCs
g|_dSrA)rNr?r!r!r"rC�rFzUnixSFTPDirectory.closeN)r$r%r&r(rQrV�nextrCr!r!r!r"r%�sr%)7�__doc__r�r,rer}r)r�rVr�r��zope.interfacer�
twisted.conchr�twisted.conch.avatarr�twisted.conch.errorr�twisted.conch.interfacesrrr�twisted.conch.lsr	�twisted.conch.sshr
rr�twisted.conch.ssh.filetransferr
rrrrr�twisted.credr�twisted.internet.errorr�twisted.loggerr�twisted.pythonr�twisted.python.compatrr��ImportError�IRealmrrrxr�rr%�registerAdapterr!r!r!r"�<module>sV �i:V1�

Spamworldpro Mini