python简易远程控制单线程版
本文实例为大家分享了python简易远程控制的具体代码,供大家参考,具体内容如下
1.技术:管道通信,流文件处理,socket基础
2.Tips:
默认IP:127.0.0.1
默认端口:7676
3.代码样例:
服务端:
#!/usr/bin/envpython
#encoding:utf-8
importsocket
importsys
fromosimport*
reload(sys)
sys.setdefaultencoding("utf-8")
defsocketInit():
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
returns
defsocketDeal(s,HOST,PORT):
s.bind((HOST,PORT))
s.listen(1)
defControlModule(sS,addr):
recv_buffer=sS.recv(20048)
ifrecv_buffer=="[-]Error:ServerisOFF"orrecv_buffer=="[*]ServerisOFF":
printrecv_buffer
sys.exit(0)
else:
printrecv_buffer
send_buf=raw_input(addr[0]+">")
sS.send(send_buf)
defmain():
HOST="127.0.0.1"
PORT=7676
s=socketInit()
socketDeal(s,HOST,PORT)
sS,addr=s.accept()
print"Connectfrom"+addr[0]+":"+repr(addr[1])
try:
whileTrue:
ControlModule(sS,addr)
exceptExceptionase:
print"[-]ConnectError"
sS.close()
s.close()
sys.exit(-1)
exceptKeyboardInterrupt:
sS.close()
s.close()
sys.exit(0)
if__name__=='__main__':
main()
受控端:
#!/usr/bin/envpython
#encoding:utf-8
importsocket
importsys
importre
importtraceback
importtempfile
fromosimport*
fromsubprocessimport*
reload(sys)
sys.setdefaultencoding("utf-8")
defsocketInit():
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
returns
defsocketConn(s,HOST,PORT):
whileTrue:
try:
s.connect((HOST,PORT))
exceptExceptionase:
continue
else:
s.send("WelcomeSir~")
break
defString_Deal(recv,send):
P_str=re.findall("cd(.*)|(\w):",recv)
ifP_str!=[]andsend=="":
ifP_str[0][0]!="":
try:
chdir(P_str[0][0].strip())
exceptExceptionase:
flag=-1
else:
flag=1
else:
try:
chdir(recv)
exceptExceptionase:
#traceback.print_exc()
flag=-1
else:
flag=1
else:
ifsend=="":
flag=1
else:
flag=0
returnflag
defOpenProcess(s):
try:
whileTrue:
recv_buf=s.recv(2048)
#流文件技术,防止管道阻塞
out_temp=tempfile.SpooledTemporaryFile(bufsize=10*1000)
fileNo=out_temp.fileno()
cmd=Popen(recv_buf,shell=True,stdin=PIPE,stdout=fileNo,stderr=STDOUT)
cmd.wait()
out_temp.seek(0)
send_buf=out_temp.read()
#printlen(send_buf)
#输入命令字符串处理识别
flag=String_Deal(recv_buf,send_buf)
ifflag==1:
s.send("OK")
elifflag==-1:
s.send("Error!!")
else:
s.send(send_buf)
send_buf=""
exceptExceptionase:
try:
s.send("[-]Error:ServerisOFF")
exceptExceptionase:
pass
s.close()
sys.exit(-1)
exceptKeyboardInterrupt:
try:
s.send("[*]ServerisOFF")
exceptExceptionase:
pass
s.close()
sys.exit(0)
defmain():
flag=0
HOST="127.0.0.1"
PORT=7676
s=socketInit()
socketConn(s,HOST,PORT)
OpenProcess(s)
if__name__=='__main__':
main()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。