Представляю последнее, на данный момент , обновление скрипта.
Основные отличия от предыдущих версий:
1. Очень высокая скорость работы (фундаментально переделал методику анализа);
2. Минимальное обращение к удаленному серверу, только для скачивания обновленных и новых файлов;
3. Улучшенная работа парсера страничек для вытягивания пар логин/пароль;
4. Большое кол-во проверок на различные ошибки.
5. Полностью переделан вывод в лог, он стал компактным, при этом информативность увеличена
Описание:
Code:
Алгоритм работы:
1.Если сохраненной пары логин/пароль нет, то скачиваем страничку с ключами, парсим её и
составляем список пар логин/пароль, после этого сохраняем этот список в файл.
Если файл с сохраненным списком логин/пароль есть, то считываем его и в дальнейшем работаем с ним до тех пор,
пока не будет отказ авторизации, в таком случае считываем следующую пару из файла со списком ключей,
до тех пор пока он не окончиться, далее скачиваем страницу с ключами и вытягиваем оттуда обновленный список пар и
проверям авторизацию до тех пор пока или пара подойдет, или закончаться все списки из разных сайтов с ключами.
Если правильная пара так и не будет найдена, то скрипт прерывается с ошибкой с просьбой отредактировать переменную
HTMLs_list с указанием ссылки на страницу в которой находятся актуальные ключи (пары логин/пароль)
2. Дальше проверям есть-ли список серверов, если нет, выкачиваем update.ver с основного сайта update.eset.com,
парсим из него список серверов, сортируем случайным образом и сохраняем его в файл.
Если список серверов есть в виде ранее сохраненного файла то загружаем его из файла,
перемешиваем случайным образом и работает с этим списком.
3. Следующий шаг заключается в сравнении версии локальной антивирусной базы и версии, которая доступна на
удаленном сервере. В случае если будет обнаружена новая версия, то пробегаем по базе в поисках несовпадающих
размеров файлов (локальной и удаленной баз) и скачиваем только изменения (обычно это два-три файла),
формируя новый локальный update.ver.
Если всё успешно скачается, то скрипт завершается и при необходимости (если указано в конфиге)
создает архив базы в виде одного файла (для оффлайн обновлений)
Примечание: Вся логика работы скрипта сосредоточена на локальном анализе однократно скачанного за сессию
файла update.ver. Никаких лишних обращений к удаленному серверу не производится, исключительно только для
скачивания обновленных или недостающих файлов, а также для обновления раз в две недели списка серверов.
В процессе работы скрипт создает такие файлы (имена файлов и их размещение задаются в конфигурации):
key.txt - активная пара логин/пароль, которая используется для авторизации на серверах ESET
keys.txt - список пар логин/пароль, из которого по мере необходимости извлекается новая пара,
из-за этого список постепенно уменьшается в размере, пока не обнулиться.
servers.txt - список серверов, которые используются скриптом для скачивания обновлений.
С каждым запуском скрипта используется сервер взятый случайным образом.
status.txt - файл статуса, в текстовом виде отображается текущее состояние базы или результат
работы скрипта в случае ошибки
ver.txt - актуальная версия локальной базы
log.txt - подробный лог работы последнего запуска скрипта
Примечание: В случае фатальных ошибок (при котором работа скрипта не возможна), подробный лог копируется в виде
nod32upd_ERR_$DATE.log, где DATE - дата и время события.
nod32upd.log - результат работы скрипта в виде времени и строки результата
(успешное обновление, нет новых обновлений, ошибка обновления)
Также результат работы скрипта записывается в системный лог ОС (syslog.log)
Ключи при запуске:
-h или --help - показывает список доступных ключей.
-c или --check - принудительно указывает скрипту перепроверить все файлы в локальной базе,
тем самым скрипт принудительно пофайлово сравнит локальную базу с удаленной.
-n или --new - новый/чистый запуск скрипта, при этом перед работой удаляются локальная база и
все дополнительные файлы, которые ранее создал скрипт в процесс своей работы.
-f - если скрипт каким-то образом неожиданно прервался или пользователь прервал работу скрипта
вручную (ctrl-C), скрипт в дальнейшем не будет стартовать, этот ключ позволит
принудительно запустить скрипт.
Версии:
Code:
0.9.9 - Отключил перебор серверов в случае если не найдена новая версия, перебор серверов будет осуществляться только при недоступности сервера.
0.9.8 - Добавил постоянную рандомную сортировку серверов, увеличил "время жизни" списка серверов до 14 дней.
0.9.7 - Файл со списком серверов живет неделю, всегда используем ранее сформированный файл со списком ключей, удаляем из него ключи которые не проходят авторизацию.
0.9.6 - Сократил вывод в лог, теперь в лог выводится только успешно скачанные обновления, сервера сортируются в случайном порядке и сохраняются в файл.
0.9.5 - Небольшие исправления в алгоритме при некоторых ошибках, улучшил сообщения.
0.9.4 - Изменил процедуру скачивания при проблемах авторизации.
0.9.3 - Исправил поведение скрипта при проблемах нахождения ключей.
0.9.2 - Добавил ключи для запуска: -n -> удаление файлов базы, архива и дополнительных файлов, -с -> принудительно проверяем локальную базу.
0.9.1 - Проверяю версию базы на удаленном сервере, сохраняем список серверов что-бы постоянно его не скачивать.
0.9.0 - Переделал парсинг update.ver, скорость работы увеличилась в разы.
0.8.1 - Сравниваем размер файла на зеркале и сервере без попыток скачивания.
0.8.0 - Убрал отсылку SMS, кардинально улучшил вывод лога, массовые проверки на различные ошибки, добавил ключ -f -> принудительный запуск скрипта, если ранее он неожиданно прервался.
0.7.0 - Усовершенствовал обработку скачаных страниц с ключами.
0.6.16 - Добавил переменную PACKED, если она равна yes, то будет создаться архивная копия базы в виде одного файла.
0.6.15 - Решил проблему с багом 'rel-stop' - теперь не качается старая версия базы.
0.6.14 - Кардинально уменьшил размер базы (только для v4.x ESET EAV и ESS), подключил закачку x64.
0.6.13 - Отключена повторная проверка более свежих баз на других серверах в случае корректного скачивания базы, добавлен файл истории обновления.
0.6.12b2 - Заменил User Agent на User Agent который подставляет ESET ESS v4, имитируем подключения настоящего NOD32.
0.6.12b - Исправление в строке архивирования базы (спб BASik), добавил сайты с ключами (спб alex_optek).
0.6.11b - Косметические изменения в алгоритме вырезания ключей, база остается доступной (тестовый вариант).
0.6.10 - Доработал алгоритм вырезания ключей со страницы, убрал мусор.
0.6.9 - Исправил название языка на Голландский, поставил проверку на тел.номер, обновил список серверов.
0.6.8 - Добавил в исключения файлы билдов ESS, EAV и ESET Mail Security.
0.6.7 - Исправление ошибки, вынес конфигурацию в отдельный файл.
0.6.6 - Исправление ошибок, оптимизация
0.6.5 - Исправления и модернизация парсера страницы с ключами
0.6.4 - Добавил список из страниц, парсинг страничек сделал слегка универсальным
0.6.3 - Очередные изменения на сервере
0.6.2 - Возврат на разбор ключей из html-страницы
0.6.1 - Нужные ключи качаем напрямую с сайта
0.6 - Автоматический разбор ключей из html-страницы
0.5 - Автоматический разбор ключей из файла