Вопрос или проблема
Я работаю над проектом, в рамках которого мне нужно отправить TCP-пакет, содержащий мою фамилию, с клиента (Kali Linux) на сервер (Ubuntu), где запущен слушатель netcat. Цель состоит в том, чтобы отправить свою фамилию и отобразить её в терминале netcat на сервере.
Настройка:
Клиент: Kali Linux (использующий hping3 для отправки пакета).
Сервер: Ubuntu (работает nc -l -p 55555
, чтобы слушать подключения на порту 55555).
Проблема:
Каждый раз, когда я пытаюсь отправить свою фамилию через hping3, я всегда получаю ответ RST (сброс) от сервера. Вот краткий обзор моих шагов:
Я настроил слушатель netcat на сервере:
nc -l -p 55555
На клиенте я использую следующую команду hping3 для отправки пакета, содержащего мою фамилию:
sudo hping3 -c 1 -d 7 -E surname.txt -A -M <номер_последовательности> -L <номер_подтверждения> <ip_сервера> -p 55555
<номер_последовательности>: Следующий ожидаемый номер последовательности на основе захвата tcpdump.
<номер_подтверждения>: Номер подтверждения, полученный от сервера.
Данные: Текстовый файл, содержащий мою фамилию "Surname".
Ответ или решение
Вам нужно правильно настроить передачу TCP-пакетов с использованием hping3, чтобы отправить ваше имя через netcat. Давайте разберем все шаги и выявим возможные источники проблем, из-за которых вы получаете RST (reset) ответ от сервера.
Шаги по настройке:
-
Запуск слушателя на сервере:
Убедитесь, что вы правильно запускаете netcat на сервере для прослушивания порта. Используйте следующую команду:nc -l -p 55555
Проверьте, что эта команда выполняется корректно и не возвращает ошибок. Netcat должен быть в состоянии слушать входящие TCP-соединения.
-
Подготовка файла с данными:
Убедитесь, что ваш файлsurname.txt
действительно содержит ваше имя. Чтобы проверить это, выполните команду:cat surname.txt
Убедитесь, что в файле правильно записано ваше имя.
-
Определение значений номера последовательности и номера подтверждения:
Вам нужно правильно задать значения для-M
(номер последовательности) и-L
(номер подтверждения). Чтобы узнать текущие значения, вы можете использовать tcpdump или Wireshark для захвата трафика. Запустите tcpdump на сервере:sudo tcpdump -i any -A port 55555
Затем установите соединение с сервером, например, с помощью telnet или другого клиента, чтобы увидеть, какие номера последовательностей и подтверждений используются.
-
Отправка пакета с hping3:
После того как у вас есть необходимые номера, используйте hping3 следующим образом:sudo hping3 -c 1 -d 7 -E surname.txt -A -M <seq_number> -L <ack_number> <server_ip> -p 55555
Подставьте полученные значения
seq_number
иack_number
, а<server_ip>
замените на IP-адрес вашего сервера.
Возможные причины получения RST:
-
Неправильные номера последовательности и подтверждения: Если вы используете значения, которые не соответствуют открытому соединению, сервер не сможет подтвердить пакет и вернет RST.
-
Состояние TCP соединения: Если на сервере нет активного соединения с клиентом, даже при правильных номерах вы можете получить RST. Убедитесь, что соединение активно перед отправкой пакета.
-
Firewall или настройки сети: Проверьте, нет ли ограничений на уровне брандмауэра, которые блокируют соединение или пакеты, отправленные от hping3. Вы можете временно отключить брандмауэр на сервере для проверки:
sudo ufw disable
Не забудьте включить его снова после тестирования.
-
Тип соединения: Убедитесь, что вы действительно пытаетесь установить TCP соединение, как это ожидается. Hping3 может также использовать UDP или другие протоколы, в зависимости от параметров.
Проверка результата:
После выполнения всех шагов снова посмотрите на вывод netcat на сервере. Если всё сделано правильно, имя должно отображаться на экране без RST.
Если проблема сохраняется, соберите дополнительные логи с tcpdump или Wireshark, чтобы тщательнее проанализировать, что происходит с пакетами при отправке и получении. Это поможет в дальнейшем диагностировать и исправить проблему.