7 March 2014

Microsoft NCSI на службе или как мы искали забытый нетбук

Development for Windows
Казалось бы, обычная история — однокурсник забыл нетбук в университете, однако стечение обстоятельств дало идею использования стандартной функции Windows для возможности определения последнего мест выхода устройства в сеть.

Что за Microsoft NCSI?

Microsoft NCSI или Network Connectivity Status Indicator — функция проверки работоспособности соединения с интернетом в Windows Vista/7/8. Это она показывает желтый восклицательный знак на значке сетевых подключений при отсутствии подключения к интернету, или же выдает предупреждение о возможной необходимости аутентификации в сети через браузер.

Подробнее можно почитать на Technet, я же опишу кратко суть работы:

При подключении к сети Windows пытается (для IPv4):
1) Зайти по адресу www.msftncsi.com/ncsi.txt и ожидает ответа 200 OK с телом «Microsoft NCSI»
2) Определить IP dns.msftncsi.com и ожидает ответа 131.107.255.255

Если оба пункта выдают ожидаемый результат — считается что сеть имеет доступ в интернет
Если файл недоступен, а IP определяется правильно — отображается уведомление о возможной необходимости аутентификации в сети через браузер.
Если оба шага не выдают ожидаемые результаты — считается что сеть не имеет доступа в интернет.

Адреса, ожидаемые ответы и собственно работу этой функции настроить в реестре по адресу
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet

Предыстория

Когда я узнал о принципе работы NCSI, у меня появилась идея изменить параметры на свой сервер (как из-за параноидального настроения, так и из интереса).

Подумав, я решил использовать существующую логику для удобства проверки при проблемах с интернетом дома. Традиционными состояниями были «все работает нормально», «нет связи вообще (даже до серверов провайдера)» и «доступ только до локальной сети провайдера». В итоге я настроил проверку DNS на один из ресурсов провайдера (доступного в том числе снаружи), а проверку получения файла — на свою VPS. Таким образом, если при проблемах с интернетом мне отображалось сообщение что нужно авторизоваться — значит скорее всего проблема у провайдера на выходе, и смысла звонить разбираться нет, т.к. интернет отсутствует как минимум у микрорайона.

Такая система конечно изредка давала сбои — при ковырянии VPSки или проблемах у домашнего провайдера при подключении извне выдавался ложный статус, но такие проблемы были редкими.

Узнав о моей идее, друг, сидящий на этом же провайдере, сделал себе аналогичные настройки на своих домашних устройствах, настроив проверку доступности файла на мою VPS.

Думаю многие уже догадались о принципе поиска…

День X

Вечером дня X при разговоре знакомый пишет, что судя по всему забыл нетбук в университете. Ехать практически через весь город, да и насколько помнит, забыл в кабинете скорее всего, т.е. не критично. Только не помнит в каком именно из тех, где были пары — доставал ли он его после первой пары или нет.

Статьи бы не было, если бы в этот день я не экспериментировал после разговора с веб-сервером на той самой VPS. Ища нужный лог-файл в списке по названиям доменов, глаз зацепился на лог поддомена NCSI и вспомнил о том, что у знакомого ведь настроен NCSI на мой сервер! Таким образом, можно было догадаться приблизительно о последнем месте включения нетбука по последнему IP и времени, т.к. в университете несколько точек WiFi с разными внешними IP и все были сохранены для автоподключения. Посмотрев лог и задав пару наводящих вопросов знакомому, я сказал ему где скорее всего он забыл нетбук. На следующий день знакомый сразу нашел нетбук в предполагаемой аудитории.

Вывод

В итоге получилась интересная идея — настроить у каждого устройства запрос файла со своего сервера, указав разные имена файлов для каждого устройства и настроив хранение отдельного лога на сервере. При подключении к сети IP появится в логах, что может помочь в поиске, если подобное вдруг случится. Конечно по IP не во всех ситуациях можно что-либо сказать, но в некоторых ситуациях можно быть уверенным, что забыли вы его все-таки скажем на работе или в университете, а не где-то еще. Правда под вопросом остается случай «Кто-то включил ноутбук, но на пользователя стоит пароль» — подключится ли при этом ноутбук к сохраненной сети без входа в систему или же нет?
Идея дает и негативные варианты использования — можно ведь следить за подключениями компьютера и с другими целями, но думаю что их не стоит здесь обсуждать.

Не теряйте ваши гаджеты!
Tags:NCSIMicrosoft NCSIWindowsслучай из жизни
Hubs: Development for Windows
+43
28.4k 170
Comments 28
Popular right now
Основы HTML и CSS
November 30, 2020FreeНетология
Профессия iOS-разработчик
November 30, 202075,000 ₽SkillFactory
SMM-менеджер
November 30, 202059,998 ₽GeekBrains
Frontend-разработчик с нуля
November 30, 202077,940 ₽Нетология
Курс по аналитике данных
November 30, 202053,500 ₽SkillFactory