Показать полную графическую версию : Скрытые файлы на флешке
Valek271183
18-08-2016, 19:42
Здравствуйте, подскажите можно ли сделать BAT который будет справляться с вирусом который создаёт на флешке скрытую папку с названием флешки и переносит все её содержимое туда, т.е. нужно чтобы BAT файл проверил нет ли на флешке скрытой папки с названием флешки (например Вася) и переносил бы из неё файлы назад в корень флешки. Можно ли это осуществить, и, если можно, то как?
Что есть «название флэшки»?
Valek271183
18-08-2016, 20:02
не имя производителя а то как я её переименую и как её название будет отображаться в окне Мой компьютер
Что есть «название флэшки»? »
Похоже что "метка тома".
Valek271183
18-08-2016, 21:42
Да :)
Valek271183, скрытая папка выводится командой dir /a ?
Valek271183
20-08-2016, 17:19
После воздействия вируса на флешке появился файл ntuser1.bak в первой строчке которого записано имя флешки, т.е. такое же имя имеет папка куда переместились все файлы,это может упростить задачу?
megaloman
20-08-2016, 19:11
После воздействия вируса на флешке появился файл ntuser1.bak в первой строчке которого записано имя флешки 1. В этом файле в первой строке только метка тома флэшки или еще что-нибудь? Желательно пример.
2. Если флэшка не имеет метки тома, то куда переносятся файлы?
Valek271183
20-08-2016, 19:13
1. Да только метка тома
2. Из папки с названием флешки перенести всё назад в корень флешки
1. Да только метка тома »
Ждём:
пример. »
файла (упаковать в архив, приложить к сообщению).
2. Из папки с названием флешки перенести всё назад в корень флешки »
Это не ответ на вопрос:
2. Если флэшка не имеет метки тома, то куда переносятся файлы? »
т.е. — какая папка в этом случае будет скрытой? Ответьте на него.
Valek271183
20-08-2016, 21:14
1. Приложил файл то что в корне флешки
2. Я не знаю что происходит когда у флешки нет имени (наверное Съёмный диск), не знаю как действует вирус, у меня флешка называется Гена и все файлы переместились с появившуюся скрытую папку Гена, у знакомых у всех флешка как-то называется, просто последнее время на работе многие жалуются на то что на флешке почти всё занято а открываешь её и она пустая
Valek271183, похоже на ученические проделки.
Скорее всего в файле ntuser.bak сидит именно имя папки, куда всё перемещается и которое читается из метки тома. И если у флэшки нет имени — то или такая флэшка останется неизменённой, или сюда запишется любое имя, которое и будет именем папки, куда всё будет ссыпано.
Имя тома прочитать проблем нет, проанализировав или вывод команды Vol X:, или даже первую строку вывода команды Dir (команды, которая всё равно потребуется для анализа каталогов, находящихся в корне диска):
dir X:\ /AD
И там и там Х — это буква анализируемого диска.
Можно сделать батник, на который кидать интересующий диск из окна "Мой Компьютер" — тогда его строка, где выделяется метка тома, будет выглядеть как
dir %~d1\ | find /i "Том в устройстве "
а строка для вывода списка каталогов, который можно проанализировать — как
dir %~d1\ /AD /B
(ключ /B — чтобы выводились только имена каталогов, без дополнительной информации о них и о диске)
f:\>dir T:\ | find /i "Том в устройстве "
Том в устройстве T имеет метку _TEST1_
f:\>dir T:\ /AD /B
$OEM$
autorun.inf
TEMP
Но похоже всё же, что вместо метки тома надо брать строку из X:\ntuser.bak
Ну, с учётом всего вышеизложенного, давайте попробуем так (на WSH):
Option Explicit
Const Hidden = 2
Dim objDrive
Dim strPath2ntuser1bak
Dim strSourceFolder
Dim objFolder
With WScript.CreateObject("Scripting.FileSystemObject")
For Each objDrive In .Drives
strPath2ntuser1bak = .BuildPath(objDrive.RootFolder.Path, "ntuser1.bak")
If .FileExists(strPath2ntuser1bak) Then
With .OpenTextFile(strPath2ntuser1bak)
strSourceFolder = .ReadLine()
.Close
End With
If .FolderExists(.BuildPath(objDrive.RootFolder.Path, strSourceFolder)) Then
Set objFolder =.GetFolder(.BuildPath(objDrive.RootFolder.Path, strSourceFolder))
If objFolder.Attributes And Hidden Then
.MoveFolder .BuildPath(objFolder.Path, "*.*"), objDrive.RootFolder.Path
.MoveFile .BuildPath(objFolder.Path, "*.*"), objDrive.RootFolder.Path
If objFolder.SubFolders.Count = 0 And objFolder.Files.Count = 0 Then
objFolder.Delete True
Else
WScript.Echo "Can't move all files and folders from folder [" & strSourceFolder & "] on drive [" & objDrive.DriveLetter & "] into [" & objDrive.RootFolder.Path & "]."
WScript.Echo "Hidden folder [" & strSourceFolder & "] on drive [" & objDrive.DriveLetter & "] not delete."
WScript.Quit 3
End If
Else
WScript.Echo "Folder [" & strSourceFolder & "] found on drive [" & objDrive.DriveLetter & "], but not hidden."
WScript.Quit 2
End If
Set objFolder = Nothing
Else
WScript.Echo "File [" & strPath2ntuser1bak & "] found on drive [" & objDrive.DriveLetter & "], but folder [" & strSourceFolder & "] on drive [" & objDrive.DriveLetter & "] not found."
WScript.Quit 1
End If
.DeleteFile strPath2ntuser1bak, True
End If
Next
End With
WScript.Quit 0
Хотя, на мой взгляд, куда как проще и надёжнее делать сие под каким-нибудь сторонним файловым менеджером, типа Far Manager.
megaloman
21-08-2016, 14:00
@echo off
cls
chcp 1251 >nul
Set "File=ntuser1.bak"
If "%1"=="" Echo Not parameters &Pause &GoTo :Eof
Set "Vol=%1:"
Set "Vol=%Vol:~0,2%"
Set "File=%Vol%\%File%
Attrib -S -H "%File%" >nul 2>nul
If Not Exist "%File%" Echo File "%File%" Not Exist &GoTo :Eof
Set "Metka="
FOR /F "usebackq delims=" %%i IN ("%File%") DO Set "Metka=%%~i" &GoTo :Cont
:Cont
If "%Metka%"=="" Echo Not mark in %File% &GoTo :Eof
Attrib -S -H "%Vol%\%Metka%" >nul 2>nul
If Not Exist "%Vol%\%Metka%" Echo Folder "%Vol%\%Metka%1" Not Exist &GoTo :Eof
pushd "%Vol%\%Metka%"
Attrib -S -H /S /D
popd
FOR /F "usebackq delims=" %%i IN (`Dir "%Vol%\%Metka%\" /b 2^>nul`) DO Move "%Vol%\%Metka%\%%i" "%Vol%\" >nul
rd "%Vol%\%Metka%"
При запуске батника в параметрах укажите букву флэшки, например kuku.bat F:
FOR /F "usebackq delims=" %%i IN ("%File%") DO Set "Metka=%%~i" &GoTo :Cont
:Cont
можно упростить до:
<"%File%" set /p Metka=
Valek271183
21-08-2016, 16:37
мне проще если скопирую файлик на флешку и запущу из неё, так можно что бы не нужно было указывать букву диска?
megaloman
21-08-2016, 20:12
@echo off
cls
chcp 1251 >nul
Set "File=ntuser1.bak"
Set "Vol=%~d0"
Set "File=%Vol%\%File%
Attrib -S -H "%File%" >nul 2>nul
If Not Exist "%File%" Echo File "%File%" Not Exist &GoTo :Eof
Set "Metka="
FOR /F "usebackq delims=" %%i IN ("%File%") DO Set "Metka=%%~i" &GoTo :Cont
:Cont
If "%Metka%"=="" Echo Not mark in %File% &GoTo :Eof
Attrib -S -H "%Vol%\%Metka%" >nul 2>nul
If Not Exist "%Vol%\%Metka%" Echo Folder "%Vol%\%Metka%1" Not Exist &GoTo :Eof
pushd "%Vol%\%Metka%"
Attrib -S -H /S /D
popd
FOR /F "usebackq delims=" %%i IN (`Dir "%Vol%\%Metka%\" /b 2^>nul`) DO Move "%Vol%\%Metka%\%%i" "%Vol%\" >nul
rd "%Vol%\%Metka%"
Valek271183
21-08-2016, 20:25
megaloman,не сочтите за наглость, но задам ещё один вопрос, в скрытой папке с названием флешки было ещё 2 скрытые папки, они удалились при выполнении bat файла, можно что бы скрытые папки тоже переносились?
мне проще если скопирую файлик на флешку и запущу из неё, так можно что бы не нужно было указывать букву диска? »
Valek271183, это весьма неправильно, отвыкайте от подобного подхода. Правильный метод — например, перетащить в Проводнике диск на скрипт/пакетный файл (или на ярлык на скрипт/пакетный файл).
в скрытой папке с названием флешки было ещё 2 скрытые папки, они удалились при выполнении bat файла, можно что бы скрытые папки тоже переносились? »
При использовании скрипта WSH — переносятся.
megaloman
21-08-2016, 22:06
Valek271183,
в скрытой папке с названием флешки было ещё 2 скрытые папки, они удалились при выполнении bat файла
Не верю! Не сочтите за наглость :), но у меня переносятся, единственное, я убираю атрибут "скрытый" перед переносом, чаще всего вирус делает файлы и папки скрытыми, имхо, надо этот атрибут убрать. В моём батнике нет возможности удалить содержимое вашей скрытой папки, только перенести.Правильный метод — например, перетащить в Проводнике диск на скрипт/пакетный файл (или на ярлык на скрипт/пакетный файл). Не буду утверждать столь категорично, что все остальные методы неправильны, но моё предыдущее решение с необходимостью ввода буквы диска будет работать при такой организации обработки без каких-либо доработок.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.