В современных инфраструктурах обнаружение аномалий в сетевом трафике становится критически важным. Благодаря росту вычислительных возможностей мобильных устройств, платформа Termux позволяет запускать лёгкие AI‑модели непосредственно на Android‑устройствах, которые могут выступать в роли удалённых сенсоров или вспомогательных узлов.
Что будем делать
В этом руководстве мы:
- Установим
Termuxи необходимые пакеты. - Подготовим модель
TensorFlow Liteдля классификации пакетов. - Настроим захват сетевого трафика с помощью
tcpdump. - Создадим скрипт на Python, который будет в реальном времени преобразовывать данные пакетов в признаки и подавать их в модель.
- Оценим производительность и обсудим варианты оптимизации.
Требования
Для успешного выполнения всех шагов требуется:
- Устройство Android с
Termux(рекомендовано Android 8+). - Подключение к сети Linux‑серверу (можно через SSH) для получения трафика.
- Модель
.tflite, обученная на наборе признаков сетевых пакетов (например, на базе CIC‑IDS 2017).
Установка Termux и базовых пакетов
pkg update && pkg upgrade -y
pkg install python clang make git wget -y
pip install --upgrade pip
Установим TensorFlow Lite Runtime для Python:
pip install tflite-runtime
Для захвата пакетов понадобится tcpdump:
pkg install tcpdump -y
Подготовка модели TensorFlow Lite
Если у вас уже есть готовая модель (anomaly_detector.tflite), скопируйте её в директорию ~/ml_models. В противном случае можно быстро собрать простую модель:
mkdir -p ~/ml_models && cd ~/ml_models
wget https://example.com/models/anomaly_detector.tflite
Важно, чтобы входные тензоры соответствовали формату, который будет генерировать наш препроцессор (например, массив из 100 чисел, нормализованных от 0 до 1).
Захват сетевого трафика
Запустим tcpdump в режиме «raw» и будем передавать вывод в пайп:
tcpdump -i any -s 0 -w - 'not port 22' | python ~/ml_models/infer.py
Флаг -i any указывает слушать все интерфейсы, -s 0 – захватывать полный пакет, а 'not port 22' исключает SSH‑трафик, чтобы не перегружать модель.
Python‑скрипт для предобработки и инференса
#!/usr/bin/env python3
import sys
import struct
import numpy as np
import tflite_runtime.interpreter as tflite
# Загрузка модели
interpreter = tflite.Interpreter(model_path="/data/data/com.termux/files/home/ml_models/anomaly_detector.tflite")
interpreter.allocate_tensors()
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
def packet_to_features(pkt_bytes):
# Пример простой фичи: первые 100 байт, дополненные нулями, нормализованных
max_len = 100
data = pkt_bytes[:max_len]
if len(data) < max_len:
data = data.ljust(max_len, b"\x00")
arr = np.frombuffer(data, dtype=np.uint8).astype(np.float32) / 255.0
return arr.reshape(1, max_len)
while True:
# Чтение заголовка pcap‑файла (24 байта) – пропускаем
hdr = sys.stdin.buffer.read(24)
if not hdr:
break
# Длина пакета (bytes 16‑20 в заголовке)
pkt_len = struct.unpack(' 0.7:
print(f"[ALERT] Anomaly detected: score={anomaly_score:.2f}")
Скрипт читает поток pcap в реальном времени, преобразует каждый пакет в вектор фиксированной длины и получает оценку аномалии от модели.
Оптимизация производительности
Для обеспечения стабильной работы на мобильных процессорах рекомендуется:
- Использовать модель с 8‑битными весами (
quantized), что уменьшает размер и ускоряет инференс. - Ограничить количество обрабатываемых пакетов в секунду (например,
tcpreplay --pps 1000для тестов). - Включить режим «performance» в Termux:
termux-setup-storage && termux-wake-lock.
Безопасность и изоляция
Запуск захвата пакетов требует привилегий root. В Termux можно предоставить их через tsu (если устройство рутировано) или использовать sudo в окружении proot-distro. При работе с конфиденциальными данными убедитесь, что журналирование отключено и доступ к файлам ограничен правами chmod 600.
Тестирование модели
Для быстрой проверки можно использовать готовый набор pcap‑файлов:
wget https://github.com/defcom17/NetFlowDataset/raw/master/pcap/ICMP_DDoS.pcap -O /sdcard/ICMP_DDoS.pcap
tcpdump -r /sdcard/ICMP_DDoS.pcap -w - | python ~/ml_models/infer.py
Ожидается вывод с несколькими строками [ALERT], если модель правильно идентифицирует атакующий трафик.
Заключение
Интеграция TensorFlow Lite в Termux открывает новые возможности для распределённого мониторинга сетей, позволяя использовать мобильные устройства в роли лёгких аналитических узлов. Приведённый пример демонстрирует, как собрать стек: захват пакетов → предобработка → инференс → оповещение, полностью внутри Android‑окружения.
Если вам требуется разработка кастомных AI‑моделей, настройка масштабируемой инфраструктуры мониторинга или профессиональная поддержка проектов в области кибербезопасности, команда RybinskLab готова помочь. Мы предоставляем услуги по обучению моделей, их оптимизации под мобильные платформы и интеграции в существующие IT‑системы.