本文实例为大家分享了python简易远程控制的具体代码,供大家参考,具体内容如下
1. 技术:管道通信,流文件处理,socket基础
2. Tips:
默认IP:127.0.0.1
默认端口:7676
3. 代码样例:
服务端:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
#!/usr/bin/env python # encoding: utf-8 import socket import sys from os import * reload (sys) sys.setdefaultencoding( "utf-8" ) def socketInit(): s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) return s def socketDeal(s,HOST,PORT): s.bind((HOST,PORT)) s.listen( 1 ) def ControlModule(sS,addr): recv_buffer = sS.recv( 20048 ) if recv_buffer = = "[-]Error:Server is OFF" or recv_buffer = = "[*]Server is OFF" : print recv_buffer sys.exit( 0 ) else : print recv_buffer send_buf = raw_input (addr[ 0 ] + ">" ) sS.send(send_buf) def main(): HOST = "127.0.0.1" PORT = 7676 s = socketInit() socketDeal(s, HOST, PORT) sS,addr = s.accept() print "Connect from " + addr[ 0 ] + ":" + repr (addr[ 1 ]) try : while True : ControlModule(sS,addr) except Exception as e: print "[-]Connect Error" sS.close() s.close() sys.exit( - 1 ) except KeyboardInterrupt: sS.close() s.close() sys.exit( 0 ) if __name__ = = '__main__' : main() |
受控端:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
#!/usr/bin/env python # encoding: utf-8 import socket import sys import re import traceback import tempfile from os import * from subprocess import * reload (sys) sys.setdefaultencoding( "utf-8" ) def socketInit(): s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) return s def socketConn(s,HOST,PORT): while True : try : s.connect((HOST,PORT)) except Exception as e: continue else : s.send( "Welcome Sir ~" ) break def String_Deal(recv,send): P_str = re.findall( "cd(.*)|(\w):" , recv) if P_str! = [] and send = = "": if P_str[ 0 ][ 0 ]! = "": try : chdir(P_str[ 0 ][ 0 ].strip()) except Exception as e: flag = - 1 else : flag = 1 else : try : chdir(recv) except Exception as e: #traceback.print_exc() flag = - 1 else : flag = 1 else : if send = = "": flag = 1 else : flag = 0 return flag def OpenProcess(s): try : while True : 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() #print len(send_buf) #输入命令字符串处理识别 flag = String_Deal(recv_buf,send_buf) if flag = = 1 : s.send( "OK" ) elif flag = = - 1 : s.send( "Error!!" ) else : s.send(send_buf) send_buf = "" except Exception as e: try : s.send( "[-]Error:Server is OFF" ) except Exception as e: pass s.close() sys.exit( - 1 ) except KeyboardInterrupt: try : s.send( "[*]Server is OFF" ) except Exception as e: pass s.close() sys.exit( 0 ) def main(): flag = 0 HOST = "127.0.0.1" PORT = 7676 s = socketInit() socketConn(s, HOST, PORT) OpenProcess(s) if __name__ = = '__main__' : main() |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/PeterZ1997/article/details/78231533