Обход СОРМ провайдера
Всем известно, что на стороне провайдеров интернета установлено оборудование СОРМ с анализатором пакетов.
Рассмотрим простой способ обхода СОРМ по протоколу HTTP.
Постановка задачи
Найти способ передачи информации (загрузка веб-страницы по URL) по протоколу HTTP в обход СОРМ. Будем предполагать, что POST-запросы внутри конкретного сайта не анализируются с помощью СОРМ.
Решение
Для данного решения можно использовать PHP и C++.
Большинство хостингов работают на Linux, поэтому компилировать программу шифрования нужно будет под Linux (версии на хостинге и локальной машины должны совпадать).
Нам понадобятся:
- Иностранный хостинг с поддержкой PHP, и в частности функции PHP EXEC.
- Алгоритм шифрования текстовой информации, реализованный с помощью компилируемого языка программирования (например, на C++).Создадим два файла php на хостинге: index.php, handle.phpВ файле index.php реализуем форму post-запроса.
В поле ввода формы пользователь указывает url-адрес страницы, которая его интересует.
Алгоритм работы файла handle.php:Получаем из POST-запроса url сайта, необходимого пользователю.
- С помощью функции PHP file_get_content(url) получаем содержимое нужной веб-страницы.
- С помощью функции PHP EXEC запускаем бинарный файл (шифрование данных). Содержимое веб-страницы передается из PHP в бинарный (исполняемый) файл как аргумент командной строки.
- Исполняемый файл crypto.o (crypto.exe) предназначен для шифрования данных.
- Передача зашифрованных данных обратно в PHP-скрипт или в текстовый файл.Последний шаг производится уже на стороне клиента:
- Расшифровка данных на стороне пользователя.
Подробнее о шифровании
Алгоритм шифрования может быть эвристическим или обладать криптографической стойкостью (с ключом).
Таким образом на всех шагах решения данные не проходят через провайдера в открытом виде.
Примечания
В начале статьи мы предположили, что POST-запрос не анализируется с помощью СОРМ. Если это предположение неверно, то можно использовать технологию Java Servlet (шифровать запрос пользователя (url)) и функцию curl() для получения содержимого страницы по url. В таком случае все шаги данного решения полностью скрыты от СОРМ со стороны провайдера.
Заключение
Данное решение имеет недостатки:
Можно передавать только текстовую информацию и крайне неудобным (неэффективным) способом.
С помощью Java Servlet можно разработать собственный браузер, который будет взаимодействовать с иностранным хостингом и шифровать данные.