Решаем нестандартные задачи с помощью стандартного Windows Scripting Host::Журнал СА 6.2005
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Наука и технологии
Подписка
Где купить
Авторам
Рекламодателям
Архив номеров
Контакты
   

  Опросы
  Статьи

Электронный документооборот  

5 способов повысить безопасность электронной подписи

Область применения технологий электронной подписи с каждым годом расширяется. Все больше задач

 Читать далее...

Рынок труда  

Системные администраторы по-прежнему востребованы и незаменимы

Системные администраторы, практически, есть везде. Порой их не видно и не слышно,

 Читать далее...

Учебные центры  

Карьерные мечты нужно воплощать! А мы поможем

Школа Bell Integrator открывает свои двери для всех, кто хочет освоить перспективную

 Читать далее...

Гость номера  

Дмитрий Галов: «Нельзя сказать, что люди становятся доверчивее, скорее эволюционирует ландшафт киберугроз»

Использование мобильных устройств растет. А вместе с ними быстро растет количество мобильных

 Читать далее...

Прошу слова  

Твердая рука в бархатной перчатке: принципы soft skills

Лауреат Нобелевской премии, специалист по рынку труда, профессор Лондонской школы экономики Кристофер

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 9943
Комментарии: 0
Потоковая обработка данных

 Читать далее...

19.03.2018г.
Просмотров: 8154
Комментарии: 0
Релевантный поиск с использованием Elasticsearch и Solr

 Читать далее...

19.03.2018г.
Просмотров: 8259
Комментарии: 0
Конкурентное программирование на SCALA

 Читать далее...

19.03.2018г.
Просмотров: 5226
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 5910
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

Друзья сайта  

 Решаем нестандартные задачи с помощью стандартного Windows Scripting Host

Архив номеров / 2005 / Выпуск №6 (31) / Решаем нестандартные задачи с помощью стандартного Windows Scripting Host

Рубрика: Администрирование /  Автоматизация

МИХАИЛ КОШКИН

Решаем нестандартные задачи с помощью стандартного Windows Scripting Host

 

Достаточно часто в администрировании приходится сталкиваться с разовыми задачами, программные решения для которых под рукой отсутствуют, а путешествие по Интернету не приносит требуемого результата. Для таких случаев в операционной системе Windows панацеей практически от всех бед может стать Windows Scripting Host. Его возможности позволят вам в короткие сроки составить нужный алгоритм и решить возникшую проблему.

Сегодня мы рассмотрим возможности Windows Scripting Host для получения основных характеристик компьютерных систем, которые могут быть использованы, например, для решения задач инвентаризации технических средств, учета пользователей, работающих в локальной сети, и даже при проведении криминалистической экспертизы компьютерной техники.

Примеры скриптов на языке VBScript, приведенные в статье, разработаны и протестированы для W2K. В большинстве своем они могут быть использованы и при работе под управлением Windows 98 или ME без установки дополнительного программного обеспечения.

Носители информации

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

Ниже приведена общая структура кода программы, позволяющая определить, какие устройства для хранения информации (далее – диски) имеются в системе.

' Получение доступа к объектам FileSystem Object

Dim fso : Set fso = WScript.CreateObject("Scripting.FileSystemObject")

' Перебираем все диски (HDD, FDD, CD и др.), имеющиеся в системе

Dim i

For Each i In fso.Drives

….

Next

В теле цикла с использованием дескриптора, содержащегося в переменной i, могут быть получены такие свойства (из наиболее значимых в рамках тематики статьи), как: буква диска – i.DriveLetter; тип диска – i.DriveType (см. таблицу 1).

Таблица 1. Возможные значения типа диска для i.DriveType

Значение

Пояснение

0

Тип не может быть определен

1

Сменный носитель или дисковод для гибких дисков

2

Том, размещенный на HDD-диске

3

Сетевой диск

4

CD / DVD-ROM

5

Виртуальный RAM-диск

Кроме того, с использованием дескриптора доступа к элементам файловой системы fso дополнительно могут быть получены все основные характеристики носителя:

  • тип файловой системы носителя – fso.GetDrive(i.DriveLetter).FileSystem;
  • серийный номер тома – Hex(fso.GetDrive(i.DriveLetter).SerialNumber);
  • метка тома – fso.GetDrive(i.DriveLetter).VolumeName;
  • общий размер диска – FormatNumber (fso.GetDrive(i.DriveLetter).TotalSize /1048576, 1) & " Мб");
  • размер незанятого пространства диска – FormatNumber (fso.GetDrive(i.DriveLetter).FreeSpace /(1024*1024), 1) & " Мб").

Рисунок 1. Результаты обработки информации об имеющихся в системе дисках

Рисунок 1. Результаты обработки информации об имеющихся в системе дисках

Следует также предусматривать ситуации, когда диски появляются в системе лишь на некоторое время. Это может быть связано с подключением сетевых дисков, наличием сменных USB flash или шифрованных дисков. Некоторые подходы, позволяющие определить, с какими дисками пользователю приходилось иметь дело, будут изложены далее.

Поиск файлов

Если задаться целью найти все файлы-контейнеры для шифрованных дисков, то эта задача может быть решена, например, путем проверки содержимого всех файлов, размещающихся на диске, на предмет наличия в них определенной комбинации байт-сигнатуры. Кроме того, большинство известных программ работы с шифрованными дисками регистрируют в операционной системе определенные расширения файлов, ассоциируемые с файлами-контейнерами, что позволяет сузить круг поиска интересующих файлов до проверки наличия в имени определенного расширения.

Ниже приводится структура рекурсивной процедуры обхода подкаталогов для решения задачи поиска на диске файлов, обладающих необходимыми свойствами.

Sub WorkSubFolder(sdrivename)

Dim sfolder : set sfolder=fso.getfolder(sdrivename)

" Для работы с подкаталогами источника

Dim ssfolder : set ssfolder=sfolder.SubFolders

" Для работы с файлами каталога источника

Dim ssfiles : set ssfiles=sfolder.Files

Dim fo

" Цикл обработки подкаталогов каталога источника

For Each fo In ssfolder

     WorkSubFolder SDriveName&""&fo.name

 Next

" Для всех файлов текущего каталога вызывается процедура WorkForFile

Dim fi     : For Each fi In ssfiles : WorkForFile sfolder&""&fi.name : Next

End sub

Файлы, имена которых содержат интересующее расширение, могут быть найдены с применением функции fso.Get-ExtensionName(fullnamefile) (см. рис. 2).

Рисунок 2. Результаты поиска файлов, имеющих заданные расширения

Рисунок 2. Результаты поиска файлов, имеющих заданные расширения

Для поиска файлов с определенной сигнатурой в простейшем случае достаточно воспользоваться функциями открытия файла (fr=fso.OpenTextFile(FullNameFile, 1, false)), чтения данных из файла (s_read=fr.Read(1)) и закрытия файла (fr.Close) (см. рис. 3).

Рисунок 3. Результаты поиска файлов-контейнеров шифрованных дисков с использованием заданной сигнатуры

Рисунок 3. Результаты поиска файлов-контейнеров шифрованных дисков с использованием заданной сигнатуры

При работе с томами файловой системы NTFS будьте готовы к ситуациям, когда доступ с правами пользователя к некоторым подкаталогам будет запрещен (например, «System Volume Information», который размещается в корневом каталоге тома). Необходимо также учитывать то обстоятельство, что при значительных размерах дисков и большом количестве файлов поиск может выполняться достаточно продолжительное время.

Ярлыки

Информацию о пристрастиях пользователя можно почерпнуть при изучении файлов-ярлыков, которые формируются при различных обстоятельствах (будь то история работы с файлами Microsoft Office или раздел Recent). Для анализа достаточно обработать дату создания файла, являющегося ярлыком, и параметр TargetPath, в котором содержится информация о запускаемом файле.

Dim wshshell : Set wshshell = WScript.CreateObject("WScript.Shell")

Dim shortcut : Set shortcut = wshshell.CreateShortcut(fullnamefilelnk)

' Вывод информации с названием и полным путем к запускаемому файлу

WScript.Echo( shortcut.TargetPath )

Dim fso : Set fso=CreateObject("Scripting.FileSystemObject")

Dim filelnk : Set filelnk = fso.getfile(строка с полным названием файла-ярлыка)

' Вывод информации о дате создания файла-ярлыка

WScript.Echo( filelnk.DateCreated ) 

При этом может обнаружиться, что пользователь открывал файлы с дисков, которые в системе отсутствуют, что может свидетельствовать о наличии у пользователя сменного USB-накопителя или использовании секретного шифрованного диска.

Рисунок 4. Результаты поиска файлов-ярлыков в двух пользовательских каталогах

Рисунок 4. Результаты поиска файлов-ярлыков в двух пользовательских каталогах

Документы Word

Возможности использования элементов ActiveX позволяют серьезно расширить область применения пользовательских программ на VBScript. Примером этому может стать описание подхода получения метаданных документов Microsoft Word. К слову сказать, за последние три года содержимое метаданных послужило поводом для ряда неприятных историй с крупными компаниями и даже государствами (случаи с досье правительства Британии о военном потенциале Ирака и исковым заявлением компании SCO).

Следующий пример демонстрирует возможность получения метаданных для документа Microsoft Word, а также позволяет отследить ситуации, когда документ зашифрован с использованием пароля.

On Error Resume Next

Dim wordapp : Set wordapp = WScript.CreateObject("Word.Application")

' Открываем файл fullnamefile с документом Word с паролем " "

Dim doc

Set doc = wordapp.Documents.Open(fullnamefile, _

                        False, _

                        blnReadOnly,_

                        False,

                        " ")

If Err.Number = 5408 then

' Обработка файла с документом Word, который имеет пароль

End if

' Метаданные с пользовательскими свойствами документа

Dim propitem

For Each propitem In wordapp.ActiveDocument.CustomDocumentProperties

' В цикле обрабатываются propitem.Type и propitem.Value

Next

' Метаданные со стандартными свойствами документа

For Each propitem In wordapp.ActiveDocument.BuiltInDocumentProperties

' В цикле обрабатываются propitem.Type и propitem.Value

Next

Err.Clear

On Error GoTo 0

Рисунок 5. Результаты обработки свойств документов MS Word

Рисунок 5. Результаты обработки свойств документов MS Word

Следует отметить, что документы Microsoft Word могут содержать и другие метаданные, которые нельзя получить путем применения стандартных функций работы с документами Word, для этого требуется визуальный контроль содержимого. В файле могут обнаружиться такие данные, как:

  • имя и полный путь к файлу с документом;
  • адреса электронной почты или информация о веб-сервере;
  • имена принтеров;
  • текстовые фрагменты, удаленные из документа в некоторый момент до сохранения;
  • текстовые фрагменты из других документов, не имеющих отношения к данному, попавшие в него из-за ошибок в Microsoft Word.

Переменные среды и данные реестра

Если подходы, описанные в предыдущих разделах, достаточно универсальны и позволяют исследовать содержимое отдельных носителей информации, то далее речь пойдет о возможностях VBScript, которые требуют запуска скриптов на исследуемом компьютере либо выполнения программ под управлением изучаемой операционной системы.

Обработка с использованием VBScript переменных среды для системы Windows поможет ответить на вопрос, относится ли операционная система к Win9x или W2K, а также получить информацию о некоторых особенностях установки и настройки операционной системы.

Dim wshshell : Set wshshell = WScript.CreateObject("WScript.Shell")

Dim wshproenv : Set wshproenv = wshshell.Environment("PROCESS")

wshproenv (var_env)

Таблица 2. Возможные значения строкового параметра var_env для W2K

Значение параметра

Пояснения

Данные об операционной системе

OS

Операционная система

WINDIR

Каталог системных файлов*

PROGRAMFILES

Каталог установки программ

PATH

Путь поиска*

COMPUTERNAME

Название компьютера

Данные о текущем сеансе пользователя

USERNAME

Имя пользователя

USERPROFILE

Каталог пользователя

TEMP

Каталог временных файлов*

Примечание:

* параметр может использоваться для Win9x и WinME.

Основная информация, особенности настройки операционной системы и прикладных программ сосредоточены в реестре, из которого можно почерпнуть большое количество полезной информации (см. рис. 6).

Рисунок 6. Результаты обработки значений некоторых ключей реестра

Рисунок 6. Результаты обработки значений некоторых ключей реестра

Как известно, данные реестра хранятся в нескольких файлах, которые размещаются в системном и пользовательском каталогах. В случае, если на компьютере установлено несколько операционных систем, возможности VBScript позволяют обработать данные реестра лишь для текущей загруженной системы Windows. Другим ограничением VBScript при работе с реестром является отсутствие возможностей для перебора всех ключей, содержащихся в заданном разделе, что не позволяет программно обработать другую полезную информацию, хранимую в реестре.

WMI

В случаях, если есть возможность запустить скрипт под управлением изучаемой операционной системы версии W2К, полезную информацию можно получить используя Microsoft Windows Management Instrument (WMI). Достаточно подробно подходы работы с WMI описаны в статьях Ивана Коробко, опубликованных в журнале «Системный администратор» в 2004 г. В общем случае код инициализации работы с WMI выглядит следующим образом.

" Подключение к службе WMI локального компьютера

Dim wbemservices

Set wbemservices = GetObject("winmgmts://127.0.0.1/Root/Cimv2")

Таблица 3. Ключи, которые могут представлять интерес при изучении компьютера

Значение

Пояснение

Параметры, определяемые в ходе установки системы.

Ветвь HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersion

ProductName

Название продукта*

CurrentVersion

Версия продукта**

ProductId

ID продукта*

CSDVersion

Обновление

RegisteredOwner

Имя пользователя (указанное при установке системы)*

RegisteredOrganization

Название организации (указанное при установке системы)*

SystemRoot

Каталог установки*

SourcePath

Источник установки

InstallDate

Дата установки

Данные об автоматическом входе пользователя в систему.

Ветвь HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon

AutoAdminLogon

Автоматический вход (значение 1)

DefaultUserName

Имя пользователя по умолчанию

DefaultDomainName

Название домена по умолчанию

Ветка HKEY_CURRENT_USEREnvironment

TEMP

Каталог временных файлов пользователя

Информация по переменным среды.

Ветвь HKEY_LOCAL_MACHINESystemCurrentControlSetControlSession ManagerEnvironment

TEMP

Каталог временных файлов системы

Windir

Каталог системных файлов

PATHEXT

Путь поиска

Размещение некоторых стандартных каталогов Windows.

Ветвь HKEY_CURRENT_USER SoftwareMicrosoftWindowsCurrentVersionExplorerShell Folders

Local Settings

Каталог локальных настроек

Personal

Каталог «Мои документы»***

Recent

Каталог хранения lnk раздела «Документы» меню «Пуск»**

Startup

Каталог хранения lnk раздела «Автозагрузка»**

Настройки экранной заставки. Ветвь HKEY_CURRENT_USERControl PanelDesktop

SCRNSAVE.EXE

Включение заставки (указывает наличие значения ключа)

ScreenSaverIsSecure

Включение парольной защиты экрана (значение 1 и наличие заставки)

Примечание:

* ключи используются также в Win98 и WinME (название раздела «Windows NT» следует изменить на «Windows»);

** ключи применяются в WinME.

Таблица 4. Для Win98 и WinME используются отдельные ключи, располагающиеся в других ветвях

Значение

Пояснение

Настройки экранной заставки. Ветвь HKEY_CURRENT_USERControl PanelDesktop

ScreenSaveActive

Включение заставки (значение 1)

ScreenSaveUsePassword

Включение парольной защиты экрана (значение 1 и наличие заставки)

Ветвь HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion

ProductKey

Ключ продукта

Далее следует использовать информацию с названиями необходимых классов и их свойств, знание о которых можно почерпнуть в процессе изучения объектной модели WMI с помощью утилиты WMI Object Browser. Так, например, получить данные, о включенных на момент проверки сетевых интерфейсах, можно с помощью следующего кода.

Dim objectitems

Set objectitems = wbemservices.ExecQuery("Select * from Win32_NetworkAdapter")

Dim objectitem

For Each objectitem In objectitems

    If objectitem.MacAddress<>"" then

       WScript.echo("Сетевая карта название: " + objectitem.Name + Chr(13) + _ " производитель: \

" & objectitem.Manufacturer + Chr(13) + _ " MAC: " & objectitem.MacAddress)

    End if

Next

Использование возможностей WMI позволяет разработчику сценария на языке VBScript получить:

  • информацию об установленном в системе оборудовании (марка и параметры жесткого диска, тип и частота процессора, размер оперативной памяти, тип BIOS, характеристики и названия видео-, звуковой и сетевой карт и пр.);
  • данные протокола работы, имеющие отношение к определенным событиям (запуск, остановка операционной системы, установка и извлечение USB-устройства, установка и удаление программного обеспечения и т. п.);
  • параметры настройки компьютера (название компьютера, рабочая группа, название ОС и дата установки, перечень загружаемых ОС, список пользователей ОС, имя зарегистрировавшегося пользователя, время последней загрузки и пр.).

Рисунок 7. Результаты обработки свойств классов Win32_ComputerSystem, Win32_OperatingSystem и Win32_UserAccount

Рисунок 7. Результаты обработки свойств классов Win32_ComputerSystem, Win32_OperatingSystem и Win32_UserAccount

Подводя итог изложению возможностей VBScript для изучения компьютерной системы, следует остановиться на ограничениях, отдельные из которых уже упоминались в статье.

  • Полный набор возможностей VBScript может быть задействован только в случае запуска программ для анализа на изучаемой системе.
  • Невозможно достичь высокого быстродействия для программ на VBScript.
  • При наличии на исследуемом компьютере нескольких операционных систем Windows или даже более одного рабочего пользователя реализация решений с использованием скриптовых языков существенно усложняется. А в случаях, когда на диске имеется раздел операционной системы Linux, VBScript оказывается просто бесполезен.
  • Запуск программ WSH, вообще говоря, влечет за собой изменения на носителе изучаемого компьютера, что не всегда приемлемо, а работа с образами в отдельных случаях может быть достаточно проблематичной.
  • Для VBScript отсутствуют механизмы восстановления на носителях удаленной информации (глубокий анализ подходов для восстановления данных с носителей, обладающих различной файловой структурой, скрупулезно был изложен Крисом Касперски в предыдущих номерах журнала за 2004-2005 гг.).

В качестве бонуса для заинтересованных читателей автором подготовлен набор скриптов, в которых реализованы все возможности VBScript, изложенные в статье (см. http://www.samag.ru раздел «Исходный код»).


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru