Книга знаний

Инф. технологии / Администрирование / Безопасность

Счастливым обладателям nod32 standart версии 2.7 и 3.x (и создание своего зеркала)

Помощь в создании сервера обновлений для nod32 версий 2.X "Стандарт" без наличия nod32 административного. (статья появилась в связи с наличием текущих версий 3.X :), но надеюсь кому и поможет (Пожалуй интереснее будет начиная со слов Продолжаем разговор :))Автор статьи: smaharbA | Редакторы:
Последняя редакция №23 от 10.04.09 | История
URL: http://kb.mista.ru/article.php?id=723

Ключевые слова: антивирус, antivirus, eset, nod32


Создаем два файлика, первый update.vbs, второй eset-sched.reg
помещаем в папку %programfiles%\Eset\updfiles, выполняем их поочередно.
Все теперь можно копировать папку %programfiles%\Eset\updfiles на сменный носитель с именем *:\nod_upd и обновлять с него антивирус на других компьютерах.
Теперь о главном (создания сервера обновлений)

Пуск - Настройка - Панель управления - Установка и удаление программ. Нажимаем "Установка компонентов Windows", отмечаем "Сервер приложений" и/или "Службы IIS". После установки заходим в оснастку "Диспетчер служб IIS" (или в соответствующую для текущей системы), раскрываем узел "Веб-узлы", далее правой кнопкой мыши - "Создать Веб-узел", даем название новому узлу "Обновление антивируса", выбираем порт 8081 (можно любой другой, но выбрал этот по аналогии с портом nod32 admin), задаем домашний каталог для веб-узла %programfiles%\Eset\updfiles, отмечаем "Чтение" и "Обзор" (для проверки). Далее на вновь созданном веб-узле правой кнопкой "Свойства" переходим на вкладку "Заголовки HTTP", по кнопке "Типы MIME" создаем новый тип, заполняем в форме поля "Расширение" и "Тип MIME" следующим ".*" (без кавычек конечно).
Проверяем созданный веб-узел набирав в адресной строке браузера http://localhost:8081, так же проверяем с другого компьютера заменив localhost на IP-адрес компьютера обновлений. Вы должны увидеть список файлов каталога %programfiles%\Eset\updfiles и попробовать скачать любой файл, если нет доступа или невиден перечень файлов читаем справку по "Службам IIS" и настраиваем заново.

Для создания сервера обновлений не обязательно использовать IIS подойдет любой веб-сервер либо вообще использовать "Общую папку" в сети Netbios (Windows) (об этом писать не стал, литературы предостаточно).

Содержимое файлов:
update.vbs
set fso=createobject("scripting.filesystemobject")
set updatefolder=fso.getfile(WScript.ScriptFullName).parentfolder
set upd=fso.opentextfile(updatefolder.path & "\lastupd.ver",1,-1)
update=replace(upd.readall,vbcrlf,vbcr)
upd.close
set re=new RegExp
re.global=true
re.ignorecase=true
re.pattern="\[(.*?)\]"
set m=re.execute(update)
updatever=""
for each c in m
    s=c.value
    re.pattern=replace(replace(s,"]",""),"[","name=")
    for each f in updatefolder.files
        if left(ucase(f.name),3)="NOD" and right(ucase(f.name),4)=".NUP" then
            set file=f.openastextstream()
            i=0
            do while (not file.atendofstream) and (i<20)
                if re.test(file.readline) then
                    s=replace(replace(s,"]","\]"),"[","\[")
                    re.pattern="\r" & s & "\rversion=.*?size=\d+"
                    set mn=re.execute(update)
                    for each n in mn
                        re.pattern="\rfile=.*?\r"
                        updatever=updatever & re.replace(n.value,vbcr & "file=" & f.name & vbcr) & vbcr
                    next
                    exit do
                end if
                i=i+1
            loop
            file.close
        end if
    next
next
re.pattern="\r\[.*?\]\rversion=.*?size=\d+"
if re.test(updatever) then
    fso.opentextfile(updatefolder.path & "\update.ver",2,true).write(replace(updatever,vbcr,vbcrlf))
end if


eset-sched.reg
REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Eset\Nod\CurrentVersion\Scheduler\646338398]
"Params"=hex:3c,3f,78,6d,6c,20,76,65,72,73,69,6f,6e,3d,22,31,2e,30,22,3f,3e,0a,\
  3c,4e,4f,44,33,32,5f,43,4f,4d,4d,3e,0a,20,3c,53,43,48,45,44,55,4c,45,44,5f,\
  54,41,53,4b,20,50,4c,55,47,49,4e,3d,22,36,43,35,30,34,33,34,33,22,20,41,43,\
  54,49,4f,4e,3d,22,30,22,20,44,45,53,43,52,49,50,54,49,4f,4e,3d,22,77,73,63,\
  72,69,70,74,2e,65,78,65,22,3e,0a,20,20,3c,44,41,54,41,3e,0a,20,20,20,3c,4e,\
  4f,44,45,20,4e,41,4d,45,3d,22,46,49,4c,45,4e,41,4d,45,22,20,56,41,4c,55,45,\
  3d,22,25,73,79,73,74,65,6d,72,6f,6f,74,25,5c,73,79,73,74,65,6d,33,32,5c,77,\
  73,63,72,69,70,74,2e,65,78,65,22,20,54,59,50,45,3d,22,53,54,52,49,4e,47,22,\
  20,2f,3e,0a,20,20,20,3c,4e,4f,44,45,20,4e,41,4d,45,3d,22,44,49,52,45,43,54,\
  4f,52,59,22,20,56,41,4c,55,45,3d,22,25,70,72,6f,67,72,61,6d,66,69,6c,65,73,\
  25,5c,45,73,65,74,5c,75,70,64,66,69,6c,65,73,22,20,54,59,50,45,3d,22,53,54,\
  52,49,4e,47,22,20,2f,3e,0a,20,20,20,3c,4e,4f,44,45,20,4e,41,4d,45,3d,22,43,\
  4d,44,4c,49,4e,45,22,20,56,41,4c,55,45,3d,22,2f,2f,62,20,75,70,64,61,74,65,\
  2e,76,62,73,22,20,54,59,50,45,3d,22,53,54,52,49,4e,47,22,20,2f,3e,0a,20,20,\
  3c,2f,44,41,54,41,3e,0a,20,3c,2f,53,43,48,45,44,55,4c,45,44,5f,54,41,53,4b,\
  3e,0a,3c,2f,4e,4f,44,33,32,5f,43,4f,4d,4d,3e,0a,00
"Name"="Создание зеркала"
"ActionCode"=dword:00000000
"ModuleID"=dword:6c504343
"TriggerType"=dword:00000004
"TriggerSettings"=dword:00030000
"StartFailSettings"=dword:00000000
"Enabled"=dword:00000001
"LastExec"=dword:4948c941

[HKEY_LOCAL_MACHINE\SOFTWARE\Eset\Nod\CurrentVersion\Scheduler\646339407]
"Params"=hex:3c,3f,78,6d,6c,20,76,65,72,73,69,6f,6e,3d,22,31,2e,30,22,3f,3e,0a,\
  3c,4e,4f,44,33,32,5f,43,4f,4d,4d,3e,0a,20,3c,53,43,48,45,44,55,4c,45,44,5f,\
  54,41,53,4b,20,50,4c,55,47,49,4e,3d,22,36,43,35,30,34,33,34,33,22,20,41,43,\
  54,49,4f,4e,3d,22,30,22,20,44,45,53,43,52,49,50,54,49,4f,4e,3d,22,77,73,63,\
  72,69,70,74,2e,65,78,65,22,3e,0a,20,20,3c,44,41,54,41,3e,0a,20,20,20,3c,4e,\
  4f,44,45,20,4e,41,4d,45,3d,22,46,49,4c,45,4e,41,4d,45,22,20,56,41,4c,55,45,\
  3d,22,25,73,79,73,74,65,6d,72,6f,6f,74,25,5c,73,79,73,74,65,6d,33,32,5c,77,\
  73,63,72,69,70,74,2e,65,78,65,22,20,54,59,50,45,3d,22,53,54,52,49,4e,47,22,\
  20,2f,3e,0a,20,20,20,3c,4e,4f,44,45,20,4e,41,4d,45,3d,22,44,49,52,45,43,54,\
  4f,52,59,22,20,56,41,4c,55,45,3d,22,25,70,72,6f,67,72,61,6d,66,69,6c,65,73,\
  25,5c,45,73,65,74,5c,75,70,64,66,69,6c,65,73,22,20,54,59,50,45,3d,22,53,54,\
  52,49,4e,47,22,20,2f,3e,0a,20,20,20,3c,4e,4f,44,45,20,4e,41,4d,45,3d,22,43,\
  4d,44,4c,49,4e,45,22,20,56,41,4c,55,45,3d,22,2f,2f,62,20,75,70,64,61,74,65,\
  2e,76,62,73,22,20,54,59,50,45,3d,22,53,54,52,49,4e,47,22,20,2f,3e,0a,20,20,\
  3c,2f,44,41,54,41,3e,0a,20,3c,2f,53,43,48,45,44,55,4c,45,44,5f,54,41,53,4b,\
  3e,0a,3c,2f,4e,4f,44,33,32,5f,43,4f,4d,4d,3e,0a,00
"Name"="Создание зеркала"
"ActionCode"=dword:00000000
"ModuleID"=dword:6c504343
"TriggerType"=dword:00000004
"TriggerSettings"=dword:00040000
"StartFailSettings"=dword:00000000
"Enabled"=dword:00000001
"LastExec"=dword:4948c962



PS: Немного дополнив файл eset-sched.reg можно обойти ограничение пробной версии, но это уже выходит за рамки правил.

Продолжаем разговор :)


Создаем каталог к примеру c:\avir_upd
в нем создадим скрипт(ы) с именами eset_upd.vbs и(или) nod_upd.vbs (это кому какое зеркало нужно, первое для версии 3.x второе для 2.x, можно и оба скрипта)
И файлы

eset_upd.files

eset_upd.servers


и(или)

nod_upd.files

nod_upd.servers


Скрипт(ы) поместить на выполнение в назначенные задания (планировщик) примерно так
c:\windows\system32\wscript.exe //b c:\avir_upd\eset_upd.vbs и(или) nod_upd.vbs

Скрипт

с таким содержимым, содержимое у обеих одинаковое, важно название - обязательно eset_upd.vbs и nod_upd.vbs

dim files,servers,afiles,aservers
filefullname=false
timeout=1
set fso=createobject("scripting.filesystemobject")
set script=fso.getfile(wscript.scriptfullname)
files=fso.GetBaseName(script.path) & ".files"
servers=fso.GetBaseName(script.path) & ".servers"
if not fso.fileexists(files) then
   msgbox "Нет списка скачиваемых файлов"
end if
if not fso.fileexists(files) then
   msgbox "Нет списка сереров обновлений"
end if
folder=fso.GetFile(script.path).parentfolder.path & "\" & fso.GetBaseName(script.path)
afiles=readfile(files)
aservers=readfile(servers)
if lbound(aservers)=-1 then
   msgbox "Список серверов обновлений пуст"
end if
if lbound(afiles)=-1 then
   msgbox "Список скачиваемых файлов пуст"
end if
on error resume next
n=0
for each c in aservers
   if readserver(trim(c),timeout)=200 then
       if not fso.folderexists(folder) then
           fso.createfolder(folder)
       end if
       stat=0
       for n=n to ubound(afiles)
           if right(trim(c),1)="/" then
               c=left(trim(c),len(trim(c))-1)
           end if
           path="/" & fso.GetBaseName(c)
           if afiles(n)<>"update.ver" then
               if left(path,instr(path,"_")-1)="/nod" then
                   path="/" & mid(path,instr(path,"_")+1) & "/engine"
               else
                   path="/" & mid(path,instr(path,"_")+1) & "/engine3"
               end if
           end if
           stat=filefromserver(fso.GetParentFolderName(c) & path,afiles(n),folder,timeout)
           if stat<>200 then
               exit for
           end if
       next
       if stat=200 then
           updatever folder
           wscript.quit
       end if
   end if
next


function readfile(byval file)
   dim str,arr(),f,k, fso
   set fso=createobject("scripting.filesystemobject")
   redim arr(-1)
   set f=fso.opentextfile(file)
   k=-1
   do while not f.atendofstream
       str=trim(f.readline)
       if trim(str)<>"" then
           k=k+1
           redim preserve arr(k)
           arr(k)=str
       end if
   loop
   f.close
   readfile=arr
end function

function readserver(byval server, byval ftimeout)
   set http=createobject("WinHttp.WinHttpRequest.5.1")
   on error resume next
   http.Open "GET",server & "/update.ver",0
   http.send
   if err.number<>0 then
       exit function
   end if
   on error goto 0
   tstart=now
   do while datediff("s",tstart,now)<=ftimeout and not http.status
       wscript.sleep 100
   loop
   readserver=http.status
end function

function filefromserver(byval server, byval file, byval fold, byval ftimeout)
   dim status, stream, f
   filefromserver=0
   set http=createobject("WinHttp.WinHttpRequest.5.1")
   on error resume next
   http.Open "GET",server & "/" & file,0
   http.send
   if err.number<>0 then
       exit function
   end if
   on error goto 0
   tstart=now
   do while datediff("s",tstart,now)<=ftimeout and not http.status
       status=http.status
       wscript.sleep 100
   loop
   if status=200 then
       set stream=createobject("adodb.stream")
       stream.type=1
       stream.open
       stream.write(http.responseBody)
       stream.savetofile fold & "\" & file,2
       stream.close
   end if
   filefromserver=status
end function

function updatever(byval fold)
   dim fso,k,names(),str, path
   path=""
   set regexp=createobject("vbscript.regexp")
   regexp.pattern="\[update_info\](.*?)\[update_data\]"
   regexp.ignorecase=true
   regexp.global=true
   set regexp2=createobject("vbscript.regexp")
   regexp2.pattern="\rname=(.*?)\r|^name=(.*?)\r"
   regexp2.ignorecase=true
   regexp2.global=true
   set fso=createobject("scripting.filesystemobject")
   set fo=fso.getfolder(fold)
   set upd=fso.opentextfile(fo.path & "\update.ver",2,true)
   for each f in fo.files
       if lcase(fso.GetExtensionName(f.path))="nup" then
           set fs=f.OpenAsTextStream(1)
           str=""
           do while not fs.atendofstream and fs.line<25
               str=str & replace(trim(fs.readline),chr(0),"") & vbcr
           loop
           if regexp.test(str) then
               str=regexp.execute(str)(0).SubMatches(0)
               str=regexp2.replace(str,"[$1]" & vbcr)
               do while instr(str,vbcr & vbcr)
                   str=replace(str,vbcr & vbcr,vbcr)
               loop
               if filefullname then
                   path="/" & fso.GetBaseName(script.path) & "/"
               end if
               str=str & "file=" & path & f.name & vbcr & "size=" & f.size & vrcr
               str=replace(str,vbcr,vbcrlf)
               upd.writeline(str)
           end if
           fs.close
       end if
   next
   upd.close
end function



Файлы

eset_upd.files



update.ver
em000_32_l0.nup
em000_64_l0.nup
em001_32_l0.nup
em001_32_l1.nup
em001_32_l2.nup
em002_32_l0.nup
em002_32_l1.nup
em002_32_l2.nup
em003_32_l0.nup
em003_32_l1.nup
em003_32_l2.nup
em004_32_l0.nup
em004_32_l1.nup
em004_32_l2.nup
em005_32_l0.nup
em005_32_l1.nup
em006_32_l0.nup
em006_32_l1.nup
em006_32_l2.nup
em006_64_l0.nup
em006_64_l1.nup
em006_64_l2.nup
em008_32_l0.nup
em008_64_l0.nup
em010_32_l0.nup
em010_32_l1.nup
em010_32_l2.nup
em011_32_l0.nup
em011_32_l2.nup


eset_upd.servers


http://u21.eset.com/eset_eval/

http://u24.eset.com/eset_eval/
http://89.202.157.135/eset_eval/
http://89.202.157.136/eset_eval/
http://89.202.157.137/eset_eval/
http://89.202.157.139/eset_eval/
http://u30.eset.com/eset_eval/
http://u31.eset.com/eset_eval/
http://u32.eset.com/eset_eval/
http://u33.eset.com/eset_eval/
http://u34.eset.com/eset_eval/
http://u35.eset.com/eset_eval/
http://u36.eset.com/eset_eval/
http://u37.eset.com/eset_eval/
http://u38.eset.com/eset_eval/
http://u39.eset.com/eset_eval/
http://u40.eset.com/eset_eval/
http://u41.eset.com/eset_eval/
http://u42.eset.com/eset_eval/
http://u43.eset.com/eset_eval/
http://u44.eset.com/eset_eval/
http://u45.eset.com/eset_eval/
http://u46.eset.com/eset_eval/
http://u47.eset.com/eset_eval/
http://u48.eset.com/eset_eval/
http://u49.eset.com/eset_eval/
http://u50.eset.com/eset_eval/
http://u51.eset.com/eset_eval/
http://u52.eset.com/eset_eval/
http://u53.eset.com/eset_eval/
http://u54.eset.com/eset_eval/
http://u55.eset.com/eset_eval/
http://u56.eset.com/eset_eval/
http://u57.eset.com/eset_eval/
http://u58.eset.com/eset_eval/
http://u59.eset.com/eset_eval/
http://um10.eset.com/eset_eval/
http://um11.eset.com/eset_eval/
http://um12.eset.com/eset_eval/
http://um13.eset.com/eset_eval/


nod_upd.files


update.ver

advheur0.nup
advheur1.nup
advheur2.nup
archs0.nup
archs1.nup
charon0.nup
charon1.nup
charon2.nup
engine0.nup
engine1.nup
engine2.nup
helper0.nup
pwscan0.nup
pwscan1.nup
pwscan2.nup
utilmod0.nup
utilmod1.nup
utilmod2.nup


nod_upd.servers


http://u21.eset.com/nod_eval/

http://u24.eset.com/nod_eval/
http://89.202.157.135/nod_eval/
http://89.202.157.136/nod_eval/
http://89.202.157.137/nod_eval/
http://89.202.157.139/nod_eval/
http://u30.eset.com/nod_eval/
http://u31.eset.com/nod_eval/
http://u32.eset.com/nod_eval/
http://u33.eset.com/nod_eval/
http://u34.eset.com/nod_eval/
http://u35.eset.com/nod_eval/
http://u36.eset.com/nod_eval/
http://u37.eset.com/nod_eval/
http://u38.eset.com/nod_eval/
http://u39.eset.com/nod_eval/
http://u40.eset.com/nod_eval/
http://u41.eset.com/nod_eval/
http://u42.eset.com/nod_eval/
http://u43.eset.com/nod_eval/
http://u44.eset.com/nod_eval/
http://u45.eset.com/nod_eval/
http://u46.eset.com/nod_eval/
http://u47.eset.com/nod_eval/
http://u48.eset.com/nod_eval/
http://u49.eset.com/nod_eval/
http://u50.eset.com/nod_eval/
http://u51.eset.com/nod_eval/
http://u52.eset.com/nod_eval/
http://u53.eset.com/nod_eval/
http://u54.eset.com/nod_eval/
http://u55.eset.com/nod_eval/
http://u56.eset.com/nod_eval/
http://u57.eset.com/nod_eval/
http://u58.eset.com/nod_eval/
http://u59.eset.com/nod_eval/
http://um10.eset.com/nod_eval/
http://um11.eset.com/nod_eval/
http://um12.eset.com/nod_eval/
http://um13.eset.com/nod_eval/



Еще PS: Если вам надо оба обновлять сделав зеркало на веб-сервере, то рекомендую создать веб с указанием на созданный каталог (в данном примере это c:\avir_upd) и уже у клиентов прописать примерно так http://192.169.0.3:8080/nod_upd/ и(или) http://192.169.0.3:8080/eset_upd/
(Исправляйте, обуниверсаливайте далее сами. Важна идея, дальше всегда лениво.)

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика