我目前正在创建一个基于 TCP 的反向 shell(客户端位于远程计算机上,连接到本地服务器),它既可以发送和接收文件,也可以通过 TCP 发送 shell 命令。这些程序在大多数情况下在其他方面(例如,接收和发送命令、服务器接收文件)都工作得很好,直到我尝试从服务器向客户端发送大文件(我记得大于 1 kb)为止。发生的情况是,当我尝试发送大文件时,服务器完成发送后,客户端因某种原因崩溃。我什至看不到错误消息。我尝试通过在客户端显示接收到的内容来调试它,但它似乎接收良好,但立即崩溃。我将为那些想要提供帮助的人附上客户端代码和服务器代码。该代码有点奇怪,因为我在第一次调试期间添加了一些“标志”。谢谢。
服务器代码:
import socket, pickle, time, os
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
address = 'localhost'
port = 1024
server.bind((address, port))
server.listen(5)
c, addr = server.accept()
file_list = {}
print'connection from: '+str(addr)
print'remote shell can only be used for utility purpose, when switching dirve, use "//" between cd and address'
os.chdir("C:/Users/Insert_Name/Desktop/Server")
while True:
command = raw_input(str(addr)+'>>')
if command == 't':
c.send(command)
cile_list = c.recv(1024)
cile_lista = pickle.loads(cile_list)
for key, value in cile_lista.iteritems():
if …Run Code Online (Sandbox Code Playgroud)