Альманах научных работ молодых ученых
XLVII научной и учебно-методической конференции Университета ИТМО. Том 1
111
WebRTC-протоколов, позволяющих организовать передачу данных между браузерами
пользователей и другими приложениями по технологии peer-to-peer [1].
Алгоритм получения IP представляется следующим образом:
– cоздается и инициализируется объект RTCPeerConnection;
– задается callback функция
для обработчика onicecandidate, который срабатывает, когда
ICE агенту требуется доставить сообщение через сервер;
– в callback функции проверить на существование переданного объекта «кандидата»,
произвести считывает свойства и парсинг IP.
а
б
Рис. 2. Сравнение полученного IP с реальным
На рис. 2, а, представлены результат работы скрипта из приложения 1, выведенный в
консоль разработчика, и
параметры адаптера, полученные в консоли windows с помощью
команды ipconfig (рис. 2, б).
Посредством чистого JavaScript невозможно получить маску подсети, предположим,
что в Интранете используется класс сети C, так как это наиболее частое явление.
Следовательно, маску подсети принимаем за 255.255.255.0.
Далее рассмотрим подходы для сканирования портов
локальной машины и других
хостов в локальной сети. Один из способов – отправка ajax запросов на исследуемые сокеты.
Однако возникает две существенных проблемы. Первая проблема заключается в наложении
ограничений с помощью CORS политики, используемой современными браузерами, что
решается правильной конфигурацией сервера «отдающего» запрашиваемую страницу с
«правильным» HTTP-заголовком. Вторая – возможность обнаружения только веб-сервисов,
так как технология ajax способна работать только с протоколом HTTP. Добиться
обнаружения различных сервисов на хосте можно довольно интересным способом:
осуществить добавление в DOM страницы объекта
изображения с атрибутом src,
принимающем в себе следующий формат адреса ftp://ip:port , где IP – IP сканируемого хоста,
port – сканируемый порт. Суть метода основывается на замере времени между началом
загрузки изображения по указанному адресу и возникновением ошибки, которая должна
отслеживаться в callback-функцией, переданной объекту с помощью атрибута onerror.
Пример работы метода представлен на рис. 3, а, на котором
представлен вывод консоли
разработчика браузера
Mozilla Firefox, в которую был произведен вывод временных
промежутков запроса сокетов. На рис. 3, б – вывод сканирования локального хоста на
наличие открытых tcp портов.
а
б
Рис. 3. Тестирование функции сканирования портов
Альманах научных работ молодых ученых
XLVII научной и учебно-методической конференции Университета ИТМО. Том 1
112
По результатам вызова метода сканирования портов можно утверждать, что запрос на
закрытый порт требует в среднем около двух секунд времени, в то
время как запрос на
открытый порт может происходить как несколько миллисекунд (запрос на 135 tcp порт –
3 мс), так и довольно долго – порядка 30 с. В ходе эксперимента с портами 1025 и 1026,
засечь время вопроса за адекватное время не удалось. Таким образом, можно прийти к
выводу, что подобный метод можно использовать для сканирования Интранета.
Исходя из особенности реализации функции определения локального IP-адреса,
следует отметить, возможность применения данного метода для браузеров Mozilla Firefox и
Google Chrome.
Также требуется обратить внимание на информацию о блокировании в браузере Google
Chrome запросов по протоколу ftp в связи с угрозой, которая реализуется в данной работе [2].
Следовательно, можно сделать вывод о применимости описанных методов исключительно к
браузеру Mozilla Firefox, который по состоянию на 2017 год занимает 5,96% рынка [3].
Таким образом, можно сделать вывод, о потребности более глубокого погружения в
решаемую проблему в дальнейших исследованиях по данной тематике.
Do'stlaringiz bilan baham: