python代码tcp连接百度_Python套接字TCP连接大小限制?

我目前正在创建一个基于TCP的反向shell(客户端在远程计算机上,连接到本地服务器),它既可以发送文件,也可以通过TCP发送shell命令。

这些程序在其他方面(例如,接收和发送命令,服务器接收文件)运行良好,直到我尝试从服务器向客户端发送大文件(我记得大于1kb)。

当我试图发送大文件时,在服务器完成发送后,客户端由于某种原因崩溃。我甚至看不到错误信息。我试图通过在客户端显示接收到的内容来调试它,但它似乎接收良好,但立即崩溃。

我会附上客户机代码和服务器代码,为那些想要帮助。代码有点奇怪,因为我在第一次调试时添加了一些“标志”。谢谢您。在

服务器代码: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 'Downloads' in key:

a, sep, b = key.partition('/Downloads/')

if 'Documents' in key:

a, sep, b = key.partition('/Documents/')

if 'JAVA' in key:

a, sep, b = key.partition('/JAVA_BACKUP/')

output = open(b, 'wb')

content = c.recv(value)

output.write(content)

output.close()

print'file transfer complete'

if command == 'a':

c.send(command)

print'enter T to indicate file list complete'

patha = raw_input('Enter file path(must be in server directory, aka Server): ')

while patha != 'T':

try:

f = open(patha,'rb')

f.close()

size = os.path.getsize(patha)

a, sep, b = str(size).partition('L')

file_list[patha] = int(a)

except:

print'invalid file name'

patha = raw_input('Enter file path(must be in server directory): ')

if len(file_list) == 0:

c.send(pickle.dumps({'0.txt':0}))

else:

file_lista = pickle.dumps(file_list)

c.send(file_lista)

print file_list

for file in file_list:

os.chdir("C:/Users/Insert_Name/Desktop/Server")

content = open(file, 'rb')

content = content.read()

c.send(content)

file_list.clear()

if command != 't':

if command != 'a':

if 'start' in command:

c.send(command)

else:

c.send(command)

if '//' in command:

a, sep, b = command.partition('//')

c.send(b)

feedback = c.recv(1024)

print feedback

while True:

feedback = c.recv(1024)

if '_DONE_' in feedback:

a, sep, b = feedback.partition('_SEP_')

print a

break

print feedback

客户代码:

^{pr2}$

问题只是文件传输。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值