import socket
import time
HOST = 'tasks.duckerz.ru'
PORT = 30009
def probe(payload, description):
"""Отправляет payload и возвращает ответ сервера."""
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(10.0)
try:
s.connect((HOST, PORT))
# Читаем до "Send to Bob:"
data = b""
while b"Send to Bob:" not in data:
chunk = s.recv(4096)
if not chunk:
break
data += chunk
# Отправляем
s.sendall(payload)
# Читаем ответ 5 секунд
s.settimeout(5.0)
resp = b""
try:
while True:
chunk = s.recv(4096)
if not chunk:
break
resp += chunk
except socket.timeout:
pass
return resp.decode('utf-8', errors='ignore')
except Exception as e:
return f"EXCEPTION: {e}"
finally:
s.close()
# Список запросов для тестирования
probes = [
(b"\n", "Пустая строка"),
(b"{}\n", "Пустой JSON"),
(b'{"test": 1}\n', "Неизвестный ключ"),
(b'{"answer": 0}\n', "answer = 0"),
(b'{"answer": 1}\n', "answer = 1"),
(b'{"answer": "hello"}\n', "answer = строка"),
(b'{"answer": null}\n', "answer = null"),
(b'{"C": 1}\n', "C = 1"),
(b'{"B": 1}\n', "B = 1"),
(b'{"key": 1}\n', "key = 1"),
(b'{"pub": 1}\n', "pub = 1"),
(b'{"g": 1}\n', "g = 1"),
(b'{"p": 1}\n', "p = 1"),
(b'{"A": 1}\n', "A = 1"),
(b'[]\n', "Массив"),
(b'"hello"\n', "Просто строка"),
(b'12345\n', "Просто число"),
(b'garbage\n', "Мусор (не JSON)"),
(b'{"answer": 1, "extra": 2}\n', "answer + extra"),
(b'{"answer": {"nested": 1}}\n', "answer = объект"),
]
print("[*] Начинаем разведку сервера...")
print("[*] Между запросами делаем паузы 15 секунд.\n")
for payload, desc in probes:
print(f"[*] === {desc} ===")
print(f" Отправляем: {payload}")
resp = probe(payload, desc)
print(f" Ответ: {repr(resp)}\n")
# Пауза 15 секунд между запросами
time.sleep(15)
print("[*] Разведка завершена.")