Представьте себе сетевые пакеты, летающие по воздуху или бегущие по сетевому кабелю вашего компьютера — какого они цвета?

Чтобы увидеть возможный спектр 256 цветов, доступных нам в наших пакетах, мы могли бы написать крошечный фрагмент кода Crystal, чтобы использовать LibPcap, чтобы захватить их в реальном времени и представить каждый байт (8 бит) в нем как отдельный блок цвета в командной строке.

Вам понадобится Packetz, библиотека захвата сетевых пакетов, созданная с помощью LibPcap, включенная в файл shard.yml вашей программы:

# example shard.yml
name: color_live_packets
version: 0.1.0
  dependencies:
    packetz:
      github: picatz/packetz

Чтобы установить зависимости сейчас с файлом shard.yml, просто запустите:

$ shards install

Теперь мы можем просто скомпилировать программу с crystal :

$ crystal build color_live_packets.cr --release

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

$ ./color_live_packets
██████████████████████████████████████████████████████████████████^C
Stopping!

В 256 цвете:

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

Я думаю, что это просто отличная возможность начать работу с другими способами раскрашивания пакетов.

Код GitHub

Код этого сообщения в блоге был адаптирован из написанного мной инструмента командной строки под названием niji на GitHub, который, по сути, делает то же самое, но вы можете указать сетевой интерфейс для прослушивания! Варианты, «йоу!

Больше кристаллов

Чтобы узнать больше о Crystal, вы можете посетить GitHub, Документацию, Twitter или даже чат Gitter проекта! Я думаю, вы найдете замечательное, полезное сообщество, которое делает действительно потрясающие вещи с помощью красивого языка.

Заключительные мысли

Может быть, мне стоит сделать приложение с electronicJS или чем-то еще, чтобы визуализировать пакеты не только в командной строке. Как радуга Wireshark. Радужная акула. 🌈 🦈

Есть ли применение для этой практики? Я думаю вполне может быть. В частности, помогая определить шаблоны визуально, помимо простого анализа пакетов в известную структуру, как это делает Wireshark или PacketGen. Я думаю, что это действительно скорее помощник традиционного анализа пакетов, чем замена.

На это также действительно приятно смотреть.

До следующего раза, это все, ребята!