Модификация пакетов TCP на лету - PullRequest
0 голосов
/ 05 сентября 2018

Я хотел бы проверить и изменить TCP-пакеты на лету в Android. Например, для создания собственного решения VPN: шифрование данных, изменение порядкового номера, обработка зарезервированных битов и т. Д.

Я предполагаю, что потребуется следующее:

  1. Корневое устройство. Я думаю, что делать такие вещи на стоковом устройстве невозможно.
  2. Драйвер ядра скомпилирован для точной версии ядра и архитектуры целевого устройства. Я думаю, он будет загружен в ядро ​​с помощью modprobe / insmod.
  3. Привилегированный демон для взаимодействия с драйвером. Демон будет использовать IOCTL для доступа к драйверу и предоставит локальный сокет TCP, который будет использоваться графическим интерфейсом для отправки команд.
  4. Графический интерфейс для взаимодействия - загрузка и сохранение данных и / или конфигурации с использованием сокета TCP, предоставляемого демоном.

Я представляю себе следующие ограничения:

  1. Решение будет развернуто на пользовательских устройствах. Я полагаю, что это невозможно реализовать независимым от устройства способом из-за отсутствия стабильного ABI ядра Linux. А как насчет Android-проекта Treble HIDL ?
  2. Невозможно достичь жеребенка, используя только Android VpnService class.

Примечания:

  1. Лицензирование. Я предполагаю, что для драйвера ядра возможна закрытая лицензия.
...