Знаете, ребят, иногда в нашей IT-шной жизни встречаются штуки, которые нужны не только сисадминам или безопасникам, но и простым разработчикам. Вот тот случай, когда даже если ты привык к высокоуровневым абстракциям и фреймворкам, рано или поздно всё равно придётся копаться в низкоуровневом вводе-выводе или прикручивать взаимодействие с железом. Так что этот продукт может пригодиться всем — от тех, кто настраивает серверные фермы, до тех, кто внезапно осознает, что программировать драйвера — это не так уж и весело.

Терминалы и снифферы — зачем они нужны?

Если вы когда-нибудь занимались разработкой или отладкой оборудования, наверняка сталкивались с необходимостью мониторинга данных, проходящих по различным интерфейсам, будь то Ethernet, RS232, RS485 или I2C. Для этого и нужны терминалы и снифферы.

Давайте поговорим о терминальных эмуляторах — нашей незаменимой палочке-выручалочке, когда надо пообщаться с операционкой или каким-нибудь железом через командную строку. Это софт, который эмулирует ту самую текстовую среду, где ты можешь лихо строчить команды, как будто в каком-то из 80-х, а система тебе отвечает, как послушный бот. Будь то работа с последовательным портом или через сетевой интерфейс, эмулятор терминала позволяет напрямую передавать команды и получать обратно данные, при этом всё выглядит более-менее человекочитаемым. В общем, если тебе нужно, например, поговорить с сервером на языке Bash или погонять команды на каком-нибудь девайсе — терминал твой лучший друг!

Основные компоненты терминала:

  1. Консольный интерфейс: текстовое окно, в котором пользователь может вводить команды и видеть ответы операционной системы.

  2. Командная оболочка (*shell*)**: программа, которая обрабатывает команды, введенные в терминале. Примеры: Bash, Zsh, PowerShell.

  3. Системные команды и утилиты: с помощью терминала можно управлять файлами, запущенными процессами, сетевыми настройками и многими другими аспектами системы.

Основные функции эмулятора терминала:

  1. Ввод команд: позволяет пользователю вводить текстовые команды, которые затем передаются в операционную систему для выполнения.

  2. Отображение вывода: результат выполнения команд отображается в том же окне, где была введена команда.

  3. Удалённое управление: с помощью таких протоколов, как SSH, пользователь может управлять удалёнными серверами через эмулятор терминала.

  4. Поддержка оболочек: эмуляторы терминала работают с различными командными оболочками (например, Bash, Zsh, Fish).

Применение эмулятора терминала:

  • Администрирование систем: большинство системных задач в серверных и сетевых ОС выполняется через терминал, что позволяет работать с системой на низком уровне.

  • Автоматизация: с помощью терминала можно создавать и запускать скрипты, которые автоматизируют рутинные задачи.

  • Администрирование серверов: позволяет удалённо управлять серверами и другими устройствами через сеть.

  • Разработка и тестирование ПО: разработчики используют эмуляторы для компиляции, запуска и отладки программ через командную строку.

  • Работа с файловыми системами: пользователи могут просматривать, создавать, удалять и изменять файлы и папки в системе.

Таким образом, эмуляторы терминала являются мощным инструментом для опытных пользователей, обеспечивая текстовый интерфейс для выполнения различных задач, позволяя быстро и эффективно взаимодействовать с системой.

Снифферы, в свою очередь, следят за передаваемыми данными и записывают их для анализа. Представьте себе, что это как кибер-детективы, которые следят за каждым байтом, пробегающим по проводам. Они могут оказаться полезны, если нужно отследить, почему ваше оборудование ведет себя странно или просто понять, как проходит обмен данными между устройствами.

Сниффер (от англ. *sniffer*) — это программное или аппаратное средство для перехвата и анализа сетевого трафика. Его основная задача — «прослушивание» данных, передаваемых по сети, и сбор этих данных для дальнейшего анализа.

Основные функции сниффера:

  1. Перехват данных: сниффер собирает пакеты данных, которые передаются в сети, без вмешательства в процесс передачи.

  2. Анализ трафика: он может распознавать и анализировать различные протоколы (HTTP, TCP/IP, UDP и т.д.).

  3. Мониторинг сети: администраторы могут использовать снифферы для выявления проблем в сети, обнаружения утечек данных или анализа производительности.

  4. Диагностика сбоев: помогает находить ошибки или неисправности в работе сетевых сервисов.

Использование снифферов:

- Администраторами сетей для мониторинга и диагностики, улучшения работы сети и обеспечения безопасности.

Что же такое IO Ninja?

Теперь перейдём к главному герою этой статьи — программно-аппаратного комплекса IO Ninja. Это универсальный инструмент, который объединяет функциональность терминала и сниффера в одном продукте. Он работает на Windows, Linux и macOS. При этом он еще и программируемый!

У нашего устройства есть свой отдельный сайт https://ioninja.com/, а в этой статье еще в 2015 году в блоге компании Tibbo мы писали об идее, философии и истории создания IO Ninja https://habr.com/ru/companies/tibbo/articles/254381/

Этот продукт подойдет для упрощения жизни IT-специалистов, сисадмины будут рады автоматизировать рутину, безопасники смогут копаться в логах и трафике, а разработчики, хоть и не любят это признавать, нередко оказываются по уши в низкоуровневых вещах, типа работы с железом или дебага протоколов. Так что каждому по потребностям — и всем по профиту!

Программная часть IO Ninja

Знаете, если вы когда-нибудь имели дело с сетевыми протоколами, железками на RS-232 или пытались отладить какой-нибудь нестандартный канал данных, то вы точно оцените IO Ninja. Это такой швейцарский нож для тех, кто погружается в мир ввода-вывода и сетевых коммуникаций. Эмулятор терминала, анализатор протоколов, монитор — всё в одном флаконе.

Фишка IO Ninja — в его модульной архитектуре. Есть плагины практически под любой транспорт и протокол: TCP, UDP, SSH, RS-485, SPI, Modbus RTU — список можно продолжать. А самое крутое, что сюда встроена поддержка скриптов. Хочешь генерировать пакеты на лету, обрабатывать входящие запросы, да ещё и настраивать собственный анализатор? Нет проблем — пиши скрипты и вперёд!

Версия 5.6.0 подкинула ещё несколько интересных плюшек. Теперь можно описывать динамические макеты данных с помощью новых конструкций dylayout и dyfield, что серьёзно упрощает работу с пакетами, структура которых неизвестна на этапе разработки. Добавили поддержку динамических пакетов, цветовое выделение байтов, а ещё — новый мастер создания плагинов для анализа протоколов. Захотелось сделать кастомный анализатор Modbus? Да легко, просто переопределяешь нужную функцию, и готово.

Кроме того, в логах теперь можно не только просматривать данные, но и создавать целые панели управления, фильтровать и экспортировать в pcap. Так что, если вы вдруг занимались захватом пакетов через Pcap Sniffer, то это будет как раз кстати.

Если вы хотели бы прочитать про живые примеры возможного использования IO Ninja, то вы можете найти их в статье на Хабре, которую мы ранее опубликовали в блоге компании https://habr.com/ru/companies/tibbo/articles/255221/

В чем его особенности?

Текст против Бинарных данных 

Некоторые протоколы основаны на тексте, другие — на бинарных данных. Выбирайте представление, которое лучше подходит для конкретного случая, и переключайтесь между этими режимами просмотра данных в любое время.

Четкая временная шкала 

Коммуникации включают не только входящие и исходящие данные — есть множество других событий (подключение, отключение, ошибки и т.д.). IO Ninja записывает все в один непрерывный журнал, чтобы обеспечить четкую временную шкалу событий.

Маркировка журнала с помощью регулярных выражений 

Избыток информации может быть неэффективен. Используйте визуальные средства, маркируя журнал цветами и разделителями пакетов на основе шаблонов регулярных выражений.

Калькулятор контрольных сумм 

Многие протоколы используют контрольные суммы для проверки целостности данных. IO Ninja вычисляет все стандартные контрольные суммы на лету, когда вы выделяете данные в журнале, и отображает результаты в таблице вместе с локальной пропускной способностью, временными интервалами, смещениями байтов и др.

Различные режимы копирования 

Копируйте данные из журнала любым удобным способом — в текстовом виде, в формате hex, в виде C-массива и т.д. IO Ninja умно распознает шаблон выделения, поэтому простое нажатие Ctrl+C всегда дает интуитивные результаты.

Эмулятор терминала 

Иногда вам нужен классический терминальный вывод входящих данных. IO Ninja поддерживает полностью совместимый терминальный режим X-Term, чтобы вы могли работать с удаленными Linux-серверами.

Средства передачи данных 

IO Ninja предоставляет удобные и мощные инструменты для подготовки пакетов перед передачей. Доступны текстовый редактор, современный hex-редактор и функция передачи файлов — выбирайте, что лучше подходит для вашей задачи.

Шаблоны пакетов 

Даже с хорошим hex-редактором кодирование полей бинарного пакета вручную — задача сложная и подверженная ошибкам. С помощью движка шаблонов пакетов вы описываете структуру пакета на языке, похожем на C, а затем удобно редактируете пакет в сетке свойств.

Библиотека пакетов 

Каждый раз при передаче пакета он сохраняется в панели истории пакетов. Вы можете повторно отправить любой пакет двойным щелчком, присвоить пакетам мнемонические имена и создавать библиотеки пакетов, используемых в вашей работе.

Перенаправление любых данных 

Механизм связывания сессий позволяет перенаправлять данные между любыми каналами — Serial ⇆ TCP, UDP ⇆ SSL, SSH ⇆ WebSocket и др. Запустите и настройте две сессии, затем нажмите «Связать сессии», и готово! Все данные будут передаваться из одной сессии в другую.

Поддержка скриптов 

Иногда требуется автоматизировать тестовые процессы. С помощью панели скриптов (Script Pane) вы можете программно генерировать пакеты, ожидать и реагировать на события, автоматически отвечать на входящие пакеты.

Расширяемая архитектура 

IO Ninja обладает высокой модульностью, а все плагины являются с открытым исходным кодом. Вы можете ознакомиться с их реализацией, модифицировать любые на свой вкус или создать что-то совершенно новое. Для удобства используйте IDE с подсказками кода, которую мы применяем сами!

В этой статье на Хабре вы можете увидеть пошаговый пример работы с IO Ninja https://habr.com/ru/companies/tibbo/articles/256803/

Аппаратная часть IO Ninja

Но программа — это только половина дела. Как говорится, софт без "железа" — это как компьютер без клавиатуры. Поэтому IO Ninja предлагает и аппаратную часть, три аппаратных сниффера для IO Ninja. Эти устройства просты, но функциональны и удобны для анализа асинхронных последовательных интерфейсов (RS232, RS422, RS485, UART с уровнем TTL), синхронных последовательных интерфейсов (I2C, SPI) и Ethernet.

Сниффер Serial Tap

Serial Tap — это доступный сниффер для мониторинга RS232, RS485 и TTL-уровневых UART-коммуникаций. Сниффер подключается к линиям данных и управления последовательных соединений и отправляет записанные данные в программное обеспечение IO Ninja в реальном времени.

Все входы Serial Tap доступны на быстросъемном клеммном блоке. Также Serial Tap оснащен двумя разъемами DB9 для «вставочного» мониторинга RS232-коммуникаций. Плата также предоставляет перемычки для обмена и замыкания сигналов RS232, а также двухцветные светодиоды для индикации состояния линий RS232. Перемычки и двухцветные светодиоды делают Serial Tap полезным инструментом для отладки проблем с проводкой RS232.

Ключевые особенности:

  • Питание от USB, дополнительное внешнее питание не требуется;

  • В комплекте USB-C кабель и два переходника DB9;

  • Три режима работы: RS232, RS485 и TTL-уровневый UART;

  • Быстросъемный клеммный блок для удобного подключения;

  • Мониторинг линий TX, RX, RTS, CTS, DTR и DSR;

  • Встроенные светодиоды для индикации состояния линий;

  • «Вставочный» мониторинг RS232-коммуникаций:

  •  Разъемы DB9 для установки Serial Tap «между» устройствами RS232;

  •  Перемычки для обмена и замыкания сигналов RS232 в парах TX/RX, RTS/CTS и DTR/DSR;

  •  Двухцветные светодиоды для различения положительных, отрицательных и нулевых уровней напряжения на линиях RS232.

Подробную техническую информацию и технические характеристики оборудования, инструкции по использованию, информацию об удалённом захвате данных, техническую документацию на плату и скриншоты работы с устройством вы сможете найти здесь https://ioninja.com/hardware/serial-tap.html

Сниффер Ethernet Tap

Ethernet Tap — это доступный сниффер для мониторинга Ethernet-трафика, проходящего через одно Ethernet-соединение. Tap передает Ethernet-трафик с задержкой около 5,2 мкс.

Ключевые особенности:

  • Надежно захватывает Ethernet-трафик 10Base-T и 100Base-T.

  • Основан на Intel MAX10 FPGA.

  • Шесть встроенных светодиодов:

    • Зеленый светодиод «Ready»;

    • Зеленый светодиод 100 Мбит/с (левый разъем RJ45);

    • Зеленый светодиод 100 Мбит/с (правый разъем RJ45);

    • Желтый светодиод Link/Activity (левый разъем RJ45);

    • Желтый светодиод Link/Activity (правый разъем RJ45);

    • Синий светодиод питания.

  • Высокоскоростной интерфейс USB 2.0 (480 Мбит/с) на разъеме USB-C.

  • В комплекте USB-C кабель.

  • Питание от USB, дополнительное внешнее питание не требуется.

  • Компактные размеры: всего 82 x 74 x 30 мм.

  • Продукт поддерживает обновление прошивки в полевых условиях через USB-интерфейс.

Подробную техническую информацию и технические характеристики оборудования, инструкции по использованию, информацию об удалённом захвате данных, техническую документацию на плату и скриншоты работы с устройством вы сможете найти здесь.

Сниффер I2C/SPI Tap

I2C/SPI Tap для IO Ninja — это доступный сниффер для мониторинга I2C и SPI коммуникаций. Наш сниффер позволяет подключаться к линиям I2C и SPI и сразу же отображать захваченные байты данных в программном обеспечении IO Ninja в реальном времени с использованием нашего инновационного двоично-шестнадцатеричного представления, специально адаптированного для полностью дуплексной передачи данных SPI.

Все входы I2C/SPI Tap доступны через удобный быстросъемный клеммный блок. Плата также оснащена светодиодами для индикации состояния линий I2C и SPI (SCL, SDA, CLK, MOSI, MISO, SS), что помогает быстро диагностировать проблемы с проводкой.

Ключевые особенности:

  • Питание от USB, дополнительное внешнее питание не требуется;

  • В комплекте USB-C кабель;

  • Основан на Inter MAX10 FPGA;

  • Включает генератор тестовых последовательностей I2C и SPI для самотестирования Tap;

  • Имеет 16 буферизованных линий ввода/вывода D0..D15, подключенных к быстросъемному клеммному блоку;

  • Все буферы работают как преобразователи уровней, позволяя Tap работать с логическими сигналами с уровнями от 1.8 В до 5 В;

  • Восемь встроенных светодиодов:

    • Зеленый светодиод READY;

    • Два универсальных зеленых светодиода M0 и M1 для индикации режима и состояния;

    • Четыре желтых светодиода для индикации состояния линий ввода/вывода D0..D3 (достаточно для I2C и SPI);

    • Синий светодиод питания;

Подробную техническую информацию и технические характеристики оборудования, инструкции по использованию, информацию об удалённом захвате данных, техническую документацию на плату и скриншоты работы с устройством вы сможете найти здесь.

Заключение

IO Ninja — это идеальный помощник для тех, кто занимается отладкой и мониторингом данных. Благодаря совмещению мощного программного обеспечения с высокоточным "железом", вы сможете эффективно решать задачи по работе с различными интерфейсами, от RS232 до Ethernet и I2C.

Аппаратные платы из коробки интегрируются с программой IO Ninja и позволяют анализировать данные с максимальной точностью.

Если вы инженер или разработчик, IO Ninja сэкономит вам кучу времени, избавив от рутинных задач по анализу данных. А готовые скрипты и возможность программирования устройства на Jancy позволяет решить любую задачу. В общем, это отличный набор инструментов для любых задач, связанных с интерфейсами и протоколами.

P.S. Больше информации смотрите у нас на сайте: www.tibbo.ru, а крутые кейсы и не только будем публиковать в нашем Telegram-канале: https://t.me/tibbotechnologyru .  Подписывайтесь!

Комментарии (1)


  1. Vladi_world
    13.09.2024 13:57
    +1

    Спасибо, что помните про комментарии в предыдущих статьях, и в этой статье кроме теории показали реальные кейсы использования ПАК и пошаговый пример, как с ним можно работать.