发送第二个 TCP 消息在服务器端没有得到 recognized/no 反应,netcat 工作正常
Sending second TCP message doesn't get recognized/no reaction on serverside, with netcat works fine
这是一个 CTF 准备任务,可以在 https://rookies.fluxfingers.net/code.php?p=chal&id=142 上找到。
任务是计算所有偶数之和-所有奇数之和。
我解决了这个问题,但是当向服务器发送应答消息时,它没有用标志.
响应
但是使用 nc rkchals.fluxfingers.net 5002 可以发送第二条消息 。
我的代码:
import socket
import re
#connection establishing
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("rkchals.fluxfingers.net",5002))
message = str(s.recv(3000))
#data processing
numbers= re.findall("\d+",message)
uneven_numbers=list()
even_numbers = list()
for i in numbers:
if(int(i)%2==0):
even_numbers.append(int(i))
else:
uneven_numbers.append(int(i))
answer = sum(even_numbers)-sum(uneven_numbers)
#log
print("server says: " + message + "\n")
print("numberarray is: " + str(numbers) + "\n")
print("even numbers are: " + str(even_numbers) + "\n")
print("odd numbers are: " + str(uneven_numbers) + "\n")
print("sum of even - sum of odd: " + str(answer) + "\n")
#sending the answer as string to get the flag
s.sendall(bytes(str(answer),"utf-8"))
print("flag is: " + str(s.recv(1024)))
最后当我发送答案时服务器忽略它(?),因为最后一个命令应该给我标志作为答案 之前发送答案的结果。
我应该更改什么以便服务器可以接收我的第二条消息?
我试过:
超时(?)
我知识匮乏,在这里找不到答案。
因为服务器应用程序需要一个 Enter,所以我只是将其添加到我的代码中:
s.sendall(bytes(str(answer) + "\n","utf-8"))
然后服务器正常响应标志。
这是一个 CTF 准备任务,可以在 https://rookies.fluxfingers.net/code.php?p=chal&id=142 上找到。
任务是计算所有偶数之和-所有奇数之和。
我解决了这个问题,但是当向服务器发送应答消息时,它没有用标志.
响应但是使用 nc rkchals.fluxfingers.net 5002 可以发送第二条消息 。 我的代码:
import socket
import re
#connection establishing
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("rkchals.fluxfingers.net",5002))
message = str(s.recv(3000))
#data processing
numbers= re.findall("\d+",message)
uneven_numbers=list()
even_numbers = list()
for i in numbers:
if(int(i)%2==0):
even_numbers.append(int(i))
else:
uneven_numbers.append(int(i))
answer = sum(even_numbers)-sum(uneven_numbers)
#log
print("server says: " + message + "\n")
print("numberarray is: " + str(numbers) + "\n")
print("even numbers are: " + str(even_numbers) + "\n")
print("odd numbers are: " + str(uneven_numbers) + "\n")
print("sum of even - sum of odd: " + str(answer) + "\n")
#sending the answer as string to get the flag
s.sendall(bytes(str(answer),"utf-8"))
print("flag is: " + str(s.recv(1024)))
最后当我发送答案时服务器忽略它(?),因为最后一个命令应该给我标志作为答案 之前发送答案的结果。
我应该更改什么以便服务器可以接收我的第二条消息?
我试过: 超时(?)
我知识匮乏,在这里找不到答案。
因为服务器应用程序需要一个 Enter,所以我只是将其添加到我的代码中:
s.sendall(bytes(str(answer) + "\n","utf-8"))
然后服务器正常响应标志。