Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Создание базы по определению Антивирусов и Файрволлов через скрипт

Ответить
Настройки темы
Создание базы по определению Антивирусов и Файрволлов через скрипт

Ветеран


Сообщения: 903
Благодарности: 161


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: saavaage
Дата: 09-10-2010
Просьба проверить Ваши системы данной утилитой и отписаться:
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 промежуточные итоги:

-------
мы рождены, чтоб сказку сделать былью


Отправлено: 14:53, 06-10-2010

 

Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


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

Отправлено: 15:09, 06-10-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 903
Благодарности: 161

Профиль | Отправить PM | Цитировать


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

-------
мы рождены, чтоб сказку сделать былью


Отправлено: 15:18, 06-10-2010 | #3


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


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

Последний раз редактировалось madmasles, 13-08-2014 в 08:44.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:22, 06-10-2010 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:24, 06-10-2010 | #5


Ветеран


Сообщения: 903
Благодарности: 161

Профиль | Отправить PM | Цитировать


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

-------
мы рождены, чтоб сказку сделать былью


Отправлено: 15:27, 06-10-2010 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата saavaage:
2. добавил пробелы на тот случай, если не одно антивирусное / файрвольное решение в системе (у некоторых есть и такое) . »
Спасибо, ясно. Но, всё равно — вынести:
Код: Выделить весь код
        GUICtrlSetData($Antivirus, $OutputAnt)
        $OutputAnt = ""
за пределы цикла (а то всё одно будет значение только по последнему проходу) и там же, перед «GUICtrlSetData($Antivirus, $OutputAnt)» (или прямо в присваивании) отрезать с конца «$OutputAnt» два пробела.

Отправлено: 15:38, 06-10-2010 | #7


Ветеран


Сообщения: 903
Благодарности: 161

Профиль | Отправить PM | Цитировать


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

-------
мы рождены, чтоб сказку сделать былью


Отправлено: 15:41, 06-10-2010 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Будет. Проверьте на таком коде:
читать дальше »
Код: Выделить весь код
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
…

Отправлено: 15:59, 06-10-2010 | #9


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


Цитата 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

Отправлено: 16:03, 06-10-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Создание базы по определению Антивирусов и Файрволлов через скрипт

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Не обновляются антивирусные базы, не могу зайти на сайты антивирусов Sunforger Лечение систем от вредоносных программ 3 12-02-2010 12:36
[решено] Отключение дисплея или перевод в СПЯЩИЙ РЕЖИМ через через скрипт sashadeg AutoIt 4 30-05-2009 13:06
Создание локальных зеркал антивирусов Dimidrol II Защита компьютерных систем 3 04-01-2008 15:18
скрипт для дампа базы и отправки на другой хост nix_lamer Программирование в *nix 5 12-02-2007 14:09
Создание базы данных на с++builder Galosh Программирование и базы данных 2 27-06-2003 15:47




 
Переход