
PacketSender v8.11.1
Сетевая утилита для отправки/получения TCP, UDP, SSL, HTTP
Introduction

https://packetsender.com
Читайте на других языках: English, Español, Deutsch, Français, italiano 简体中文.
Packet Sender — это утилита с открытым исходным кодом, позволяющая отправлять и получать TCP, UDP и SSL (зашифрованный TCP) пакеты, а также HTTP/HTTPS запросы и генерацию панелей. Основная ветка официально поддерживает Windows, Mac и Desktop Linux (с Qt). В других местах могут перекомпилировать и распространять Packet Sender. Packet Sender бесплатен и распространяется по лицензии GPL v2 или более поздней. Он может использоваться как в коммерческих, так и в личных целях. Если вы считаете приложение полезным, пожалуйста, подумайте о пожертвовании/спонсорстве, чтобы разработка могла продолжаться.
Содержание
- Спонсоры
- Посетите IWL.com
- Посетите NagleCode.com
- Посетите Eletiope.com
- Посетите John Huntington
- GUI
- Интенсивный генератор трафика (GUI)
- Сеть
- Загрузки
- Мобильное приложение iOS
- Поддержка
- IPv4 калькулятор подсетей
- Wake-On-LAN / Магический пакет
- Packet Sender Cloud
- Портативный режим
- Макросы и умные ответы
- Постоянные TCP и SSL
- HTTP/HTTPS запросы
- Генератор панелей
- Интерфейс командной строки
- Интенсивный генератор трафика (CLI)
- Сборка Packet Sender
Спонсоры
Packet Sender благодарит следующих спонсоров.
IWL — это калифорнийская компания, создающая продукты для компьютерных сетей.
NagleCode — это издатель программного обеспечения и студия разработки.
Eletiope устанавливает освещение, аудиовизуальное оборудование и иммерсивные комнаты для выставок и музеев, а также для корпоративных шоурумов.
John Huntington
Автор, консультант, педагог, звукорежиссёр, обладатель наград фотограф и охотник за штормами.
Хотите, чтобы ваше имя/логотип было указано здесь?
Поддержка
- Twitter/X: @NagleCode
- Форум: GitHub Discussions.
- Электронная почта: Контакты Packet Sender
- Свяжитесь со мной в LinkedIn
Примечание: Попробуйте (временно) отключить брандмауэр, если возникают проблемы в Windows.
Загрузки
Загрузка для настольных ПК
Официальные релизы Packet Sender можно скачать на PacketSender.com. Некоторые ресурсы распространяют Packet Sender повторно.

Мобильное приложение iOS
Packet Sender для iOS полностью нативен, содержит минимальные разрешения и не собирает данные. Это программное обеспечение, которое уважает вас. Спасибо за поддержку этих усилий.
Версия iOS находится в Apple App Store
GUI
Packet Sender одинаков для всех настольных версий. Единственное отличие — тема в соответствии с операционной системой.

- Пакет имеет имя, адрес назначения (доменные имена разрешаются непосредственно перед отправкой), порт и связанные с ним данные.
- В таблице представлен список сохранённых пакетов. Вы можете дважды щёлкнуть, чтобы напрямую редактировать поля в этой таблице.
- В правом нижнем углу отображается статус серверов UDP, TCP и SSL, а также порт(ы). Нажатие на них активирует или деактивирует протокол. Packet Sender поддерживает привязку к любому количеству портов.
- Также есть кнопка переключения IP. Нажатие меняет его на IPv4 (по умолчанию), IPv6 или пользовательский IP.
Общие примечания
- Значение повторной отправки «0» означает однократную отправку пакета.
- Во время повторной отправки пакетов появится кнопка для отмены всех повторных отправок.
- Пожалуйста, проверьте ваш брандмауэр. Windows агрессивно блокирует TCP-серверы. Packet Sender будет продолжать работать, если брандмауэр блокирует его, но он не сможет получать незапрошенные TCP-пакеты.
- Можно отправлять необязательный ответ. Один и тот же ответ используется для TCP, UDP и SSL.
- Для отправки IPv6 также потребуется идентификатор области.
- Packet Sender поддерживает смешанную нотацию ASCII и HEX:
- Дважды щелкните по любому полю, чтобы открыть многострочный редактор
- \XX преобразуется в XX в шестнадцатеричном формате
- \n, \r, \t преобразуются в 0A, 0D и 09
- HEX-числа разделяются пробелами
- Поле HEX попытается интерпретировать другие распространённые разделители (например, запятые, двоеточия (Wireshark), точки с запятой, «0x» и т.д.) и автоматически исправить. Оно очень толерантно к ошибкам.
- Поддерживается также непрерывный поток HEX. Если количество байтов нечётное, Packet Sender предположит, что первый байт требует нуля, и автоматически исправит.
- Пример ASCII: hello world\r
- Пример HEX: 68 65 6c 6c 6f 20 77 6f 72 6c 64 0d
- Вы можете сохранить пакет непосредственно из журнала трафика. Вас попросят ввести имя, а исходный адрес и порт будут заменены для вашего удобства.
- Вы также можете загрузить файл непосредственно в поле HEX. Поле HEX поддерживает отправку до 10 922 байт. Теоретический предел отправки через командную строку — 200 МБ.
Горячие клавиши / Сочетания клавиш
Поля вверху можно переключать с помощью CTRL+1, CTRL+2 и т.д. до CTRL+8 (кнопка отправки). На Mac клавиша Command.
Горячие клавиши и поля:
- CTRL + 1 = Имя
- CTRL + 2 = ASCII
- CTRL + 3 = HEX
- CTRL + 4 = Адрес
- CTRL + 5 = Порт
- CTRL + 6 = Задержка повторной отправки
- CTRL + 7 = Выбор протокола
- CTRL + 8 = Отправить (выполняет)
Некоторые примечания:
- Поля привязаны к соответствующим горячим клавишам независимо от выбора протокола.
- При переходе к опции TCP/UDP/SSL вы можете использовать клавиши вверх/вниз или символы t/u/s/h для выбора.
- Если вы собираетесь автоматизировать с помощью горячих клавиш (используя такие инструменты, как AutoHotKey), возможно, вы захотите отключить «Восстановить предыдущий сеанс».
Сетевые возможности
Основные настройки
По умолчанию Packet Sender запускается с включенными серверами UDP, TCP и SSL на случайных портах (показаны как кнопки в правом нижнем углу). Вы можете привязаться к любому количеству портов (если ОС позволяет), используя номера портов, разделенные запятыми. Например, 0, 1000, 2000 привяжутся к «случайному» и портам 1000, 2000.

Кнопка UDP теперь показывает 3 привязанных порта. Один из них случайный.

Другая настройка — отвечать на все запросы ответом. Вы также можете сделать этот ответ макросом. Есть поле для ввода ответа (или загрузки сохранённого пакета).
Дополнительные настройки UDP/TCP/SSL
По умолчанию Packet Sender привязывается к любому адресу IPv4. В этой области настроек вы можете привязать его к любому IPv6 или к конкретному IP-адресу.
Привязка к конкретному адресу очень полезна, когда есть несколько сетевых карт и вы хотите принудительно отправлять связь (например, широковещательные пакеты) через определённую.

Некоторые протоколы ожидают, что сервер отправит данные до того, как клиент отправит (например, многие telnet-сервисы). Этот режим можно включить с помощью опции «Получать перед отправкой».
Если у вас медленное устройство (например, встроенный сервер со слабым процессором), вы можете включить «Задержка 500 мс после подключения». Это даст медленному серверу время для запуска обработчика.
IPv4, IPv6, пользовательский IP
Встроенные серверы Packet Sender настроены на поддержку либо IPv4, либо IPv6, но не одновременно. Для клиентов GUI и CLI Packet Sender будут плавно переключаться между двумя режимами при отправке (может потребоваться идентификатор области для IPv6). Нажмите переключатель IPv4/IPv6 в правом нижнем углу, чтобы переключаться между ними.
В настройках вы также можете заставить серверы Packet Sender привязываться к пользовательскому IP-адресу. Это может быть очень полезно для систем с несколькими сетевыми картами или сложными IP-конфигурациями. Packet Sender выдаст ошибку, если указать привязку к несуществующему адресу.

IPv4 калькулятор подсетей
Packet Sender имеет встроенный калькулятор подсетей. Он находится в меню Инструменты.

- Окно журнала (нижняя часть) будет отображать не-петлевые IPv4 и IPv6 адреса, найденные на вашем компьютере.
- Слева введите IPv4 адрес в поле IP.
- Слева введите подсеть в формате X.X.X. или /XX.
- Результаты расчета отображаются справа.
- Поле ниже — быстрая проверка, находится ли IPv4 в одной из ваших подсетей.
Wake-On-LAN / Магический пакет
Wake-On-LAN (или WOL) — это протокол, который сообщает компьютерам о необходимости пробуждения из спящего режима. Он вызывается широковещательным пакетом со специальными данными на основе MAC-адреса цели. Для получения дополнительной информации посмотрите в Википедии.
Packet Sender имеет встроенный генератор WOL. Он находится в меню Инструменты.

Заполните параметры, и основной GUI будет заполнен правильными данными для формата WOL.

Также есть параметры CLI для генерации и отправки WOL-пакетов```text packetsender --wol f8:23:66:30:e5:30 Sending broadcast Wake-On-LAN to target: F8:23:66:30:E5:30 on port 7 UDP (60360)://255.255.255.255:7 ff ff ff ff ff ff f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30
## Клиент и сервер SSL
Packet Sender поддерживает установку зашифрованных соединений через SSL.
Это поддерживается как в графическом интерфейсе, так и в командной строке.
Packet Sender включает OpenSSL для использования в Windows. На Mac и Linux Packet Sender будет использовать собственные библиотеки SSL.

Заметки по SSL:
* Согласование сертификата выполняется немедленно во время подключения.
* По умолчанию Packet Sender игнорирует все ошибки SSL (просроченный сертификат, неверное имя хоста, самоподписанный и т.д.).
* Packet Sender выводит ход согласования сертификата в журнал трафика.
* Packet Sender выводит используемый алгоритм шифрования в журнал трафика (например, AES 128).
Packet Sender включает встроенный сертификат «Snake Oil» для использования в качестве сервера в Windows. Сертификат и ключ находятся в том же месте, что и пакеты и настройки.
_Примечание: Переопределение местоположения сертификатов в настройках также переопределяет сертификат Snake Oil._
Если возникает ошибка SSL, Packet Sender выведет её в журнал трафика. Если в настройках установлено продолжать в любом случае (по умолчанию), он продолжит согласование шифрования. В противном случае соединение завершится ошибкой.

## Многоадресная рассылка (экспериментально)
Поддержка многоадресной рассылки в Packet Sender активируется при попытке отправки на IPv4-мультикаст-адрес или из подменю multicast. В настоящее время эта функция является экспериментальной и имеет следующие известные проблемы.
* Packet Sender прекращает поддержку IPv6 при присоединении к многоадресной группе.
* И поддержка IPv6 не восстанавливается, пока вы не вернётесь в настройки или не попытаетесь отправить на IPv6.
* В Wi-Fi иногда требуется 20 секунд, чтобы присоединение к многоадресной группе вступило в силу.
* Packet Sender не имеет логики для повторного присоединения к многоадресной группе в случае перезагрузки коммутатора или другой распространённой ошибки.
Поддержка IPv6 multicast отсутствует, хотя она есть в планах разработки. Спонсоры, желающие поддержку IPv6 multicast, могут связаться со мной.
<a id="udptraffic"></a>
## Генератор UDP-трафика (экспериментально)
Если обычной системы отправки недостаточно, вы можете «забросать» целевой IP пакетами, чтобы проверить, справится ли с этим ваше устройство. Эта функция находится в панели инструментов GUI: _Tools -> Intense Traffic Generator_
Обратите внимание, что эта функция является экспериментальной, и отображаемые метрики не были полностью протестированы. Для более точного теста вы можете воспользоваться CLI-версией этого инструмента.

# Возможности Packet Sender
<a id="cloud"></a>
## Packet Sender Cloud
Наборы пакетов можно быстро сохранять, извлекать и делиться ими с помощью бесплатного сервиса [Packet Sender Cloud](https://cloud.packetsender.com/). Облако также может использоваться для публичного отображения и распространения ваших пакетов (через URL) для совместной работы, учебных пособий, конечных пользователей и т.д. Packet Sender может импортировать публичные наборы пакетов по публичному URL.
Для этого есть разные причины:
* Держать все ваши пакеты готовыми, чтобы быстро загрузить их при установке свежей версии Packet Sender.
* Быстро переключаться между наборами пакетов при работе над разными проектами.
* Делиться логином (это разрешено) для совместного создания наборов пакетов.
* Иметь публичную страницу ваших наборов пакетов, чтобы другие могли быстро их найти и импортировать.

Если вы публикуете сетевой API, поддержка публичной облачной страницы значительно проще, чем мучительно детализировать (IP, порт, тип и т.д.) пакеты для ваших пользователей. К тому же, обновлять эту страницу легко.
Больше информации об этом можно найти на
https://cloud.packetsender.com/help
<a id="portable"></a>
## Портативный режим
Packet Sender имеет «портативный» режим. При запуске он ищет файл `portablemode.txt` и создаёт недостающие файлы настроек в этом же каталоге времени выполнения. Эти файлы: `packets.ini`, `ps_settings.ini`, `ps.key` и `ps.pem`.
Вы также можете сделать часть файлов портативными, а другие оставить в стандартном расположении, удалив portablemode.txt.
### DLL, которые можно удалить в консольном портативном режиме
Если вам не нужен GUI, вы можете удалить следующие DLL:
- Qt6Svg.dll
- Qt6Widgets.dll
- Qt6Gui.dll
- opengl32sw.dll
- D3Dcompiler_47.dll
- каталог iconengines
- каталог imageformats
- каталог styles
Обратите внимание, что DLL с символами `+` в именах могут вызвать проблемы при копировании в командной строке Windows, если их не заключать в `"`.
### DLL, которые можно удалить, если вам не нужны защищённые соединения
Если вам не требуется SSL, вы можете удалить эти DLL:
- libcrypto-1_1-x64.dll
- libssl-1_1-x64.dll
Каталог времени выполнения у пользователей Windows находится там же, где и .exe.
Для пользователей MAC этот каталог времени выполнения находится по пути `PacketSender.app/Contents/MacOS`.
Если найдены INI-файлы, они будут использоваться вместо `%APPDATA%` или `Library/Application Support`.
<a id="smartresponses"></a>
## Умные ответы
Packet Sender поддерживает до 5 умных ответов.
Чтобы включить эту функцию, перейдите в _File -> Settings_ на панели инструментов GUI. Перейдите на вкладку _Smart Responses_ и установите флажок **Send a Smart Response**.

* Packet Sender будет сравнивать пакет в выбранной вами кодировке.
* Packet Sender перекодирует данные перед отправкой ответа.
* Доступные кодировки:
* Mixed ASCII — стандартный для Packet Sender способ кодирования ASCII вместе с непечатаемыми символами.
* HEX — обычная HEX-кодировка Packet Sender.
## Макросы
Packet Sender поддерживает следующие макросы при отправке ответов:
* {{DATE}} — отправляет текущую дату в формате «yyyy-mm-dd».
* {{TIME}} — отправляет текущее время в формате «hh:mm:ss ap».
* {{UNIXTIME}} — отправляет текущую метку времени Unix.
* {{COUNTER}} — отправляет увеличивающийся счётчик для каждого пакета, который его использует. Начинается с 1 при запуске.
* {{RANDOM}} — отправляет случайное число в диапазоне от 0 до 32767 или 2147483647, в зависимости от 32-битной или 64-битной версии (стандартный установщик для Windows — 32-битный, для Mac — 64-битный).
* {{UNIQUE}} — отправляет случайную строку. Для генерации используется внутренний UUID.
Packet Sender заменяет макрос реальными значениями перед отправкой.
<a id="persistent"></a>
## Постоянные TCP и SSL
Packet Sender поддерживает постоянные TCP и SSL-соединения через отдельное окно GUI. Эта возможность включается с помощью флажка в главном окне или через окно настроек.

### Примечания к постоянным TCP и SSL:
* Можно создать любое количество постоянных соединений.
* Ранее сохранённые пакеты можно загружать из выпадающего списка.
* Есть представление «Raw» и «ASCII». Представление ASCII полезно для диагностики данных, которые не отображаются в сыром виде.
* Трафик также сохраняется в журнале трафика главного окна.
* Файл может быть загружен в постоянное соединение. При использовании этой функции рекомендуется отключить ведение журнала.
* Таймер в левом нижнем углу запускается сразу после отправки/получения действительного пакета данных. Он останавливается при закрытии соединения.
* Вы можете опционально добавлять символ возврата каретки при быстрой отправке нажатием клавиши Enter. Это полезно для меню командной строки через TCP/SSL-соединения. Packet Sender запоминает предыдущее состояние флажка \r.
* Входящие постоянные соединения к серверу запускают отдельное окно GUI.
* При повторной отправке постоянный пакет соединения переносится в новое окно GUI. Нажатие «Resending(1)» отменит его.
Постоянные соединения не поддерживаются через командную строку.
<a id="http"></a>
# HTTP/HTTPS POST & GET
Packet Sender поддерживает отправку POST/GET-запросов через HTTP и HTTPS.
Выпадающий список протоколов включает следующие параметры: HTTP GET, HTTP POST, HTTPS GET, HTTPS POST. При выборе HTTP(S) поля ввода обновляются на: Name, Request, Address, Data (при выборе POST), кнопка Generate Data (при выборе POST), кнопка Load File (при выборе POST).
## Отправка HTTP/HTTPS GET/POST запросов

* Выберите HTTP(S) GET или POST из выпадающего списка протоколов.
* В поле *Address* введите домен или IP.
* В поле *Request* добавьте путь URL, если требуется.
* В поле *Port* по умолчанию для HTTP — 80, для HTTPS — 443.
* Установите флажок *Persistent TCP*, чтобы видеть данные сервера более чётко (заголовки HTTP удаляются автоматически).
**Вы также можете вставить полный URL в поле Request, и Packet Sender разберёт его и автоматически заполнит другие поля.**
### Для POST-запросов:
* Вы можете вручную добавить данные в поле *Data*.
* Формат: ключ=значение
* Для нескольких параметров: ключ=значение&ключ=значение&ключ=значение
* Или нажмите кнопку *Generate Data*
<img src="https://assets.kitploit.com/production/public/readmes/4523/10d31cc53bcf0ba4d4a60d38c83a08231617142f8eec6b3cdb68f83964c3da06.png" width="400" height="284">
* Чтобы добавить данные, введите параметры Key и Value. Нажмите кнопку **+**.
* Можно добавить несколько параметров с помощью кнопки +.
* Удалите параметры, нажав кнопку X рядом с параметром.
* После добавления параметров нажмите Ok, и данные будут сгенерированы в поле Data.
### Добавление учётных данных для аутентификации:
<img src="https://assets.kitploit.com/production/public/readmes/4523/0592ee55242fa40c5eeb6dd0bd87956167c1461a7b224259a81ac065c055b9a0.png" width="800" height="339">
* Перейдите в File -> Settings -> HTTP.
* Установите флажок *Generate Auth Header*.
* Введите *Host*, *UN/Client ID* и *PW/Access*.
* Нажмите *HTTP Auth Header*, чтобы сгенерировать заголовок аутентификации.
<a id="panelgen"></a>
# Генератор панелей
Packet Sender поддерживает создание панелей управления. Панели состоят из кнопок с назначенными им скриптами (пакетами). Нажатие кнопки выполняет пакет(ы), указанные на этой кнопке.
<img src="https://assets.kitploit.com/production/public/readmes/4523/933ef79915bb7e6ced4a6fff3b2bb9b98ef19619b5096476cb8d5496c487e3dd.png" width="400" height="358">
## Загрузка панели
Панели можно создать одним из двух способов:
* Нажмите **Panels** на панели инструментов и выберите Load Starter Panel или Empty Panel Project.
* Load Starter Panel загрузит панель, назначенную как стартовая. Если ни одна панель не установлена как стартовая, откроется пустой проект панели.
* Выделите 2 или более сохранённых пакета и нажмите кнопку **Generate Panel** (кнопка Generate Panel появляется только при выборе нескольких пакетов).
Packet Sender поддерживает запуск в режиме только панели со стартовой панелью с помощью опции командной строки `--starterpanel`

## Создание скриптов для панели
Чтобы начать создание скриптов для кнопок на панели, откройте панель и перейдите в режим редактирования (Editing screen). После открытия проекта панели проверьте кнопку в правом нижнем углу. Если на кнопке написано «Viewing», вы находитесь в режиме просмотра. Нажмите кнопку, чтобы переключить панель в режим редактирования.
В режиме редактирования на панель можно добавлять кнопки и скрипты.
### Скрипты кнопок
Скрипты кнопок содержат имя отправляемого пакета.
<img src="https://assets.kitploit.com/production/public/readmes/4523/a34e6ec6f371b15c13f41bf577df02c57b2fb3e695d88f572d90b96377d0c92e.png" width="400" height="360">
Несколько пакетов можно назначить на одну кнопку, добавляя каждое имя на новой строке.
<img src="https://assets.kitploit.com/production/public/readmes/4523/8bdccde0bc587dbd0d2a64f5126f1de47cdbd5a7ea0fb518122fb17bd876163a.png" width="400" height="358">
Генератор панелей поддерживает добавление задержки между несколькими пакетами с помощью строки «delay:_количество секунд_» между пакетами.
<img src="https://assets.kitploit.com/production/public/readmes/4523/c9399a2ba90d0a747c851d15d8a7674eac530c5cb6f65b4182bb532872dbfbbb.png" width="400" height="359">
Генератор панелей поддерживает добавление скрипта для загрузки новой панели с помощью строки «panel:_ID панели_». После выполнения всех предыдущих скриптов на кнопке панель переключится на следующую.
<img src="https://assets.kitploit.com/production/public/readmes/4523/0b8c538ddacba7c2e1ebe089491b555d63875f425aa25bd3ebd693467c0c5aa2.png" width="400" height="358">
### Добавление файлов/URL
Генератор панелей поддерживает добавление кнопок, ссылающихся на локальные файлы или URL.
Кнопки для файлов/URL можно добавлять в режиме редактирования, нажав *+* в правом нижнем углу.
* Для файлов: перейдите к файлу на ПК, щёлкните правой кнопкой мыши по файлу и выберите «Копировать». Вставьте это в текстовое поле _URL or File_ в Packet Sender.
* Для URL: скопируйте URL в текстовое поле _URL or File_ в Packet Sender.
* URL должны начинаться с http:// или https://.

После копирования файла или URL вам будет предложено ввести имя для кнопки. Кнопки появятся в нижней части панели.
В режиме редактирования нажатие на эти кнопки позволит вам изменить ссылку на файл/URL и имя кнопки. Вы также можете удалить кнопку, нажав **X** во всплывающем окне.

В режиме просмотра нажатие на эти кнопки откроет URL в браузере по умолчанию или откроет файл (с программой по умолчанию для данного типа файлов).

### Редактирование и сохранение панели
В режиме редактирования панели будет отображаться панель инструментов с меню File, Export, Settings, Help. С помощью этой панели инструментов вы можете сохранить, экспортировать, импортировать, загрузить проекты панелей и отредактировать текущий проект панели.
В меню Settings доступны следующие действия:
* Set Panel Name — выберите, чтобы переименовать текущий проект панели.
* Set Panel ID — выберите, чтобы изменить ID, связанный с текущим проектом панели.
_Примечание: Установка ID, который уже используется, приведёт к замене той панели._
* Starter Panel — выберите, чтобы установить текущий проект панели как стартовую панель.
* Delete Panel — откроется меню текущих проектов панелей. Выберите проект панели для удаления. _Примечание: Кнопки и скрипты останутся на экране редактирования до закрытия панели._
# DTLS
На данный момент DTLS поддерживается только в GUI в Windows. Другие операционные системы могут включить DTLS, скомпилировав из исходного кода с использованием Qt6.
## Обзор
Этот репозиторий содержит функцию протокола DTLS (Datagram Transport Layer Security). Эта функция добавляет графический интерфейс для настройки и управления DTLS-соединениями, включая проверку сервера и опции сохранения сессии.
## Возможности
### Главное окно

- **Cipher Suites**: Выпадающий список для выбора желаемого набора шифров для связи DTLS.
- **Server Common Name**: Поле для ввода общего имени сервера для проверки на стороне клиента.
- **Persistent Session**: Опция для сохранения ключа сессии после первого рукопожатия путём установки флажка persistent.
- **Optional Server Verification**: Опция для включения двусторонней проверки во время рукопожатия.
- **DTLS Server Port**: Кнопка для определения порта DTLS-сервера для соединения.
#### Дополнительные изображения:

- Детальный вид выпадающего списка выбора набора шифров.

- Окно постоянного соединения во время DTLS.

- Кнопка для включения или отключения DTLS-сервера.
### Окно настроек
#### Вкладка Network

- **Send Simple Acknowledge**: Флажок для включения отправки простого подтверждения.
- **Enable DTLS Server**: Опция для включения DTLS-сервера и выбора порта.
- **Certificates and Keys**: Сертификаты и ключи могут быть загружены аналогично конфигурации SSL.
#### Вкладка Smart Responses

- **Smart Responses**: Функция умных ответов работает через протокол DTLS.
## Интеграция с Wireshark
Перехват трафика Wireshark:
### Обычное соединение

- Пример обычного DTLS-соединения, захваченного Wireshark.
### Постоянное соединение

- Пример постоянного DTLS-соединения, захваченного Wireshark.
<a id="cli"></a>
# Командная строка
Packet Sender можно использовать из командной строки на вашем компьютере.
В Windows используйте расширение .com (`packetsender.com`) для использования интерфейса командной строки. Опционально можно также использовать `packetsender` без расширения. Использование расширения .exe запустит GUI.

В Linux система командной строки Packet Sender следует тому же шаблону, что и другие утилиты Linux. Она имеет длинное имя (например, --version) и короткое имя (например, -v). Эти опции можно располагать в любом порядке, и Packet Sender правильно их разберёт. Последние 3 опции являются позиционными и должны быть указаны последними. Это IP, порт и данные. Последние опции необязательны, если используется сохранённый пакет.```text
packetsender --help
Usage: C:\Program Files\PacketSender\packetsender.com [options] address port data
Packet Sender is a Network UDP/TCP/SSL/HTTP Test Utility by NagleCode
See https://PacketSender.com/ for more information.
Options:
-h, --help Displays help on commandline options.
--help-all Displays help including Qt specific options.
-v, --version Displays version information.
-q, --quiet Quiet mode. Only output received data.
-x, --hex Parse data-to-send as hex (default for
TCP/UDP/SSL).
-a, --ascii Parse data-to-send as mixed-ascii (default for http
and GUI).
-A, --ASCII Parse data-to-send as pure ascii (no \xx
translation).
-l, --listen Listen instead of send. Use bind options to specify
port/IP. Otherwise, dynamic/All.
-r, --response <ascii> Server mode response data in mixed-ascii. Macro
supported.
-w, --wait <ms> Wait up to <milliseconds> for a response after
sending. Zero means do not wait (Default).
-f, --file <path> Send contents of specified path. Max 10 MiB for
UDP, 100 MiB for TCP/SSL.
-b, --bind <port> Bind port. Default is 0 (dynamic).
-6, --ipv6 Force IPv6. Same as -B "::". Default is IP:Any.
-4, --ipv4 Force IPv4. Same as -B "0.0.0.0". Default is
IP:Any.
-B, --bindip <IP> Bind custom IP. Default is IP:Any.
-t, --tcp Send TCP (default).
-s, --ssl Send SSL and ignore errors.
-S, --SSL Send SSL and stop for errors.
-u, --udp Send UDP.
--http <http> Send HTTP. Allowed values are GET (default) and
POST
-n, --name <name> Send previously saved packet named <name>. Other
options overrides saved packet parameters.
--wol <mac> Send Wake-On-LAN / Magic Packet to <mac> and
(optional) <port>.
--bps <bps> Intense traffic. Calculate rate based on value of
bits per second.
--num <number> Intense traffic. Number of packets to send. Default
unlimited.
--rate <Hertz> Intense traffic. Rate. Ignored in bps option.
--usdelay <microseconds> Intense traffic. Resend delay. Used if rate is 0.
Ignored in bps option.
--max Intense traffic. Run as fast as possible.
Arguments:
address Destination address/URL. Optional for saved packet.
port Destination port/POST data. Optional for saved
packet.
data Data to send. Optional for saved packet.
Пример CLI
Интерфейс командной строки использует одинаковый формат в Windows, Linux и MAC.
Формат: `packetsender [options] address port data````text packetsender -taw 500 mirrors.xmission.com 21 "USER anonymous\r\nPASS [email protected]\r\n" TCP (65505)://mirrors.xmission.com:21 55 53 45 52 20 61 6e 6f 6e 79 6d 6f 75 73 0d 0a 50 41 53 53 20 63 68 72 6f 6d 65 40 65 78 61 6d 70 6c 65 2e 63 6f 6d 0d 0a Response Time:5:51:37.042 pm Response HEX:32 32 30 2D 57 65 6C 63 6F 6D 65 20... Response ASCII:220-Welcome to XMission Internet...
## Пример CLI для прослушивания пакетов (режим сервера)
Используйте существующие параметры привязки для настройки сервера.
- -b для порта
- -B для IP
- -t/-u/-s для TCP, UDP или SSL
- -r для отправки ответа (поддерживается макрос ASCII)
Привязка к динамическому порту с использованием TCP```text
packetsender -l
TCP Server started on 0.0.0.0:52567
Use ctrl+c to exit server.
From: 127.0.0.1, Port:52568
Response Time:2024-06-04 19:01:53.198
Response HEX:48 65 6C 6C 6F
Response ASCII:Hello
From: 127.0.0.1, Port:52569
Response Time:2024-06-04 19:02:24.063
Response HEX:57 6F 72 6C 64
Response ASCII:World
Привязка к порту 8080 с использованием UDP```text packetsender -l -u -b 8080 UDP Server started on 0.0.0.0:8080 Use ctrl+c to exit server.
From: ::ffff:127.0.0.1, Port:49500 Response Time:2024-06-04 19:04:28.890 Response HEX:48 65 6C 6C 6F 20 55 44 50 20 50 61 63 6B 65 74 Response ASCII:Hello UDP Packet
Привязка к порту 8080 с использованием UDP и ответом с текущим временем```text
packetsender -l -u -b 8080 -r "{{TIME}}"
Loading response packet.
UDP Server started on 0.0.0.0:8080
Use ctrl+c to exit.
From: ::ffff:127.0.0.1, Port:59594
Response Time:2024-06-05 20:48:18.180
Response HEX:68 65 6C 6C 6F 20 70 61 63 6B 65 74 20 73 65 6E 64 65 72
Response ASCII:hello packet sender
From: You (Response), Port:59594
Response Time:2024-06-05 20:48:18.182
Response HEX:30 38 3a 34 38 3a 31 38 20 70 6d
Response ASCII:08:48:18 pm
Привязка к IP 192.168.86.26, порт 54321 с использованием SSL```text packetsender -l -s -B 192.168.86.26 -b 54321 Binding to custom IP 192.168.86.26 Listening for SSL packets in server mode. SSL Server started on 192.168.86.26:54321 Use ctrl+c to exit server.
From: 192.168.86.26, Port:52588 Response Time:2024-06-04 19:11:30.726 Error/Info:Encrypted with AESGCM(256)
From: 192.168.86.26, Port:52588 Response Time:2024-06-04 19:11:30.726 Error/Info:Authenticated with RSA
From: 192.168.86.26, Port:52588 Response Time:2024-06-04 19:11:30.726 Error/Info:Peer cert issued by
From: 192.168.86.26, Port:52588 Response Time:2024-06-04 19:11:30.726 Error/Info:Our Cert issued by SnakeOil
From: 192.168.86.26, Port:52588 Response Time:2024-06-04 19:11:30.747 Response HEX:43 6F 6F 6C 20 53 53 4C Response ASCII:Cool SSL
## Примеры привязки к порту и пользовательскому IP, IPv4 или IPv6
Командная строка Packet Sender может привязываться к пользовательским портам для принудительного использования режимов IPv4/6 или нескольких сетевых интерфейсов с помощью опции -B.```text
packetsender -taw 3000 fe80::c07b:d517:e339:5a08 5005 "Hello\r"
packetsender -taw 3000 192.168.0.201 5005 "Hello\r"
packetsender -B 192.168.0.200 -taw 3000 192.168.0.201 5005 "Hello\r"
packetsender -B fe80::a437:399a:3091:266a%ethernet_32769 -taw 3000 fe80::c07b:d517:e339:5a08 5005 "Hello\r"
packetsender -B fe80::a437:399a:3091:266a -taw 3000 fe80::c07b:d517:e339:5a08 5005 "Hello\r"
Пример CLI с использованием SSL и игнорированием ошибок
Командная строка имеет опцию игнорировать или прерывать выполнение при ошибках SSL. По умолчанию — игнорировать.
- Используйте опцию -s для отправки SSL и игнорирования ошибок.
- Используйте опцию -S для отправки SSL и остановки при ошибках```text packetsender -saw 500 expired.packetsender.com 443 "GET / HTTP/1.0\r\n\r\n" SSL Error: The certificate has expired SSL (54202)://expired.packetsender.com:443 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 30 0d 0a 0d 0a Cipher: Encrypted with AES(128)
Response Time:3:24:55.695 pm Response HEX:48 54 54 50 2f 31 2e 31 20 34 32 31 20 0d 0a 53 65 72 76 65 72 3a 20 6e 67 69 6e 78 2f 31 2e 31 30 2e 30 20 28 55 62 75 6e 74 75 29 0d Response ASCII:HTTP/1.1 421 \r\nServer: nginx/1.10.0 (Ubuntu)\r
## Пример CLI с использованием HTTP
Обратите внимание: здесь используются встроенные пакеты по умолчанию.```text
packetsender --name "HTTPS POST Params"
packetsender --http GET "https://httpbin.org/get"
packetsender --http POST "https://httpbin.org/post" "{}"
Пример использования CLI интенсивного генератора трафика
Командный интенсивный генератор трафика работает так же, как и версия с графическим интерфейсом, но он немного точнее, с большим количеством опций управления (и большей интенсивностью!).
См. ниже примеры использования. Обратите внимание, что эти расчеты выполняются «по мере возможности». Он работает нормально, но скачки процессора или различные сетевые задержки могут сбить его. Многопоточность не является реальным временем и не очень умна в попытках компенсации.
- Повторная отправка "My Awesome Packet" с частотой 20 Гц
- Повторная отправка "My Awesome Packet" со скоростью 2000 бод
- Повторная отправка "My Awesome Packet" так быстро, как возможно
- Повторная отправка "My Awesome Packet" с задержкой 2000000 микросекунд между каждым пакетом
Примечание: Для Windows используйте сборку ".com", поэтому в каждом примере будет packetsender.com```text packetsender --rate 20 --name "My Awesome Packet" packetsender --bps 2000 --name "My Awesome Packet" packetsender --rate 0 --name "My Awesome Packet" packetsender --usdelay 2000000 --name "My Awesome Packet"
<a id="building"></a>
# Сборка Packet Sender
Единственная зависимость — Qt SDK
## Сборка Packet Sender для Windows/MAC
1. Загрузите установщик Qt с https://www.qt.io/download-open-source/
1. Разрешите установить MingGW, если у вас нет компилятора.
1. Откройте проект PacketSender.pro
1. Соберите!
Версии для Windows и Mac были собраны с использованием Qt 5.12. Packet Sender поддерживает Qt 6, однако не поддерживает cmake.
## Сборка Packet Sender для Linux
Вот последовательность команд для Ubuntu 16.04. Пожалуйста, адаптируйте под вашу платформу Linux. Packet Sender не требует дополнительных библиотек, кроме стандартного Qt SDK. Мне сообщали о проблемах со сборкой на стандартной Fedora. Если у гуру Fedora есть понимание, дайте знать, и я добавлю ваши инструкции.
Если вы чувствуете себя авантюристом, можете собрать из ветки master. Она содержит последнюю стабильную сборку. Ветки development, вероятно, следует избегать.```bash
sudo apt-get update
sudo apt-get install qt5-default build-essential
wget https://github.com/dannagle/PacketSender/archive/(Version).tar.gz
tar -xzvf (Version).tar.gz
cd PacketSender-(Version)/src
qmake PacketSender.pro
make
Для запуска используйте:```text ./PacketSender
Если не запускается, возможно, потребуется сделать его исполняемым.```text
chmod a+x PacketSender
Улучшения/Запросы
Не хватает функции? Вы можете нанять меня, чтобы добавить её в Packet Sender.
Юридическая информация / Соответствие
Лицензия — GPL v2 или более поздняя. Свяжитесь со мной, если вам нужна другая лицензия. Некоторые дистрибутивы Packet Sender могут использовать OpenSSL. Текущий VPAT можно найти в этом репозитории.
Авторские права
Packet Sender был написан Дэном Нэглом и опубликован © NagleCode, LLC - @NagleCode - PacketSender.com
