# Лабораторная работа №1
### 1. Извлечение файлов изображений из трафика.
Обратитесь к какому-нибудь интернет ресурсу, работающему по протоколу HTTP. В процессе прослушивания трафика выполните File – Export Objects – HTTP. Выберите интересующий вас объект и сохраните его. Таким же образом можно извлекать потоковое видео, файлы по протоколу FTP, голосовой трафик.
Экспортируем объект типа **Image**:

Полученное изображение:

**Такое же изображение на сайте:**

### 2. Перехват паролей незашифрованного соединения HTTP.
Обратитесь к какому-нибудь интернет ресурсу с формой регистрации или входа, работающему по протоколу HTTP. Интересуют конкретные пакеты, которые содержат POST данные, которые формируются на нашей локальной машине при заполнении формы на экране и отправляются на удаленные сервер при нажатии кнопки «Вход» или «Авторизация» в браузере. Введите в окне специальный фильтр для отображения захваченных пакетов: http.request.method==POST.
Полученный дамп:

Открываем поток TCP:

Ищем поле password:

### 3. Восстановление файла из FTP-сессии.
Откройте учебный дамп захваченного трафика. С помощью Follow TCP Stream соберите воедино всю сессию. Проанализируйте информацию о сессии: Строчка SIZE запрашивает размер файла. Сервер отвечает размер файла 610078. Клиент выдает команду RETR после успешного установления соединения для передачи данных, когда готов загрузить копию файла на сервер. Открылась сессия на порт FTP-DAT, т.е. передача данных.
С помощью Follow TCP Stream соберите воедино всю сессию и сохраните данные в формате RAW. Таким же образом можно восстанавливать передачу изображений по HTTP-протоколу, HTML-код веб-страниц и т.д.
**Открываем первый TCP поток:**

**В списке запросов видим, что был запрошен размер архива, далее он был передан клиенту:**

**Нужный нам пакет:**

Открываем его и сохраняем как zip-архив, предварительно изменв отображение данных на необработанный **(Raw)** формат:

Сохраненный архив:

Файлы в сохраненном архиве:

### 4. Проанализировать структуру TCP-пакета. Рассмотреть процесс начала сеанса TCP (также называемый рукопожатием «handshake»).
Открытый TCP-пакет:

В TCP-пакете содержатся следующие поля:
* Порт источника. порт устройства-отправителя.
* Порт назначения. порт принимающего устройства.
* Порядковый номер. Устройство, инициирующее TCP-соединение, должно выбрать случайный начальный порядковый номер, который затем увеличивается в соответствии с количеством переданных байтов.
* Номер подтверждения. Принимающее устройство увеличивает этот номер с нуля в соответствии с количеством полученных байтов.
* Сдвиг данных TCP. Данный параметр определяет размер заголовка, чтобы система могла понять, где начинаются данные.
* Зарезервированные данные — зарезервированное поле, значение которого всегда равно нулю.
* Флаги управления. TCP использует девять флагов для управления потоком данных в определенных ситуациях — например, при инициировании сброса сессии.
* Размер окна — самая важная часть заголовка TCP. Это поле используется получателем для указания отправителю объема данных, которые он может принять.
* Контрольная сумма. Отправитель генерирует контрольную сумму и передает ее в заголовке каждого пакета. Принимающее устройство может использовать контрольную сумму для проверки ошибок в полученном файле.
* Срочный указатель — это предлагаемая протоколом возможность помечать некоторые байты данных тегом «Срочно» для их пересылки и обработки вне очереди.
* Поле опции. Может использоваться для расширения протокола или его тестирования.
3 TCP-пакета, с помощью которых устанавливается связь (handshake)
* Первый – SYN от клиента
* Второй – SYN+ACK от сервера
* Третий – ACK от клиента

Чтобы установить надежное соединение, TCP использует процесс, называемый термином “трехстороннее рукопожатие” (three-way handshake). Установленное соединение будет полнодуплексным, то есть оба канала могут передавать информацию одновременно, а также они синхронизируют (SYN) и подтверждают (ACK) друг друга. Обмен выполняется следующим образом:
1) Клиент отправляет сегмент с установленным флагом SYN. При этом сегменту присваивается произвольный порядковый номер (sequence number) в интервале от 1 до 232 (т.н. initial sequence number), относительно которого будет вестись дальнейший отсчет последовательности сегментов в соединении.
2) Сервер получает запрос и отправляет ответный сегмент с одновременно установленными флагами SYN+ACK, при этом записывает в поле «номер подтверждения» (acknowledgement number), полученный порядковый номер, увеличенный на 1 (что подтверждает получение первого сегмента), а также устанавливает свой порядковый номер, который, как и в SYN-сегменте, выбирается произвольно.
3) После получения клиентом сегмента с флагами SYN+ACK соединение считается установленным, клиент, в свою очередь, отправляет в ответ сегмент с флагом ACK, обновленными номерами последовательности, и не содержащий полезной нагрузки.
4) Начинается передача данных.
### Вывод:
Извлечен файл изображения из трафика, перехвачен пароль незашифрованного соединения HTTP, восстановлен файла из FTP-сессии, проведен анализ структуры TCP-пакета, Рассмотрен процесс начала сеанса TCP (handshake).