Skip to content

Instantly share code, notes, and snippets.

@log0div0
Created October 15, 2020 08:20
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save log0div0/c23551fdc3b6b68551024421d9fbebd8 to your computer and use it in GitHub Desktop.
Save log0div0/c23551fdc3b6b68551024421d9fbebd8 to your computer and use it in GitHub Desktop.
machine win10 {
cpus: 2
ram: 4Gb
disk main: {
source: "${QEMU_DISK_DIR}/win10.qcow2"
}
}
flash dr_web_flash {
size: 2Gb
fs: "ntfs"
folder: "${DR_WEB_DIR}"
}
test dr_web_install {
win10 {
#Включаем виртуалку
start
#Дожидаемся появления рабочего стола
wait "Recycle Bin" timeout 10m
#Подключаем флешку с дистрибутивом Dr Web
plug flash dr_web_flash; sleep 5s
mouse click "USB Drive"; sleep 3s
# Открываем содержимое флешки через проводник
mouse click "Open folder"
#Копируем инсталлятор на рабочий стол
mouse click "drweb"
press LeftCtrl + C
# Мы точно знаем, что под значком браузера "Edge" находится пустое место
mouse click "Edge".move_down(50)
press LeftCtrl + V
wait "Copying"
wait !"Copying" timeout 5m
#Наводим фокус на окно с открытой флешкой
#Щелкаем на верхнюю надпись "USB Drive" - как раз в заголовке окна
mouse click "USB Drive".from_top(0)
#Закрываем окно
press LeftAlt + F4
#Вытаскиваем флешку
unplug flash dr_web_flash; sleep 3s
#Запускаем инсталлятор
mouse dclick "drweb"
#Отвечаем на всплывающее окошко
wait "Do you want to allow"; mouse click "Yes".from_bottom(0)
#Приветственный экран инсталлятора
wait "Thank you for choosing Dr.Web" timeout 3m
#Убираем галочку с предложением подключиться к облаку
mouse click "I want to connect to Dr.Web Cloud".right_center()
#А Firewall, наоборот, включаем
mouse click "Install Dr.Web Firewall"
mouse click "Next".from_bottom(0)
#Откладываем вопрос получения лицензии и начинаем установку
mouse click "Receive license later"
mouse click "Install"
#Установка завершена, перезагружаем компьютер
wait "Installation complete" timeout 10m
mouse click "Restart now"
#Убеждаемся, что перезагрузка началась
wait "Restarting"
#Пытаемся найти Dr. Web на рабочем столе после перезагрузки
wait "Recycle Bin" && "Dr.Web" timeout 10m
}
}
flash deny_access {
fs: "ntfs"
size: 16Mb
}
# Макрос, который запускает приложение,
# имя которого передается в качестве параметра
macro open_app(app) {
mouse click "Type here to search"
wait "Top apps"
type "${app}"
wait "Open"
press Enter
}
#Тест с ограничением доступа к флешкам в Dr. Web
#Этот тест полагается на результат работы теста dr_web_install
test dr_web_flash_drive_restriction: dr_web_install {
win10 {
sleep 5s
#Вставляем флешку, пока что с ней можно работать
plug flash deny_access
#Дожидаемся когда откроется проводник с этой флешкой
wait "USB Drive (E:)" && "This folder is empty"
#Создаем новый текстовый файл, называем его "my_file"
mouse rclick "This folder is empty"
mouse move "New"; sleep 3s
mouse click "Text Document".from_top(1)
wait "New Text Document";
press Backspace; type "my_file"; press Enter
#Безопасно извлекаем флешку
mouse rclick "USB Drive (E:)".from_left(0); mouse click "Eject"
wait "Safe To Remove Hardware"
unplug flash deny_access
#Открываем центр безопасности Dr Web
open_app("Security Center")
wait "Computer is protected"
#Разблокируем режим изменений
mouse click "Click to make changes"
wait "Do you want to allow"
#Соглашаемся с всплывающим окошком
mouse click "Yes".from_bottom(0)
wait "Computer is protected"
#Включаем блокирование флешек
mouse click "Devices and Personal Data"
mouse click "Configure device access rules"
mouse click "Block removable media"; sleep 2s
#Снова вставляем флешку, открываем обозреватель
plug flash deny_access
open_app("File Explorer")
wait "Frequent folders"
#Пытаемся открыть флешку для чтения
mouse click "USB Drive (E:)".from_left(0)
#Ожидаем увидеть ошибку, т.к. работа с флешками должна быть заблокирована
wait "Access is denied"
unplug flash deny_access
}
}
flash free_commander_flash {
size: 2Gb
fs: "ntfs"
folder: "${FREE_COMMANDER_DIR}"
}
# Тест с установкой FreeCommander
# Этот тест полагается на результат работы теста dr_web_install
test win10_install_freecommander: dr_web_install {
win10 {
# Вставляем флешку, дожидаемся появления окна в файловым обозревателе с флешкой
plug flash free_commander_flash
wait "FreeCommanderXE-32-public_setup"
#Открываем архив и запускаем инсталлятор
mouse dclick "FreeCommanderXE-32-public_setup".right_bottom()
sleep 2s
mouse dclick "FreeCommanderXE-32-public_setup".from_bottom(0)
wait "This will install FreeCommander"
mouse click "Yes"
wait "Do you want to allow"
mouse click "Yes".from_bottom(0)
#Инсталлятор открылся, прокликиваем везде "Далее"
wait "English"; mouse click "OK"
wait "License Agreement"
mouse click "I accept the agreement"
mouse click "Next".from_bottom(0).center_bottom()
wait "Destination Location"
mouse click "Next".from_bottom(0).center_bottom()
wait "Would you like the folder to be created?"
mouse click "Yes"
wait "Select Start Menu Folder"
mouse click "Next".from_bottom(0).center_bottom()
wait "Select Additional Tasks"
mouse click "Next".from_bottom(0).center_bottom()
wait "Ready to Install"
mouse click "Install".from_bottom(0).center_bottom()
wait "Completing";
# Установка завершена, отключаем галочку с просмотром ReadMe
# И также отказываемся от немедленного запуска FreeCommander
mouse click "View ReadMe"
mouse click "Start FreeCommander"
mouse click "Finish".from_bottom(0)
#Ждём, когда окно с установкой закроется
wait !"Finish"
#Закрываем проводник и отключаем флешку
press LeftAlt + F4
wait !"USB Drive"
unplug flash free_commander_flash
}
}
#Тест с ограничением доступа к папке и добавлением
#исключения для FreeCommander
test dr_web_restrict_program: win10_install_freecommander {
win10 {
#Кликаем на пустое место правой кнопкой мышки
mouse rclick "Recycle Bin".move_right(100)
#Создаём новую папку Protected
mouse move "New"
mouse click "Folder".from_top(0)
type "Protected"; press Enter
#В папке создаём текстовый файл "my_file", играющий роль
#мемчиков с котиками
mouse dclick "Protected"
mouse rclick "This folder is empty"
mouse move "New"; sleep 3s
mouse click "Text Document".from_top(1)
wait "New Text Document";
press Backspace; type "my_file"; press Enter
#Открываем центр безопасности и включаем
#режим изменений
open_app("Security Center")
wait "Computer is protected"
mouse click "Click to make changes"
wait "Do you want to allow"
mouse click "Yes".from_bottom(0)
wait "Computer is protected"
#Переходим в меню "Data loss Prevention"
mouse click "Devices and Personal Data"
mouse move 0 0
mouse click "Data Loss Prevention"
#Открываем меню с добавлением защищаемой папки
mouse click "Protected folder".left_top().move_up(20)
wait "Add folder to protect"
#Находим в навигаторе папку "Protected" на рабочем столе
#И делаем её защищаемой
mouse click "Browse"
wait "Open folder"
mouse dclick "Users"
mouse dclick "testo"
mouse dclick "Desktop"
mouse click "Protected".from_right(0)
mouse click "OK".from_top(0)
wait !"Open folder"
#Добавляем исключение для FreeCommander
mouse click "Application".from_bottom(0).left_top().move_up(20)
wait "Open file"
mouse click "C:\\".from_top(0)
press LeftCtrl + A; press Backspace;
type "C:\\Program Files (x86)\\FreeCommander XE\\FreeCommander.exe";
press Enter
wait !"Open file"
#Закрываем по череди все окна
mouse click "OK".from_top(0)
wait "Protected folder" && "C:\\Users\\testo\\Desktop\\Protected"
press LeftAlt + F4
wait !"Protected folder"
# Пробуем удалить файл обычным способом
mouse click "my_file"; press Delete
wait "administrator permission"
mouse click "Continue"
# Даже с правами администратора - не получается
wait "Modification of the folder contents is blocked"
mouse click "Cancel"
# Подождем когда закроется окно с сообщением о блокировке
wait !"Modification of the folder contents is blocked"
#Теперь открываем FreeCommander
open_app("FreeCommander")
wait "Desktop - FreeCommander XE"
# Переходим в папку Protected
mouse dclick "Protected".from_left(0)
mouse click "my_file.txt"
# Удаляем файл my_file.txt
press Delete; mouse move 0 0
# Ждём, когда файл исчезнет
wait !"my_file"
}
}
# Тест с добавлением нового пользователя
# Полагается на результат работы тесты dr_web_install
test win10_add_user: dr_web_install {
win10 {
#Открываем Управление Компьютером
open_app("Computer Management")
#Переходим в папку "Локальные пользователи"
mouse click "Local Users"
wait "Users" && "Groups"
#Запускаем создание нового пользователя
mouse rclick "Users".from_right(1)
mouse click "New User"
wait "User name"
# Создадим нового пользователя
type "MySuperUser"
mouse click "Create"
# Закроем окно добавления нового опльзователя
mouse click "Close"
wait !"User name"
# Закроем окно "Computer Management"
press LeftAlt+F4
wait !"Computer Management"
# Переключаем пользователя
press LeftCtrl + LeftAlt + Delete
mouse click "Switch user"
mouse click "MySuperUser"
mouse click "Sign in".center_bottom()
# Стандартная инициализация
wait "The user's password must be changed"
mouse click "OK"
wait "New password"
type "1111"; press Tab; type "1111"; press Enter
wait "Your password has been changed"; mouse click "OK"
wait "Microsoft puts you in control" timeout 5m
mouse click "Accept".from_bottom(0).center_bottom()
# Рабочий стол нового пользователя
wait "Recycle Bin"
}
}
# Тест с проверкой родительсткого контроля для файла.
# Модификация файла должна требовать прав суперпользователя.
# Этот тест полагается на тест win10_add_user
# Все действия в этом тесте выполняются от имени нового пользователя
# MySuperUser, под которым мы залогинились в тесте win10_add_user
test dr_web_parental_control_file: win10_add_user {
win10 {
# Открываем "Проводник" и переходим в диск C
open_app("File Explorer")
wait "Frequent folders"
mouse click "This PC".from_left(0)
mouse dclick "Local Disk (C:)"
# Создаём новую "общую" папку
mouse rclick "Windows".move_down(20)
mouse move "New"
mouse click "Folder"
type "shared_folder"; press Enter
# Переходим в общую папку и создаём текстовый файл my_file.txt
mouse dclick "shared_folder"
mouse rclick "This folder is empty"
mouse move "New"; sleep 3s
mouse click "Text Document".from_top(1)
wait "New Text Document";
press Backspace; type "my_file"; press Enter
# Откроем новый файл в блокноте и напишем в него надпись "Hello world!"
mouse dclick "my_file"
wait "my_file - Notepad"
type "Hello world!";
abort "stop here"
# Сохраняем результаты, закрываем окно блокнота
press LeftCtrl + S, LeftAlt + F4
wait !"my_file - Notepad"
# Открываем центр безопасности Dr. Web,
# Включаем режим изменений
open_app("Security Center")
wait "Computer is protected"
mouse click "Click to make changes"
wait "Do you want to allow"
# На этот раз нам нужно ввести пароль администратора
type "1111"
mouse click "Yes".from_bottom(0)
wait "Computer is protected"
# Переходим в меню родительского контроля
# и выбираем нового пользователя MySuperUser
mouse click "Parental Control"
mouse click "MySuperUser"
#Защищаем файл my_file.txt от модификации
# Пользователем MySuperUser
mouse click "Files and Folders"
mouse click "Object".from_bottom(0).left_top().move_up(30)
wait "Open file or folder"
mouse dclick "shared_folder".from_right(0)
mouse click "my_file.txt"; press Enter
wait !"Open file or folder"
wait "C:\\shared_folder\\my_file.txt" && "Read-only"
#Закрываем окно центра безопасности
press LeftAlt + F4
wait !"Parental Control"
# Пробуем открыть файл my_file на чтение
mouse dclick "my_file"
# На чтение получилось
wait "Hello world!"; press LeftAlt + F4
# Пробуем удалить файл
wait !"Hello world!"; press Delete;
# Видим сообщение о невозможности удалить файл
wait "File Access Denied"; mouse click "Continue"
mouse move 0 0
#Попробуем удалить файл с правами администратора
wait "Do you want to allow"; type "1111"; mouse click "Yes"
# Всё получилось, файла больше нет
wait ("This folder is empty" || "Working on it") && !"my_file"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment