AutoIt: 3.3.x.x
Версия: 1.0
Описание: Зашита USB-флешь диска от вирусов
Автор: я
Код:
давно делал для себя программку для прививки Usb флешь дисков от вирусов
сейчас переписал и решил выложить
Через каждые 30 сек. выполняется поиск всех съемных носителей и проверка на наличие файла com1 в папке Autorun.inf. Если он есть то мы там уже побывали если нет то нет.
Принцип работы прививки:
Все вирусы записывают путь к себе в файл autorun.inf или desktop.ini (здесь dll с иконкой заражение через инициализацию последней).
Скрип заменяет эти файлы папками что портит жизнь вирусам, но последние могут ее удалить и поэтому записывает в папку файл com1 (используя UNC-пути вида \\.\x:\) что делает папку не удаляемой из-за этого файла.
Версия: 1.0
Описание: Зашита USB-флешь диска от вирусов
Автор: я
Код:
Код:
#Region config
AutoItSetOption ("TrayIconDebug",0)
AutoItSetOption ("TrayAutoPause",0)
AutoItSetOption ('TrayMenuMode',3)
AutoItSetOption ("TrayOnEventMode", 1)
#EndRegion config
Global $TimeWhile = 30000
Global $CurrentDir = ['recycled','recycle','recycler','System Volume Information'];список зараженных папок
Global $CurrentFile = ['autorun.inf','desktop.ini'];список зараженных файлов
#Region tray menu
;TrayCreateItem("Settings")
;TrayItemSetOnEvent(-1, "Settings")
;TrayCreateItem("")
TrayCreateItem("About")
TrayItemSetOnEvent(-1, "About")
TrayCreateItem("")
TrayCreateItem("Exit")
TrayItemSetOnEvent(-1, "__Exit")
TraySetState(1)
#EndRegion tray menu
#Region process drive
While 1
FindDrive()
Sleep($TimeWhile )
WEnd
Func FindDrive()
Local $drive = DriveGetDrive ("REMOVABLE");найти все съемные устройства
For $i=1 To $drive[0]
$drive[$i] = '\\.\' & $drive[$i];преобразовать путь к устройству в UNC-путь
if DriveSpaceTotal ( $drive[$i]) > 0 Then;размер диска не нуль - некоторые картрийдеры монтируют пустые флешки
if not FileExists($drive[$i] & "\autorun.inf\com1") Then;мы тут уже были =)
ChangeAutorun($drive[$i]);сделать прививку для дисков чей размер не нуль
EndIf
EndIf
Next
EndFunc
Func ChangeAutorun($pathDrive)
For $FileName in $CurrentFile;список зараженных файлов
$path = $pathDrive & "\" & $FileName
if FileExists($path) Then
FileSetAttrib($path,"-RSH");убрать все аттрибуты
FileDelete($path)
EndIf
DirCreate($path);вместо файла создадим папку (так вирусня не запишет свои данные)
;в папке создадим файл с именем com1 - этот трюк сделает файл не удаляемым (специфика windows)
FileWrite($path & '\com1',"out")
FileSetAttrib($path & '\com1',"+RSH");атрибуты файла только чтение, системный, скрытый
FileSetAttrib($path,"+RSH");атрибуты папки только чтение, системный, скрытый
Next
For $DirName in $CurrentDir;список зараженных папок
$path = $pathDrive & "\" & $DirName
if FileExists($path) Then
FileSetAttrib($path,"-RSH");убрать все атрибуты
DirRemove($path)
EndIf
;из папки сделаем файл (очень часто попытка скопироватся не в папку а в файл не вызывают ошибки)
FileWrite($path,"out")
FileSetAttrib($path,"+RSH");атрибуты файла только чтение, системный, скрытый
Next
EndFunc
#EndRegion process drive
#Region Tray Menu Event
Func About()
MsgBox(64,"Usb-Flas","Программа удаляет вирусы с флешь накопителей во время их монтирования")
EndFunc
Func __Exit()
Exit (0)
EndFunc
#EndRegion Tray Menu Event
давно делал для себя программку для прививки Usb флешь дисков от вирусов
сейчас переписал и решил выложить
Через каждые 30 сек. выполняется поиск всех съемных носителей и проверка на наличие файла com1 в папке Autorun.inf. Если он есть то мы там уже побывали если нет то нет.
Принцип работы прививки:
Все вирусы записывают путь к себе в файл autorun.inf или desktop.ini (здесь dll с иконкой заражение через инициализацию последней).
Скрип заменяет эти файлы папками что портит жизнь вирусам, но последние могут ее удалить и поэтому записывает в папку файл com1 (используя UNC-пути вида \\.\x:\) что делает папку не удаляемой из-за этого файла.