使用我的程序,我试图使用socket.socket()连接到一个IP地址,当它连接到捕获一些莫尔斯代码时,解码它,然后通过带套接字的套接字推回答案。全部发送()。我有它所以我可以连接到IP地址,解码消息,甚至发回我的答案,但当我发回答案时,它说它是错的,即使我知道事实并非如此。我想知道是否可能,当我发回我的答案时,如果我在它周围发回一套额外的引号或什么?任何帮助将不胜感激。
import socket
def morse(code):
decoded = []
CODE = [['.-', 'A'],['-...', 'B'],['-.-.', 'C'],['-..', 'D'],['.', 'E'],['..-.', 'F'],['--.', 'G'],['....', 'H'],['..', 'I'],['.---', 'J'],['-.-', 'K'],['.-..', 'L'],['--', 'M'],['-.', 'N'],['---', 'O'],['.--.', 'P'],['--.-', 'Q'],['.-.', 'R'],['...', 'S'],['-', 'T'],['..-', 'U'],['...-', 'V'],['.--', 'W'],['-..-', 'X'],['-.--', 'Y'],['--..', 'A']]
for i in CODE:
if i[0] == code:
decoded.append(i[1].lower())
if code == '':
decoded.append('.')
return decoded
def netcat(hostname, port, content):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((hostname, port))
while 1:
data = s.recv(1024)
if data == "":
break
if "text:" in repr(data):
s.sendall(content)
print("Received:", repr(data))
if "-" in repr(data):
splitMorse = repr(data).split(' ')
splitMorse = splitMorse[8:len(splitMorse)-2]
decoded = []
for i in splitMorse:
decoded.extend(morse(i))
strDecoded = ''.join(decoded)
strDecoded = strDecoded.replace("....................................................", " ")
print("{}\n".format(strDecoded))
#HERE IS WHERE I AM SENDING THE STRING BACK
print(s.sendall("{}\n".format(strDecoded)))
print("Connection closed.")
s.shutdown(socket.SHUT_WR)
s.close()
content = "GET\n"
netcat('146.148.102.236', 24069, content)
在我的字符串通过套接字发送结束时,我添加了一个“\ n”,因为否则它将不会接受我的字符串并且它将永远坐在那里(因为你必须在输入后按Enter键。这是我的输出:
('Received:', "'------------------------------------------\\nWelcome to
The Neverending Crypto!\\nQuick, find Falkor and get through this!\\nThis
is level 1, the Bookstore\\nRound 1. Give me some text:'")
None
('Received:', "'GET encrypted is --. . - \\nWhat is ..-. .-. .- --. -- .
-. - .- - .. --- -. decrypted?\\n:'")
fragmentation
None
('Received:', "'No... I am leaving.\\n'")
Connection closed.
答案 0 :(得分:0)
我认为你的逻辑存在缺陷。第一封邮件包含text:
,其中还包含-
。我想你想要elif
作为你的决赛。
对于if
中的netcat()
语句序列,请尝试以下操作:
if data == "":
break
print("Received:", repr(data))
if "text:" in repr(data):
...
elif "-" in repr(data):
...