Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Создание базы по определению Антивирусов и Файрволлов через скрипт (http://forum.oszone.net/showthread.php?t=187595)

saavaage 06-10-2010 14:53 1512771

Создание базы по определению Антивирусов и Файрволлов через скрипт
 
Просьба проверить Ваши системы данной утилитой и отписаться:
1. Ваши антивирус и файрвол (название, версия)
2. определились или нет данным модулем
3. системные данные


Заранее спасибо всем за тестинг!

Код

читать дальше »
Код:

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>


Global $DebugMode = 0
Opt("GUIOnEventMode", 1)




$hMain_GUI = GUICreate("Проверка безопасности OS", 619, 182, 189, 122)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")

$Tab1 = GUICtrlCreateTab(8, 16, 601, 120)
$Security = GUICtrlCreateTabItem("Проверка на средства защиты OS")

GUICtrlCreateLabel('Ваша OS', 24, 52)
$OS = GUICtrlCreateInput('', 84, 50, 290, 20, BitOR($SS_LEFT, $ES_READONLY, $ES_AUTOHSCROLL))
GUICtrlCreateLabel('SP', 384, 52)
$SP = GUICtrlCreateInput('', 405, 50, 100, 20, BitOR($SS_LEFT, $ES_READONLY, $ES_AUTOHSCROLL))
GUICtrlCreateLabel('Bit', 515, 52)
$Bit = GUICtrlCreateInput(@OSArch , 535, 50, 50, 20, BitOR($SS_LEFT, $ES_READONLY, $ES_AUTOHSCROLL))


GUICtrlCreateLabel('Антивирус', 24, 75)
$Antivirus = GUICtrlCreateInput('', 84, 75, 500, 20, BitOR($SS_LEFT, $ES_READONLY, $ES_AUTOHSCROLL))
GUICtrlCreateLabel('Файрволл', 24, 100)
$Firewall = GUICtrlCreateInput('', 84, 100, 500, 20, BitOR($SS_LEFT, $ES_READONLY, $ES_AUTOHSCROLL))

If _ServiceExists('wscsvc') = 1 Then
  _Antivir()
  _Firewall()
Else
        MsgBox(0, 'Уведомление', 'Для работы модуля необходимо активировать' &@CRLF &' в системе Центр Обеспечения Безопасности!')
EndIf
_OSInfo()

$Button_Save = GUICtrlCreateButton('Сохранить на РС', 501, 145, 100, 30)
GUICtrlSetOnEvent($Button_Save, "_Save")

GUICtrlCreateTabItem("")
GUISetState()

While 1
    Sleep(100)
WEnd

Func CLOSEClicked()
  Exit
EndFunc

Func _Save()
    GUICtrlSetState($Button_Save, $GUI_DISABLE)
        If FileExists(@DesktopDir&'\securety_report.txt') Then
    MsgBox(4096, "securety report", 'securety_report.txt уже существует. Переменуйте' &@CRLF & 'его для предотвращения затирания информации!')
Else
        $sData = GUICtrlRead($OS) & '  ' & GUICtrlRead($SP)  & '  ' & GUICtrlRead($Bit) & '  ' &@CRLF& 'Антивирус: ' & GUICtrlRead($Antivirus) &@CRLF& 'Файрволл: ' & GUICtrlRead($Firewall)
    $file = FileOpen(@DesktopDir&'\securety_report.txt',18)
    FileWrite($file, $sData)
    FileClose($file)
        sleep(1000)
        GUICtrlSetState($Button_Save, $GUI_ENABLE)
EndIf





EndFunc

Func _OSInfo()
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"

$OutputTitle = ""
$OutputOS = ""
$OutputSP = ""

$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", _
        $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

If IsObj($colItems) Then
    Local $Object_Flag = 0
    For $objItem In $colItems
        $Object_Flag = 1
        $OutputOS &= $objItem.Caption
        $OutputSP &= $objItem.CSDVersion
        Next
    If $Object_Flag = 0 Then
                GUICtrlSetData($OS, "Система не определена!")
            GUICtrlSetData($SP, "SP не определен!")
        Else
        GUICtrlSetData($OS, $OutputOS)
            GUICtrlSetData($SP, $OutputSP)
            $OutputOS = ""
        $OutputSP = ""
    EndIf
EndIf
EndFunc

Func _Antivir()
        $OutputAnt = ""

$objWMIService = ObjGet("winmgmts:\\localhost\root\SecurityCenter")
$colItems = $objWMIService.ExecQuery("SELECT * FROM AntiVirusProduct", "WQL", 48)

If IsObj($colItems) Then
    For $objItem In $colItems
        $OutputAnt &= $objItem.DisplayName & " Version: " & $objItem.VersionNumber & '  '
    Next
    If $OutputAnt <> '' Then
          GUICtrlSetData($Antivirus, StringTrimRight($OutputAnt, 2))
      $OutputAnt = ""
        Else
      GUICtrlSetData($Antivirus, 'Антивирус отсутствует!')
    EndIf
Endif
EndFunc

Func _Firewall()
        $OutputFw = ""

$objWMIService = ObjGet("winmgmts:\\localhost\root\SecurityCenter")
$colItems = $objWMIService.ExecQuery("SELECT * FROM FireWallProduct", "WQL", 48)

If IsObj($colItems) Then
    For $objItem In $colItems
        $OutputFw &= $objItem.DisplayName & " Version: " & $objItem.VersionNumber & '  '
    Next
    If $OutputFw <> '' Then
          GUICtrlSetData($Firewall, StringTrimRight($OutputFw, 2))
      $OutputFw = ""
        Else
      GUICtrlSetData($Firewall, 'Файрволл отсутствует!')
    EndIf
Endif
EndFunc

Func _ServiceExists($nService)
        Local $objWMIService                        ; Main object
        Local $objQueryCollection                ; Result of query
        Local $hObj                                                ; Current selected Object in $objQueryCollection

        If $DebugMode = 1 Then ConsoleWrite(@CR)
        If $DebugMode = 1 Then ConsoleWrite("_ServiceExists($nService)" & @CR)
        If $DebugMode = 1 Then ConsoleWrite("_ServiceExists($nService)=  " & $nService & @CR)

        $objWMIService = ObjGet("winmgmts:\\" & @ComputerName & "\root\CIMV2")

        If IsObj($objWMIService) Then
                If $DebugMode = 1 Then ConsoleWrite("$objWMIService is an Object" & @CR)
                $objQueryCollection = $objWMIService.ExecQuery("SELECT * FROM Win32_Service Where Name = '" & $nService & "'")
        Else
                Return 110
        EndIf

        If IsObj($objQueryCollection) then
                If $DebugMode = 1 Then ConsoleWrite("Collection returned by Query on $objWMIService)" & @CR)

                For $hObj In $objQueryCollection
                        If $hObj.Name = $nService Then Return 1                ;Service found, return 0
                Next                                                                                        ;<== $objWMIService In $hObj
        Else
                Return 110                                                                                ;Obj error
        EndIf

        Return 0                                                                                                ;Service not found, return -1

EndFunc



ссылка на готовый модуль http://ifolder.ru/19637962

PS в основу модуля легло предложение madmasles ( http://forum.oszone.net/post-1512083-11.html ) за что ему отдельное спасибо.


Итак, на 09102010 промежуточные итоги:


madmasles 06-10-2010 15:09 1512784

saavaage,
Было бы странно, если бы у меня не определилось. :)
1. ESET Smart Security 3.0 Version: 3.0
Персональный файервол ESET Version: 3.0.684.0
2. См. п.1

saavaage 06-10-2010 15:18 1512792

madmasles,
у вас стоит один ESET Smart Security, который содержит и файрволл и ативирус? и они корректно определились в своих полях?

madmasles 06-10-2010 15:22 1512796

saavaage,
Стоит один.

Iska 06-10-2010 15:24 1512798

saavaage, предложения:
* хорошо бы ещё наименование и версию ОС с точностью до SP; в определитель не пойдёт, а, так — на всякий случай;
* вместо формы можно было пользовать простой MsgBox — чтобы можно было просто скопировать по Ctrl-C; либо добавьте кнопку+функцию для копирования в буфер обмена из полей;
* пробелы в:
Код:

$OutputAnt &= $objItem.DisplayName & " Version: " & $objItem.VersionNumber & '  '
в обоих случаях — совершенно лишние.
Код:

Norton Internet Security Version: 15.5.0.23
Norton Internet Security Version: 15.5.0.23


saavaage 06-10-2010 15:27 1512803

Iska,
1 - гут
2. добавил пробелы на тот случай, если не одно антивирусное / файрвольное решение в системе (у некоторых есть и такое) .Ч ерт не обратил внимание, что это уже есть. Корректирую скрипт. Сейчас перевыложу.

Iska 06-10-2010 15:38 1512817

Цитата:

Цитата saavaage
2. добавил пробелы на тот случай, если не одно антивирусное / файрвольное решение в системе (у некоторых есть и такое) . »

Спасибо, ясно. Но, всё равно — вынести:
Код:

        GUICtrlSetData($Antivirus, $OutputAnt)
        $OutputAnt = ""

за пределы цикла (а то всё одно будет значение только по последнему проходу) и там же, перед «GUICtrlSetData($Antivirus, $OutputAnt)» (или прямо в присваивании) отрезать с конца «$OutputAnt» два пробела.

saavaage 06-10-2010 15:41 1512826

Iska, не будет, там же $OutputAnt &= везде...

Iska 06-10-2010 15:59 1512845

Будет. Проверьте на таком коде:
читать дальше »
Код:

AutoItSetOption("MustDeclareVars", 1)

Local $oSWbemServicesEx = ObjGet("winmgmts:\\.\root\cimv2")
Local $cSWbemObjectSet  = $oSWbemServicesEx.ExecQuery("SELECT * FROM Win32_Process", "WQL", 0)
Local $oSWbemObjectEx
Local $sOutputText      = ""

If IsObj($cSWbemObjectSet) Then
    For $oSWbemObjectEx In $cSWbemObjectSet
        $sOutputText &= $oSWbemObjectEx.Name & "  "
       
        ConsoleWrite($oSWbemObjectEx.Name & ": [" & $sOutputText & "]" & @CRLF)
       
        $sOutputText = ""
    Next
EndIf

$oSWbemObjectEx  = 0
$cSWbemObjectSet  = 0
$oSWbemServicesEx = 0

Exit(0)


Правильно — так, как я описал постом выше, т.е., наподобие:
Код:


If IsObj($colItems) Then
    For $objItem In $colItems
        $OutputAnt &= $objItem.DisplayName & " Version: " & $objItem.VersionNumber & '  '
    Next
   
    GUICtrlSetData($Antivirus, StringTrimRight($OutputAnt, 2))
    $OutputAnt = ""
Else


madmasles 06-10-2010 16:03 1512849

Цитата:

Цитата Iska
хорошо бы ещё наименование и версию ОС с точностью до SP »

Тоже через WMI
читать дальше »
Код:

; Generated by AutoIt ScriptOMatic

$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"

$OutputTitle = ""
$Output = ""
$OutputTitle &= "Computer: " & $strComputer & @CRLF
$OutputTitle &= "==========================================" & @CRLF
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", _
        $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

If IsObj($colItems) Then
    Local $Object_Flag = 0
    For $objItem In $colItems
        $Object_Flag = 1
        $Output &= "Caption: " & $objItem.Caption & @CRLF
        $Output &= "CSDVersion: " & $objItem.CSDVersion & @CRLF
        $Output &= "CSName: " & $objItem.CSName & @CRLF
        $Output &= "InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
        $Output &= "Organization: " & $objItem.Organization & @CRLF
        $Output &= "OSLanguage: " & $objItem.OSLanguage & @CRLF
        $Output &= "RegisteredUser: " & $objItem.RegisteredUser & @CRLF
        $Output &= "SerialNumber: " & $objItem.SerialNumber & @CRLF
        $Output &= "Version: " & $objItem.Version & @CRLF
        If MsgBox(1, "WMI Output", $Output) = 2 Then ExitLoop
        $Output = ""
    Next
    If $Object_Flag = 0 Then MsgBox(1, "WMI Output", $OutputTitle)
Else
    MsgBox(0, "WMI Output", "No WMI Objects Found for class: " & "Win32_OperatingSystem")
EndIf


Func WMIDateStringToDate($dtmDate)
    Return (StringMid($dtmDate, 5, 2) & "/" & _
            StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
            & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate, 13, 2))
EndFunc  ;==>WMIDateStringToDate


saavaage 06-10-2010 16:09 1512854

madmasles, также прекрасно решают проблему системные макросы...

Iska, разве скрипт через операнд &= не будет постоянно наращивать строку до конца цикла (т.е. все найденные будут добавляться)? Ой, все понял... Ваша правда, конечно

Iska 06-10-2010 16:24 1512863

Цитата:

Цитата saavaage
Iska, разве скрипт через операнд &= не будет постоянно наращивать строку…»

Да, будет наращивать, но Вы же там же, внутри цикла, следом затираете — «$OutputAnt = ""».

saavaage 06-10-2010 16:29 1512868

окончательный код скрипта:

Код:

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>


Global $DebugMode = 0
Opt("GUIOnEventMode", 1)




$hMain_GUI = GUICreate("Проверка безопасности OS", 619, 182, 189, 122)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")

$Tab1 = GUICtrlCreateTab(8, 16, 601, 120)
$Security = GUICtrlCreateTabItem("Проверка на средства защиты OS")

GUICtrlCreateLabel('Ваша OS', 24, 52)
$OS = GUICtrlCreateInput(@OSVersion, 84, 50, 290, 20, BitOR($SS_LEFT, $ES_READONLY, $ES_AUTOHSCROLL))
GUICtrlCreateLabel('SP', 384, 52)
$SP = GUICtrlCreateInput(@OSServicePack, 405, 50, 100, 20, BitOR($SS_LEFT, $ES_READONLY, $ES_AUTOHSCROLL))
GUICtrlCreateLabel('Bit', 515, 52)
$Bit = GUICtrlCreateInput(@OSArch , 535, 50, 50, 20, BitOR($SS_LEFT, $ES_READONLY, $ES_AUTOHSCROLL))


GUICtrlCreateLabel('Антивирус', 24, 75)
$Antivirus = GUICtrlCreateInput('', 84, 75, 500, 20, BitOR($SS_LEFT, $ES_READONLY, $ES_AUTOHSCROLL))
GUICtrlCreateLabel('Файрволл', 24, 100)
$Firewall = GUICtrlCreateInput('', 84, 100, 500, 20, BitOR($SS_LEFT, $ES_READONLY, $ES_AUTOHSCROLL))

If _ServiceExists('wscsvc') = 1 Then
  _Antivir()
  _Firewall()
Else
        MsgBox(0, 'Уведомление', 'Для работы модуля необходимо активировать' &@CRLF &' в системе Центр Обеспечения Безопасности!')

EndIf

$Button_Save = GUICtrlCreateButton('Сохранить на РС', 501, 145, 100, 30)
GUICtrlSetOnEvent($Button_Save, "_Save")

GUICtrlCreateTabItem("")
GUISetState()

While 1
    Sleep(100)
WEnd

Func CLOSEClicked()
  Exit
EndFunc

Func _Save()
    GUICtrlSetState($Button_Save, $GUI_DISABLE)
        If FileExists(@DesktopDir&'\securety_report.txt') Then
    MsgBox(4096, "securety report", 'securety_report.txt уже существует. Переменуйте' &@CRLF & 'его для предотвращения затирания информации!')
Else
        $sData = GUICtrlRead($OS) & '  ' & GUICtrlRead($SP)  & '  ' & GUICtrlRead($Bit) & '  ' &@CRLF& 'Антивирус: ' & GUICtrlRead($Antivirus) &@CRLF& 'Файрволл: ' & GUICtrlRead($Firewall)
    $file = FileOpen(@DesktopDir&'\securety_report.txt',18)
    FileWrite($file, $sData)
    FileClose($file)
        sleep(1000)
        GUICtrlSetState($Button_Save, $GUI_ENABLE)
EndIf


EndFunc



Func _Antivir()
        $OutputAnt = ""

$objWMIService = ObjGet("winmgmts:\\localhost\root\SecurityCenter")
$colItems = $objWMIService.ExecQuery("SELECT * FROM AntiVirusProduct", "WQL", 48)

If IsObj($colItems) Then
    For $objItem In $colItems
        $OutputAnt &= $objItem.DisplayName & " Version: " & $objItem.VersionNumber & '  '
    Next
    If $OutputAnt <> '' Then
          GUICtrlSetData($Antivirus, StringTrimRight($OutputAnt, 2))
      $OutputAnt = ""
        Else
      GUICtrlSetData($Antivirus, 'Антивирус отсутствует!')
    EndIf
Endif
EndFunc

Func _Firewall()
        $OutputFw = ""

$objWMIService = ObjGet("winmgmts:\\localhost\root\SecurityCenter")
$colItems = $objWMIService.ExecQuery("SELECT * FROM FireWallProduct", "WQL", 48)

If IsObj($colItems) Then
    For $objItem In $colItems
        $OutputFw &= $objItem.DisplayName & " Version: " & $objItem.VersionNumber & '  '
    Next
        MsgBox(0, '', $OutputFw)
    If $OutputFw <> '' Then
          GUICtrlSetData($Firewall, StringTrimRight($OutputFw, 2))
      $OutputFw = ""
        Else
      GUICtrlSetData($Firewall, 'Антивирус отсутствует!')
    EndIf
Endif
EndFunc

Func _ServiceExists($nService)
        Local $objWMIService                        ; Main object
        Local $objQueryCollection                ; Result of query
        Local $hObj                                                ; Current selected Object in $objQueryCollection

        If $DebugMode = 1 Then ConsoleWrite(@CR)
        If $DebugMode = 1 Then ConsoleWrite("_ServiceExists($nService)" & @CR)
        If $DebugMode = 1 Then ConsoleWrite("_ServiceExists($nService)=  " & $nService & @CR)

        $objWMIService = ObjGet("winmgmts:\\" & @ComputerName & "\root\CIMV2")

        If IsObj($objWMIService) Then
                If $DebugMode = 1 Then ConsoleWrite("$objWMIService is an Object" & @CR)
                $objQueryCollection = $objWMIService.ExecQuery("SELECT * FROM Win32_Service Where Name = '" & $nService & "'")
        Else
                Return 110
        EndIf

        If IsObj($objQueryCollection) then
                If $DebugMode = 1 Then ConsoleWrite("Collection returned by Query on $objWMIService)" & @CR)

                For $hObj In $objQueryCollection
                        If $hObj.Name = $nService Then Return 1                ;Service found, return 0
                Next                                                                                        ;<== $objWMIService In $hObj
        Else
                Return 110                                                                                ;Obj error
        EndIf

        Return 0                                                                                                ;Service not found, return -1

EndFunc

Просьба проверить на правильность и тогда выложу на тест на форуме

madmasles 06-10-2010 16:30 1512870

Цитата:

Цитата saavaage
также прекрасно решают проблему системные макросы.. »

Не все: посмотрите начиная с этого поста.
$objItem.Caption - различает Home и Professional.
$objItem.InstallDate - даты установки в макросах тоже не нашел.


В функции _Firewall() - MsgBox(0, '', $OutputFw) лишний. И в ней же GUICtrlSetData($Firewall, 'Антивирус отсутствует!') лучше, наверное, "Файервол отсутствует!"

saavaage 06-10-2010 16:42 1512877

madmasles, а если система не 32 bit как тогда?

madmasles, да, спешу, е-мое... Забыл подчистить

Iska 06-10-2010 16:45 1512879

Цитата:

Цитата saavaage
madmasles, также прекрасно решают проблему системные макросы... »

Я тоже за WMI. Не в таком объёме, конечно. На мой взгляд достаточно:
Код:

Caption, CSDVersion, Version

saavaage 06-10-2010 16:46 1512882

madmasles, будут ли они в принципе работать на 32 bit. У меня ведь и определение есть ли служба завязано на этом... Только сейчас обратил внимание....

madmasles 06-10-2010 16:54 1512893

Iska,
Цитата:

Цитата Iska
Я тоже за WMI. Не в таком объёме, конечно. »

ScriptOmatic выдает мне с этой функцией MsgBox(), который не влазит у меня на экран ноутбука. Я и так убрал кучу не всем нужных данных. Это же пример просто.
Цитата:

Цитата saavaage
а если система не 32 bit как тогда? »

Не знаю. У меня сейчас 64 нет.
Цитата:

Цитата saavaage
будут ли они в принципе работать на 32 bit »

Так пусть люди протестируют, я проверил на 4-х Win XP SP3, на 3-х разных компьютерах, у меня работает.

saavaage 06-10-2010 17:04 1512900

Получился такой код:

читать дальше »
Код:

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>


Global $DebugMode = 0
Opt("GUIOnEventMode", 1)




$hMain_GUI = GUICreate("Проверка безопасности OS", 619, 182, 189, 122)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")

$Tab1 = GUICtrlCreateTab(8, 16, 601, 120)
$Security = GUICtrlCreateTabItem("Проверка на средства защиты OS")

GUICtrlCreateLabel('Ваша OS', 24, 52)
$OS = GUICtrlCreateInput('', 84, 50, 290, 20, BitOR($SS_LEFT, $ES_READONLY, $ES_AUTOHSCROLL))
GUICtrlCreateLabel('SP', 384, 52)
$SP = GUICtrlCreateInput('', 405, 50, 100, 20, BitOR($SS_LEFT, $ES_READONLY, $ES_AUTOHSCROLL))
GUICtrlCreateLabel('Bit', 515, 52)
$Bit = GUICtrlCreateInput(@OSArch , 535, 50, 50, 20, BitOR($SS_LEFT, $ES_READONLY, $ES_AUTOHSCROLL))


GUICtrlCreateLabel('Антивирус', 24, 75)
$Antivirus = GUICtrlCreateInput('', 84, 75, 500, 20, BitOR($SS_LEFT, $ES_READONLY, $ES_AUTOHSCROLL))
GUICtrlCreateLabel('Файрволл', 24, 100)
$Firewall = GUICtrlCreateInput('', 84, 100, 500, 20, BitOR($SS_LEFT, $ES_READONLY, $ES_AUTOHSCROLL))

If _ServiceExists('wscsvc') = 1 Then
  _Antivir()
  _Firewall()
Else
        MsgBox(0, 'Уведомление', 'Для работы модуля необходимо активировать' &@CRLF &' в системе Центр Обеспечения Безопасности!')
EndIf
_OSInfo()

$Button_Save = GUICtrlCreateButton('Сохранить на РС', 501, 145, 100, 30)
GUICtrlSetOnEvent($Button_Save, "_Save")

GUICtrlCreateTabItem("")
GUISetState()

While 1
    Sleep(100)
WEnd

Func CLOSEClicked()
  Exit
EndFunc

Func _Save()
    GUICtrlSetState($Button_Save, $GUI_DISABLE)
        If FileExists(@DesktopDir&'\securety_report.txt') Then
    MsgBox(4096, "securety report", 'securety_report.txt уже существует. Переменуйте' &@CRLF & 'его для предотвращения затирания информации!')
Else
        $sData = GUICtrlRead($OS) & '  ' & GUICtrlRead($SP)  & '  ' & GUICtrlRead($Bit) & '  ' &@CRLF& 'Антивирус: ' & GUICtrlRead($Antivirus) &@CRLF& 'Файрволл: ' & GUICtrlRead($Firewall)
    $file = FileOpen(@DesktopDir&'\securety_report.txt',18)
    FileWrite($file, $sData)
    FileClose($file)
        sleep(1000)
        GUICtrlSetState($Button_Save, $GUI_ENABLE)
EndIf





EndFunc

Func _OSInfo()
$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"

$OutputTitle = ""
$OutputOS = ""
$OutputSP = ""

$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem", "WQL", _
        $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

If IsObj($colItems) Then
    Local $Object_Flag = 0
    For $objItem In $colItems
        $Object_Flag = 1
        $OutputOS &= $objItem.Caption
        $OutputSP &= $objItem.CSDVersion
        Next
    If $Object_Flag = 0 Then
                GUICtrlSetData($OS, "Система не определена!")
            GUICtrlSetData($SP, "SP не определен!")
        Else
        GUICtrlSetData($OS, $OutputOS)
            GUICtrlSetData($SP, $OutputSP)
            $OutputOS = ""
        $OutputSP = ""
    EndIf
EndIf
EndFunc

Func _Antivir()
        $OutputAnt = ""

$objWMIService = ObjGet("winmgmts:\\localhost\root\SecurityCenter")
$colItems = $objWMIService.ExecQuery("SELECT * FROM AntiVirusProduct", "WQL", 48)

If IsObj($colItems) Then
    For $objItem In $colItems
        $OutputAnt &= $objItem.DisplayName & " Version: " & $objItem.VersionNumber & '  '
    Next
    If $OutputAnt <> '' Then
          GUICtrlSetData($Antivirus, StringTrimRight($OutputAnt, 2))
      $OutputAnt = ""
        Else
      GUICtrlSetData($Antivirus, 'Антивирус отсутствует!')
    EndIf
Endif
EndFunc

Func _Firewall()
        $OutputFw = ""

$objWMIService = ObjGet("winmgmts:\\localhost\root\SecurityCenter")
$colItems = $objWMIService.ExecQuery("SELECT * FROM FireWallProduct", "WQL", 48)

If IsObj($colItems) Then
    For $objItem In $colItems
        $OutputFw &= $objItem.DisplayName & " Version: " & $objItem.VersionNumber & '  '
    Next
    If $OutputFw <> '' Then
          GUICtrlSetData($Firewall, StringTrimRight($OutputFw, 2))
      $OutputFw = ""
        Else
      GUICtrlSetData($Firewall, 'Антивирус отсутствует!')
    EndIf
Endif
EndFunc

Func _ServiceExists($nService)
        Local $objWMIService                        ; Main object
        Local $objQueryCollection                ; Result of query
        Local $hObj                                                ; Current selected Object in $objQueryCollection

        If $DebugMode = 1 Then ConsoleWrite(@CR)
        If $DebugMode = 1 Then ConsoleWrite("_ServiceExists($nService)" & @CR)
        If $DebugMode = 1 Then ConsoleWrite("_ServiceExists($nService)=  " & $nService & @CR)

        $objWMIService = ObjGet("winmgmts:\\" & @ComputerName & "\root\CIMV2")

        If IsObj($objWMIService) Then
                If $DebugMode = 1 Then ConsoleWrite("$objWMIService is an Object" & @CR)
                $objQueryCollection = $objWMIService.ExecQuery("SELECT * FROM Win32_Service Where Name = '" & $nService & "'")
        Else
                Return 110
        EndIf

        If IsObj($objQueryCollection) then
                If $DebugMode = 1 Then ConsoleWrite("Collection returned by Query on $objWMIService)" & @CR)

                For $hObj In $objQueryCollection
                        If $hObj.Name = $nService Then Return 1                ;Service found, return 0
                Next                                                                                        ;<== $objWMIService In $hObj
        Else
                Return 110                                                                                ;Obj error
        EndIf

        Return 0                                                                                                ;Service not found, return -1

EndFunc



Если все нормально, компилю утилиту и выкладываю на форуме. Проверьте, плиз...

madmasles 06-10-2010 17:24 1512915

saavaage,
У меня все нормально. :)

saavaage 06-10-2010 17:34 1512922

Новая версия утилиты и скрипта - см. шапку.

FlatX007 06-10-2010 19:40 1513001

у меня заинстален на компе Nod 32 v4.0...

Код:

Microsoft Windows 7 Максимальная    X86 
Антивирус: Антивирус отсутствует!
Файрволл: Антивирус отсутствует!


saavaage 07-10-2010 03:33 1513243

Сборная информация с форума (http://forum.oszone.net/thread-187178-8.html):

Система - неизвестна (скорее всего XP SP3)
Антивирус/Файрволл: Антивирус Касперского Version: 6.0.4.1424

Comodo Internet Security 4.1 + AVG 9:
Microsoft Windows XP Professional Service Pack 3 X86
Антивирус: AVG Anti-Virus Free Version: 9.0
Файрволл: Антивирус отсутствует!

Comodo Internet Security 4.1 (только файрволл) + Avira:
Microsoft Windows XP Professional Service Pack 3 X86
Антивирус: AntiVir Desktop Version: 10.0.1.43
Файрволл: COMODO Firewall Version: 3.9

DrWeb Security Space Pro 6.0:
Microsoft Windows XP Professional Service Pack 3 X86
Антивирус: Doctor Web Anti-Virus Version: 6.0.2.06210
Файрволл: Doctor Web Firewall Version: 6.0.2.06210

Comodo Internet Security 4.1 (только файрволл) + DrWeb Security Space Pro 6.0 (только антивирус):
Microsoft Windows XP Professional Service Pack 3 X86
Антивирус: Doctor Web Anti-Virus Version: 6.0.2.06210
Файрволл: Doctor Web Firewall Version: 6.0.2.06210

avast! Home Edition 5.0 + DrWeb Security Space Pro 6.0:
Microsoft Windows XP Professional Service Pack 3 X86
Антивирус: Doctor Web Anti-Virus Version: 6.0.2.06210 avast! Antivirus Version: 5.0.83886498
Файрволл: Doctor Web Firewall Version: 6.0.2.06210

PC Tools Firewall Plus 6.0.0.86 + avast! Home Edition 5.0:
Microsoft Windows XP Professional Service Pack 3 X86
Антивирус: avast! Antivirus Version: 5.0.83886498
Файрволл: PC Tools Firewall Plus Version: 6.0.0

ESET Smart Security 4.2:
Microsoft Windows XP Professional Service Pack 3 X86
Антивирус: ESET Smart Security 4.2 Version: 4.2
Файрволл: Персональний брандмауер ESET Version: 4.2.64.5

PC Tools Firewall Plus 6.0.0.86 + ESET Smart Security 4.2:
Microsoft Windows XP Professional Service Pack 3 X86
Антивирус: ESET Smart Security 4.2 Version: 4.2
Файрволл: PC Tools Firewall Plus Version: 6.0.0 Персональний брандмауер ESET Version: 4.2.64.5

PC Tools Firewall Plus 6.0.0.86 + ESET Smart Security 4.2 + avast! Home Edition 5.0
Microsoft Windows XP Professional Service Pack 3 X86
Антивирус: avast! Antivirus Version: 5.0.83886498 ESET Smart Security 4.2 Version: 4.2
Файрволл: PC Tools Firewall Plus Version: 6.0.0 Персональний брандмауер ESET Version: 4.2.64.5

Outpost Security Suite Pro 7.0.2:
Microsoft Windows XP Professional Service Pack 3 X86
Антивирус: Outpost Security Suite Pro Version: ASWDB6, VB4.3, VDB9
Файрволл: Outpost Security Suite Pro Version: 7.0.2

Outpost Antivirus Pro 7.0.2 + Avira + avast! Home Edition 5.0 + PC Tools Firewall Plus 6.0.0.86 + Comodo Internet Security 4.1
Microsoft Windows XP Professional Service Pack 3 X86
Антивирус: Outpost Antivirus Pro Version: ASWDB6, VB4.3, VDB9 AntiVir Desktop Version: 10.0.1.43 avast! Antivirus Version: 5.0.83886498
Файрволл: PC Tools Firewall Plus Version: 6.0.0

Comodo Internet Security 4.1 + avast! Home Edition 5.0:
Microsoft Windows XP Professional Service Pack 3 X86
Антивирус: COMODO Antivirus Version: 3.9 avast! Antivirus Version: 5.0.83886498
Файрволл: COMODO Firewall Version: 3.9

Comodo Internet Security 4.1 (только файрволл) + AVG 9
Microsoft Windows XP Professional Service Pack 3 X86
Антивирус: AVG Anti-Virus Free Version: 9.0
Файрволл: COMODO Firewall Version: 3.9

Информация в блоках означает, что решения используются одновременно.

Спасибо за глобальный тестинг stalinit078

Centrinar 07-10-2010 12:08 1513435

Аваст не видит

saavaage 07-10-2010 12:17 1513444

Centrinar, у меня видит. Если можно, скопируйте сюда информацию из созданного txt-файла... У Вас, часом, не Win7 и не вырезан ли Центр обеспечения безопасноси?

saavaage 07-10-2010 13:39 1513504

На виртуалке установлены Avast Home и PC Tools Firewall. Получил такой отчет:

Microsoft Windows XP Professional Service Pack 3 X86
Антивирус: avast! Antivirus Version: 5.0.83886757
Файрволл: PC Tools Firewall Plus Version: 6.0.0

saavaage 07-10-2010 22:56 1513925

еще с форума:

для XP SP3 Ru

Протестировал Comodo Internet Security 4.1:
COMODO Antivirus Version: 3.9
COMODO Firewall Version: 3.9

Comodo Internet Security 4.1 (только файрволл) + AVG 9:
AVG Anti-Virus Free Version: 9.0
COMODO Firewall Version: 3.9

saavaage 09-10-2010 13:57 1514980

Промежуточные итоги - см. таблицу в шапке


Время: 00:46.

Время: 00:46.
© OSzone.net 2001-