Загрузка данных


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("[*] Разведка завершена.")