Дорогие друзья, рад познакомить вас с очередным грандиозным Open Source проектом под названием Reticulum.
Если в двух словах, это набор инструментов для организации mesh-сетей.
С его помощью можно создавать сетевые соединения используя различные аппаратные платформы и интерфейсы Wi-Fi, Serial Port, LoRa, KISS AX.25 и т.д
Полное описание проекта с прошивками, исходным кодом, схемами и инструкциями по эксплуатации можно почитать на сайте проекта.
А в этой статье, в качестве примера мы поднимем этот самый Reticulum между смартфоном и нетбуком на Debian 10, используя сеть Wi-Fi (2.4GHz) старенького роутера.
протестируем отправку сообщений от устройства А до устройства Б, отправку файлов и выполнение команд.
Роутер тут взят в качестве примера, надеюсь понятно что топологию своей сети вы определяете сами и можете поднять AP хоть на этих железячках :)
Или использовать более экзотическую инфраструктуру
Отправка сообщений
Для обмена сообщениями у Reticulum есть:
- Sideband - клиентское приложение под Android
- sbapp - GUI клиент под Linux/MacOS
- nomadnet - консольный клиент
смайлики, голосовые сообщения и других плюшки которые есть в популярных мессенджерах типа телеги, вибера и вотсапа отсутствуют, так как он прежде всего расчитан на работу с железом со слабой производительностью и сетей со слабой пропускной способностью.
Отправка файлов
Для отправки файлов из смартфона нам будет необходим эмулятор Termux
В него мы поставим Python3, Rust, а так же libexpat , binutils и собственно сам пакет rns :
Ставим всё это с доступом эмулятора к файловому хранилищу.
termux-setup-storage
pkg install python3
pkg install libexpat
pkg install rust
pkg install binutils
pip install rns
для примера создадим несколько текстовых файлов, упакуем их и отправим слушателю.
#> mkdir test
#> cd test
#> echo "Hello World" > file1.txt
#> echo "Secret Info" > file2.txt
#> tar -czf my_secret_archive.tar.gz .
Далее на принимающей стороне командуем:
$> rncp -l -n
получаем уникальный идентификатор сессии на который будем отправлять файл [SESSION_ID]
На стороне отправителя:
#> rncp my_secret_archive.tar.gz [SESSION_ID]
Удалённое управление
Аналогичным образом Reticulum позволяет осуществлять мониторинг или удалённое управление с помощью утилиты rnx
На принимающей стороне достаточно запустить:
$> rnx -l -n
На стороне отправителя:
#> rnx [HEX_ID_RECIVER] "uname -a"
Поддерживаемое железо
В качестве радио модемов заявлена поддержка следующих железяк.
Криптография
Reticulum использует простой набор эффективных, сильных и современных криптографических примитивов с широко доступными реализациями, которые можно использовать как на процессорах общего назначения, так и на микроконтроллерах.
- Ed25519 для подписей
- X22519 для обмена ключами ECDH
- HKDF для получения ключа
- AES-128 в режиме CBC
- HMAC-SHA256 для аутентификации сообщений
- SHA-256
- SHA-512
P/S
Зону покрытия можно существенно увеличить если использовать радиомодули LoRa или радиомодем на базе Arduino , направленную антенну и спутник ретранслятор ;)
но это уже совершенно другая СТАТЬЯ )))
Доклад Марка Квиста (разработчика Reticulum) с конференции 38c3
Если вам нравится материал публикуемый на данном канале, вы можете поддержать меня чашкой кофе☕
Отдельно буду признателен и благодарен вам за лайк, репост или подписку ❤️
Возможно вам так же будет интересно:
Загрузочная флэшка с нейросетями и Reticulum'ом
Всем счастья !