Created
October 5, 2017 09:45
-
-
Save anonymous/eea3aef2e62ebbfb25435b8e332b6e95 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Если (IP-протокол пакета == 0x06 (TCP)) { | |
| Декодирование полученного пакета в контексте TCP-протокола | |
| Применение аккумулированых изменений в SEQ и ACK числах TCP-потока для данного пакета | |
| Если (пакет исходящий и тело пакета начинается с одного из HTTP термов ["GET", "HEAD", "POST", "PUT", "DELETE", "TRACE", "CONNECT"]) { | |
| Найти конец заголовков и добавить заголовок с именем пользователя в кодировке UTF8 | |
| Вернуть сообщение об изменении пакета | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Если (IP-протокол пакета == 0x06 (TCP) и пакет исходящий) { | |
| Добавить IP-опцию метки | |
| Вернуть сообщение об изменении пакета | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Инициализация локальных переменных | |
| Разбор аргументов командной строки и инициализация модулей приложения | |
| Открытие дескриптора коммуникации userspace <-> kernelspace с драйвером windivert на основе строки фильтра пакетов | |
| Нахождение значений MTU доступных интерфейсов | |
| Установка обработчиков сигналов процессу | |
| Логирование старта работы | |
| Цикл (пока дескриптор windivert актуален) { | |
| Получение пакета в userspace от windivert | |
| Декодирование полученного пакета в контексте IP-протокола | |
| Применение модулей к IP-пакету | |
| Если(хотя бы один модуль изменил пакет или разрешил его передачу без изменений) { | |
| Пакет кодируется обратно согласно IP-протоколу, при необходимости фаргментируется в соответствии с MTU | |
| } | |
| } | |
| В случае получения сигнала SIGINT или SIGTERM, логируется завершение работы |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment