python - 我错过了什么?Python 套接字问题
问题描述
我正在尝试编写一个客户端/服务器python3
工具,它将来自多个客户端的数据转发到另一个目的地,加上双向通信,将数据(从一种方式)拆分为特定的字节块,彼此之间存在延迟。到目前为止,我实现了它,但有一些问题到最后我无法解决,我也不明白。我不是编程专家,所以我来这里寻求帮助!
到目前为止一切正常。 我正在使用 ncat,因为我需要它来使用该工具
第一个问题:如果我得到一个反向 shell,并输入一些引发错误的内容,套接字将不再响应。Ncat 无法正确处理 sterr,但我找到了解决问题的解决方法。事实是,解决方法在这种情况下不起作用:
第二个也是最后一个问题:如果我使用由 Ncat 提供和处理的加密,流量甚至不会转发到 ncat 服务器:
谁能如此温柔地帮助我修复代码?这是代码:
import socket
import os
import time
import sys
import ssl
from _thread import *
from scapy.all import *
from time import sleep
ServerSocket = socket.socket()
ServerSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
host = '127.0.0.1'
port = 1233
ThreadCount = 0
try:
ServerSocket.bind((host, port))
except socket.error as e:
print(str(e))
print('Waitiing for a Connection..')
ServerSocket.listen(5)
def chunks(lst, n):
"Yield successive n-sized chunks from lst"
for i in range(0, len(lst), n):
yield lst[i:i+n]
def threaded_client(connection):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ss=StreamSocket(s,Raw)
s.connect(("127.0.0.1", 10000))
while True:
ritorno = s.recv(2048)
connection.send(ritorno)
print(len(ritorno))
data = connection.recv(2048)
print(len(data))
for chunk in chunks(data, 70):
time.sleep(2)
ss.send(Raw(chunk) )
if not ritorno:
break
if not data:
break
s.close()
connection.close()
print("close")
while True:
Client, address = ServerSocket.accept()
print('Connected to: ' + address[0] + ':' + str(address[1]))
start_new_thread(threaded_client, (Client, ))
ThreadCount += 1
print('Thread Number: ' + str(ThreadCount))
ServerSocket.close()
解决方案
推荐阅读
- asp.net - 如何在 ASP.NET CORE 2 中处理更新中的空文件上传
- android - 数据绑定不为某些变量生成方法
- mysql - Flutter dart 不是常量表达式,意外的内核标记错误
- node.js - 私有 Linux 主机上的 Node.js 应用程序
- java - 如何将参数传递给已经运行的 java 程序
- regex - 如何在 RegEx 下方放置条件?
- c++ - 0xC0000005:访问冲突读取位置0x0000000000000008
- android - 有没有办法从谷歌地图中删除图标和标签,并为地点添加自定义图标和标签?
- admin-on-rest - 如何在 Edit 中提供自定义重定向到 SimpleForm?
- c# - 在一个命令中创建多个 sql 查询