Portscanner, создающий возможную ошибку

Я написал простой портвектор в python. Я уже кое-что спросил об этом, здесь вы можете найти код.

Я исправил код и теперь могу создать соединение, например, stackoverflow.net

Но вывод, который я получаю, более или менее загадочен для меня:

[+] Scan results for: li547-15.members.linode.com , 198.74.50.15 [+]80/tcpopen [+] b'HTTP/1.1 400 Bad Request\r\nDate: Sat, 09 Sep 2017 18:16:50 GMT\r\nServer: Apache/2.4.7 (Ubuntu)\r\nConten' 

Я хочу понять, что означает последняя строка (первые из них мне очень понятны). Кажется, это ответ сервера, но что означает этот «плохой запрос»?

    One Solution collect form web for “Portscanner, создающий возможную ошибку”

    Ссылочный скрипт

    • устанавливает соединение с портом назначения
    • отправляет строку 'ExploitMessage\r\n' по проводу и
    • читает на большинстве 100 октетов с сервера.

    Учитывая, что порт 80 зарезервирован для HTTP , кажется безопасным предположить, что на этом сервере есть сервер, говорящий на этом протоколе.

    Ну, правильные HTTP-запросы начинаются с строки запроса формы:

     request-line = method SP request-target SP HTTP-version CRLF 

    'ExploitMessage\r\n' не соответствует этому, поэтому сервер следует RFC:

    Получателям недействительной строки запроса ДОЛЖЕН отвечать либо с ошибкой 400 ( неверный запрос ), либо с переадресацией 301 (перемещенный на постоянной основе) с правильной кодировкой запроса-цели

    То, что вы возвращаете, соответствует усеченному HTTP-ответу, сигнализирующему об ошибке:

     HTTP/1.1 400 Bad Request Date: Sat, 09 Sep 2017 18:16:50 GMT Server: Apache/2.4.7 (Ubuntu) Conten 
     
    Interesting Posts for Van-Lav

    Память, выделяемая Python в ОС, никогда не выпускается в Linux даже после gc.collect () / No issues в Windows

    Найдите и замените дубликаты в массиве, но замените каждый n-й экземпляр на другую строку

    Расчет расстояния между двумя точками с использованием долготы широты и высоты (высоты)

    Рамка носа Python: как остановить выполнение при первом сбое

    CPython – внутри, что хранится в стеке и куче?

    Почему bool (x), где x – любое целое число, равное True

    вложенные регулярные выражения в python

    Python PXSSH GUI появляется при неудаче входа в систему

    Рамка Django rest: вложенный объект, не передающий validated_data

    datetime до метки времени Unix с точностью до миллисекунды

    Подробный уровень с параметрами argparse и несколькими -v

    Проверка формы Django: создание «обязательного» условного?

    Я пытаюсь сделать малиновую пи-камеру работать с opencv

    Приоритет оператора присваивания Python – (a, b) = a = {}, 5

    Как добавить дополнительные файлы на колесо?

    Python - лучший язык программирования в мире.