Table des matières
Description
Le but est de communiqué en morse avec netcat.
La consigne : Dites FLAG et vous l’aurez.
Solution
Avec l’appel netcat sur console il y a ceci :
$ nc localhost 4000
--.- ..- . ...- --- ..- .-.. . --.. ...- --- ..- ...
Une fois l’algo de décodage fait, plus qu’à coder la réponse :
import subprocess
alpha_morse = dict(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='-.--', Z='--..')
def netcat2(host, port, res):
command = ["nc", host, str(port)]
server_process = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
message = server_process.stdout.readline().strip().decode()
print("Received:", message)
response = to_morse(res)
print('response :', response)
server_process.stdin.write((response+"\n").encode())
server_process.stdin.flush()
message = server_process.stdout.readline().strip().decode()
message = server_process.stdout.readline().strip().decode()
print("Received:", message)
server_process.stdin.close()
server_process.stdout.close()
server_process.stderr.close()
def to_morse(txt):
res = ""
for l in txt:
if l == ' ':
res+=' '
continue
res+= alpha_morse[l]
return res
def to_letter(morse):
res=""
for m in morse.split(' '):
if m == " ":
res+=' '
continue
res+=list(alpha_morse.keys())[list(alpha_morse.values()).index(m)]
return res
print(to_letter("--.- ..- . ...- --- ..- .-.. . --.. ...- --- ..- ..."))
netcat2("localhost", "4000", "F L A G")