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

### [https://packetsender.com](https://packetsender.com/)
*Читайте на других языках: [English](https://github.com/dannagle/packetsender/blob/master/README.md), [Español](https://github.com/dannagle/packetsender/blob/master/README.es.md), [Deutsch](https://github.com/dannagle/packetsender/blob/master/README.de.md), [Français](https://github.com/dannagle/packetsender/blob/master/README.fr.md), [italiano](https://github.com/dannagle/packetsender/blob/master/README.it.md) [简体中文](https://github.com/dannagle/packetsender/blob/master/README.zh.md).*
[](https://packetsender.com/download)
Packet Sender — это утилита с открытым исходным кодом, позволяющая отправлять и получать TCP, UDP и SSL (зашифрованный TCP) пакеты, а также HTTP/HTTPS запросы и генерацию панелей. Основная ветка официально поддерживает Windows, Mac и Desktop Linux (с Qt). В других местах могут перекомпилировать и распространять Packet Sender. Packet Sender бесплатен и распространяется по лицензии GPL v2 или более поздней. Он может использоваться как в коммерческих, так и в личных целях. Если вы считаете приложение полезным, пожалуйста, подумайте о пожертвовании/спонсорстве, чтобы разработка могла продолжаться.
# Содержание
* [Спонсоры](#sponsors)
* Посетите [IWL.com](https://www.iwl.com/)
* Посетите [NagleCode.com](https://dannagle.com/)
* Посетите [Eletiope.com](http://eletiope.com/)
* Посетите [John Huntington](https://www.controlgeek.net/)
* [GUI](#gui)
* [Интенсивный генератор трафика (GUI)](#udptraffic)
* [Сеть](#network)
* [Загрузки](#downloads)
* [Мобильное приложение iOS](#ios)
* [Поддержка](#support)
* [IPv4 калькулятор подсетей](#subnetcalculator)
* [Wake-On-LAN / Магический пакет](#wakeonlan)
* [Packet Sender Cloud](#cloud)
* [Портативный режим](#portable)
* [Макросы и умные ответы](#smartresponses)
* [Постоянные TCP и SSL](#persistent)
* [HTTP/HTTPS запросы](#http)
* [Генератор панелей](#panelgen)
* [Интерфейс командной строки](#cli)
* [Интенсивный генератор трафика (CLI)](#cliintensetraffic)
* [Сборка Packet Sender](#building)
<a id="sponsors"></a>
## Спонсоры
Packet Sender благодарит следующих спонсоров.
[](https://www.iwl.com/)
<br>IWL — это калифорнийская компания, создающая продукты для компьютерных сетей.
<br><br><br>
[](https://dannagle.com)
<br>NagleCode — это издатель программного обеспечения и студия разработки.
<br><br><br>
[](http://eletiope.com)
<br>Eletiope устанавливает освещение, аудиовизуальное оборудование и иммерсивные комнаты для выставок и музеев, а также для корпоративных шоурумов.
<br><br><br>
[John Huntington](https://www.controlgeek.net/)
<br>Автор, консультант, педагог, звукорежиссёр, обладатель наград фотограф и охотник за штормами.
<br><br><br>
[Хотите, чтобы ваше имя/логотип было указано здесь?](https://github.com/sponsors/dannagle)
<a id="support"></a>
## Поддержка
* Twitter/X: [@NagleCode](https://x.com/NagleCode)
* Форум: [GitHub Discussions](https://github.com/dannagle/PacketSender/discussions).
* Электронная почта: [Контакты Packet Sender](https://packetsender.com/contact)
* Свяжитесь со мной в [LinkedIn](https://www.linkedin.com/in/dannagle/)
*Примечание:* Попробуйте (временно) отключить брандмауэр, если возникают проблемы в Windows.
<a id="downloads"></a>
# Загрузки
## Загрузка для настольных ПК
Официальные релизы Packet Sender можно скачать на [PacketSender.com](https://packetsender.com/download). Некоторые ресурсы распространяют Packet Sender повторно.
  
<!--
Not sure when this will be back.
## Mobile Apps
### Android Mobile App

The Android version is located [on Google Play](https://play.google.com/store/apps/details?id=com.packetsender.compose) or [on Amazon Appstore](https://www.amazon.com/dp/B08RXM6KM2/)
[](https://play.google.com/store/apps/details?id=com.packetsender.compose
-->
<a id="ios"></a>
## Мобильное приложение iOS
Packet Sender для iOS полностью нативен, содержит минимальные разрешения и не собирает данные. Это программное обеспечение, которое уважает вас. Спасибо за поддержку этих усилий.
Версия iOS находится [в Apple App Store](https://apps.apple.com/app/id1558236648#?platform=iphone)
[](https://apps.apple.com/app/id1558236648#?platform=iphone)
<a id="gui"></a>
# GUI
Packet Sender одинаков для всех настольных версий. Единственное отличие — тема в соответствии с операционной системой.

1. Пакет имеет имя, адрес назначения (доменные имена разрешаются непосредственно перед отправкой), порт и связанные с ним данные.
2. В таблице представлен список сохранённых пакетов. Вы можете дважды щёлкнуть, чтобы напрямую редактировать поля в этой таблице.
3. В правом нижнем углу отображается статус серверов UDP, TCP и SSL, а также порт(ы). Нажатие на них активирует или деактивирует протокол. Packet Sender поддерживает привязку к любому количеству портов.
4. Также есть кнопка переключения 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](https://www.autohotkey.com/)), возможно, вы захотите отключить «Восстановить предыдущий сеанс».
<a id="network"></a>
# Сетевые возможности
## Основные настройки
По умолчанию 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 выдаст ошибку, если указать привязку к несуществующему адресу.

<a id="subnetcalculator"></a>
## IPv4 калькулятор подсетей
Packet Sender имеет встроенный калькулятор подсетей. Он находится в меню Инструменты.

* Окно журнала (нижняя часть) будет отображать не-петлевые IPv4 и IPv6 адреса, найденные на вашем компьютере.
* Слева введите IPv4 адрес в поле IP.
* Слева введите подсеть в формате X.X.X. или /XX.
* Результаты расчета отображаются справа.
* Поле ниже — быстрая проверка, находится ли IPv4 в одной из ваших подсетей.
<a id="wakeonlan"></a>
## Wake-On-LAN / Магический пакет
Wake-On-LAN (или WOL) — это протокол, который сообщает компьютерам о необходимости пробуждения из спящего режима. Он вызывается широковещательным пакетом со специальными данными на основе MAC-адреса цели. Для получения дополнительной информации [посмотрите в Википедии](https://en.wikipedia.org/wiki/Wake-on-LAN).
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 полезно для диагностики данных, которые не отображаются в сыром виде.
* Трафик также сохраняется в журнале трафика главного окна.
* Файл может быть загружен в постоянное соединение. При использовании этой функции рекомендуется отключить ведение журнала.
* Таймер в левом нижнем углу запускается сразу после отправки/получения действительного пакета данных. Он останавливается при закрытии соединения.
```
---
[Read more](https://github.com/dannagle/packetsender)