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()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。