Eset nod32 http header http заголовки

Антивирус eset nod32 при обновлении отправляет http заголовки в которой находятся
некая информация о его настройках, а также некоторых свойствах OS.
Имея всю информацию о клиентском антивирусе nod32, ею можно манипулировать для дальнейшей работы.
Пример практического варианта.


# http_user_agent описание параметров

Разберем некоторые параметры http_user_agent
В основном несет в себе информацию о OS и установленных настройках nod32.

# параметр возможные значения описание
  APP ess / eav / esshe / essbe / eavhe / eavbe / mobile / ... тип программы антивируса
  BPC 8.0.312.3 версия ПО
  CD 0/1/2 Диагностика - дамп памяти приложения
Тип дампа:
отсутствие параметра - отключена диагностика
0 - не создавать дамп памяти
1 - минидамп
2 - полный дамп памяти
# CL 1.1.1 Eset Live Grid - система репутации.
Значение по порядку:
1/0 — включена система репутации
1/0 — отправляет анонимную статистическую информацию
1/0 — отправляет файлы
P.S. Многие предоставляющие свои собственные сервера обновления остерегаются включенной этой функции т.к. она палит их сервера компани eset.
  DC 1/0 Devices Сontrol / Контроль устройств
показывает интегрирован ли в систему или нет
  FW 0.0
0.10
16.0
...
firewall
0.0 — включен фильтруется
другие значения возможно подразумевают открытые не знащищеные соединения или созданные правила вручную.
0.10 — созданные правила вручную в количестве 10 штук
16.0 — открытые не защищенные соединения в количестве 16 штук
# HWF 0100B90D-B130-BTCG-C7A5-END2377HSB38 Индивидуальный индификатор программы.
Параметр может отсутствовать при использовании файла лицензии.
  LNG 1049
1033
...
Языковая версия компонента (параметр возможно устаревший)
v7, v8 - отсутствует параметр.
v4, v5, v6 - используется.
1049 - русский
1033 - английский
  PAR 1/0/-1 Родительский контроль
1 — включен
0 — выключен
-1 — отсутствует модуль
  PLOC ru_ru
en_en
...
локация программы
  PCODE 110.0.0
106.0.0
...
код продукта
«Управление подключением подписки» - cобытие для сетевой службы по управлению антивирусом на подключение и отключение услуг антивируса
  PUA 1/0 модуль: потенциально нежелательные приложения (Potentially unwanted application)
(1/0 - включен/выключен)
  PX 0/1 прокси
  OS 6.1.7601 SP 1.0 NT
...
версия OS
весь список ver
  TDB 26911 Текущий build базы антивируса nod32.
Работает в тандеме с сигнатурой БД
(файл «update.ver» в секции «ENGINE2» параметр «build»)
Параметр присутствует во всех версиях.
  VDB 21600 (не используется) возможно аналог TDB.
v7, v8 - отсутствует параметр
v3, v4, v5, v6 - присутствует параметр
  UPD http://server.ru:1010 Адрес обновления
гдето убрали гдето оставили, присутствует в бизнес версиях к примеру eavbe
  RA 0/1 Удаленное администрирование (Remote Administration)
значение меняется при указании явного адреса сервера, независимо стоит общая галочка «подключиться» или нет.
  x64c
x32c
отсутствует eset архитектура ПО
32-битная версия
64-битная версия
и другие...

# Парсер заголовка http_user_agent на php

Скрипт парсит регулярным выражением данные заголовка HTTP_USER_AGENT и преобразует в массив данных.
Приходит заголовок HTTP_USER_AGENT такой:

ESS Update (Windows; U; 32bit; PVT F; BPC 8.0.312.3; OS: 6.1.7601 SP 0.0 NT; TDB 25903; CL 1.1.1; x64c; APP ess; BEO 1; ASP 0.0; FW 0.0; PX 0; PUA 1; CD 1; RA 0; HWF: ; PLOC ru_ru; PCODE 110.0.0; PAR 0; ATH 2; DC 1)
Результат парсинга:
Array
(
    [Windows] => 
    [U] => 
    [32bit] => 
    [PVT] => F
    [BPC] => 8.0.304.1
    [OS] => 6.1.7601 SP 3.0 NT
    [TDB] => 25903
    [CL] => 1.1.1
    [x64c] => 
    [APP] => ess
    [BEO] => 1
    [ASP] => 0.0
    [FW] => 0.0
    [PX] => 0
    [PUA] => 1
    [CD] => 1
    [RA] => 0
    [HWF] => 
    [PLOC] => ru_ru
    [PCODE] => 110.0.0
    [PAR] => 0
    [ATH] => 2
    [DC] => 1
    [HTTP_X_NOD32_MODE] => passive
    [HTTP_X_ESET_UPDATEID] => userName
    [REQUEST_TIME] => 1428959487
    [REQUEST_FILE] => update.ver
    [REMOTE_ADDR] => 127.0.0.1
)

Скрипт парсинга Http_user_agent

// php5
# собираем данные об антивирусе nod32
if (!preg_match("/^ESS Update \((.*)\)$/iu",trim($_SERVER["HTTP_USER_AGENT"]))) { // проверяем, действительно ли это nod32
	header($_SERVER['SERVER_PROTOCOL']." 401 Unauthorized"); // nod32 откликается на этот заголовок
	exit('<h1>401 Unauthorized</h1>');
} else {
	# парсим http_user_agent, и помещаем в массив
	preg_match_all('/(\w+):?(?:\s+((?:\s*[^;\s]+)*))?/', substr($_SERVER["HTTP_USER_AGENT"], 12, -1), $arrUSER_AGENT);
	$arrFullInfo = array_combine($arrUSER_AGENT[1], $arrUSER_AGENT[2]); // комбинируем оба массива
	# дописываем в массив другие данные:
	if(isset($_SERVER['HTTP_X_ESET_UPDATEID'])) $arrFullInfo['HTTP_X_ESET_UPDATEID'] = preg_replace('/[^a-zа-я0-9\s-_@#().$%+]/iu', '*', trim($_SERVER['HTTP_X_ESET_UPDATEID']));
	$arrFullInfo['REQUEST_TIME'] = date("d.m.y H:i:s",$_SERVER['REQUEST_TIME']);
	if(isset($_SERVER['HTTP_X_NOD32_MODE'])) $arrFullInfo['HTTP_X_NOD32_MODE'] = htmlspecialchars($_SERVER['HTTP_X_NOD32_MODE']);
	if(isset($_SERVER['REQUEST_URI'])) $arrFullInfo['REQUEST_URI'] = basename(trim(htmlspecialchars($_SERVER['REQUEST_URI'])));
	if(isset($_SERVER['HTTP_REFERER'])) $arrFullInfo['HTTP_REFERER'] = htmlspecialchars($_SERVER['HTTP_REFERER']);
	$arrFullInfo['REMOTE_ADDR'] = filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP);
}
/*
 Общий масив собраных данных об антивирусе nod32
 @ print_r($arrFullInfo);
*/

# дополнительные http заголовки

nod32 отправляет дополнительные заголовки:

nod32 автоотслеживание параметра в реестре при установки антивируса
Контроль раздачи базы данных nod32
nod32 скрипт для удаленного запуска обновления
Все о nod32