Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Скрытые файлы на флешке (http://forum.oszone.net/showthread.php?t=317958)

Valek271183 18-08-2016 19:42 2661174

Скрытые файлы на флешке
 
Здравствуйте, подскажите можно ли сделать BAT который будет справляться с вирусом который создаёт на флешке скрытую папку с названием флешки и переносит все её содержимое туда, т.е. нужно чтобы BAT файл проверил нет ли на флешке скрытой папки с названием флешки (например Вася) и переносил бы из неё файлы назад в корень флешки. Можно ли это осуществить, и, если можно, то как?

Iska 18-08-2016 20:01 2661182

Что есть «название флэшки»?

Valek271183 18-08-2016 20:02 2661184

не имя производителя а то как я её переименую и как её название будет отображаться в окне Мой компьютер

mwz 18-08-2016 21:41 2661223

Цитата:

Цитата Iska
Что есть «название флэшки»? »

Похоже что "метка тома".

Valek271183 18-08-2016 21:42 2661224

Да :)

Опиум 19-08-2016 11:49 2661358

Valek271183, скрытая папка выводится командой dir /a ?

Valek271183 20-08-2016 17:19 2661645

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

megaloman 20-08-2016 19:11 2661673

Цитата:

После воздействия вируса на флешке появился файл ntuser1.bak в первой строчке которого записано имя флешки
1. В этом файле в первой строке только метка тома флэшки или еще что-нибудь? Желательно пример.
2. Если флэшка не имеет метки тома, то куда переносятся файлы?

Valek271183 20-08-2016 19:13 2661674

1. Да только метка тома
2. Из папки с названием флешки перенести всё назад в корень флешки

Iska 20-08-2016 20:57 2661736

Цитата:

Цитата Valek271183
1. Да только метка тома »

Ждём:
Цитата:

Цитата megaloman
пример. »

файла (упаковать в архив, приложить к сообщению).

Цитата:

Цитата Valek271183
2. Из папки с названием флешки перенести всё назад в корень флешки »

Это не ответ на вопрос:
Цитата:

Цитата megaloman
2. Если флэшка не имеет метки тома, то куда переносятся файлы? »

т.е. — какая папка в этом случае будет скрытой? Ответьте на него.

Valek271183 20-08-2016 21:14 2661747

Вложений: 1
1. Приложил файл то что в корне флешки
2. Я не знаю что происходит когда у флешки нет имени (наверное Съёмный диск), не знаю как действует вирус, у меня флешка называется Гена и все файлы переместились с появившуюся скрытую папку Гена, у знакомых у всех флешка как-то называется, просто последнее время на работе многие жалуются на то что на флешке почти всё занято а открываешь её и она пустая

mwz 21-08-2016 00:23 2661793

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

Iska 21-08-2016 03:58 2661802

Ну, с учётом всего вышеизложенного, давайте попробуем так (на 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 2661881

Ну, с учётом всего вышеизложенного, давайте попробуем так :) (на СMD):
Код:

@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:

Iska 21-08-2016 14:16 2661886

Код:

FOR /F "usebackq delims=" %%i IN ("%File%") DO Set "Metka=%%~i" &GoTo :Cont

:Cont

можно упростить до:
Код:

<"%File%" set /p Metka=

Valek271183 21-08-2016 16:37 2661921

мне проще если скопирую файлик на флешку и запущу из неё, так можно что бы не нужно было указывать букву диска?

megaloman 21-08-2016 20:12 2661951

если скопирую файлик на флешку и запущу из неё, так можно что бы не нужно было указывать букву диска
Код:

@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 2661952

megaloman,не сочтите за наглость, но задам ещё один вопрос, в скрытой папке с названием флешки было ещё 2 скрытые папки, они удалились при выполнении bat файла, можно что бы скрытые папки тоже переносились?

Iska 21-08-2016 20:48 2661954

Цитата:

Цитата Valek271183
мне проще если скопирую файлик на флешку и запущу из неё, так можно что бы не нужно было указывать букву диска? »

Valek271183, это весьма неправильно, отвыкайте от подобного подхода. Правильный метод — например, перетащить в Проводнике диск на скрипт/пакетный файл (или на ярлык на скрипт/пакетный файл).

Цитата:

Цитата Valek271183
в скрытой папке с названием флешки было ещё 2 скрытые папки, они удалились при выполнении bat файла, можно что бы скрытые папки тоже переносились? »

При использовании скрипта WSH — переносятся.

megaloman 21-08-2016 22:06 2661973

Valek271183,
Цитата:

в скрытой папке с названием флешки было ещё 2 скрытые папки, они удалились при выполнении bat файла
Не верю! Не сочтите за наглость :), но у меня переносятся, единственное, я убираю атрибут "скрытый" перед переносом, чаще всего вирус делает файлы и папки скрытыми, имхо, надо этот атрибут убрать. В моём батнике нет возможности удалить содержимое вашей скрытой папки, только перенести.
Цитата:

Цитата Iska
Правильный метод — например, перетащить в Проводнике диск на скрипт/пакетный файл (или на ярлык на скрипт/пакетный файл).

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

Iska 21-08-2016 22:49 2661986

Самое интересное, что в примере скрытых вложенных папок не было. Скрипту, впрочем, всё равно — он переносит любые файлы и папки, к которым есть доступ. А у коллеги megaloman, насколько я смотрел код, со всего вложенного предварительно снимаются атрибуты «Скрытый» и «Системный».Valek271183, давайте ещё один образец содержимого диска, при котором будет видно данное удаление.

Цитата:

Цитата megaloman
Не буду утверждать столь категорично, что все остальные методы неправильны, но моё предыдущее решение с необходимостью ввода буквы диска будет работать при такой организации обработки без каких-либо доработок. »

Неправильный метод, в моём понимании — это клонировать пакетный файл/скрипт по месту применения. Ваше решение более чем укладывается в корректную концепцию.

x0r 23-08-2016 14:05 2662465

Цитата:

Цитата Valek271183
Здравствуйте, подскажите можно ли сделать BAT который будет справляться с вирусом который создаёт на флешке скрытую папку с названием флешки и переносит все её содержимое туда, т.е. нужно чтобы BAT файл проверил нет ли на флешке скрытой папки с названием флешки (например Вася) и переносил бы из неё файлы назад в корень флешки. Можно ли это осуществить, и, если можно, то как? »

не с той стороны заход ;-)
C этими гадостями нужно не бороться, а один раз выстрелить из винтовки, шобы всё.
- Делаем на флешке одну папку куда будем складывать файлы и другие папки.
- Обзываем её как-нибудь, 0files или 0Фоточки например(нуль вначале это шобы она всегда была вверху, хотя это не важно ибо...)
- дальше вызываем свойства этой папки и убираем у нее "наследование прав доступа" + выставляем группе "Все" права "Разрешить" на запись в неё. Т.е. "для этой папки и её подпапок" ставим группе "Все" - разрешить.
- Потом вызываем свойства всего диска-флешки и Запрещаем(прям выставляем галочки "запретить") "Запись, Дозапись, Создание, Изменение" в корень всем. т.е. удаляем всех юзеров кроме "Все" и этим всем ставим запрет.(мну еще оставлял запись SYSTEM и ей тоже запрещал всё)
----
Итого: писать в корень флешки не может никто и нигде.
( Развешо "вирусняк" будет об этом знать и афтар предусмотрел это и будут сниматься и переписываться Права доступа, но для этого вирусняк должен залезть в "Админскую учётку" на компе куда втыкнул флешку. А против этого нефиг бороться.)
Короче, во всех остальных случаях на вашу флешку ничего не попадёт. Нужно поупражняться в выставлении "Прав", но пару раз попробовав - поймёте что это железный способ не принести домой какую-нить гадость.
Права NTFS как метод безопасности есть еще со времен WinXP, но их никто так и не юзает. И это прискорбно.
зы. Я флешку так настраивал, что ничего не писалось в корень, но там лежали и файлы autorun.inf (+иконка) для того чтоб свою флешку видеть сразу в чужом компе... + несколько батников с запуском прог с этой флешки. Всё это выполнялось и срабатывало, но никто нигде ничего дописать в эти файлы не мог.(тот же autorun.inf любимый этими вирусами.)
И все онтевирусы ругались, но удалить смог, помойму, один "кашпироффский". Остальные просто паниковали, но уважали выставленные "Права доступа" ;-)

Valek271183 28-08-2016 14:11 2663733

megaloman, я понял почему не получилось перенести папки в корень флешки, это произошло потому что я уже создал там папки с такими же именами, можно ли немного подправить файл с учётом этого?

megaloman 29-08-2016 14:20 2663907

Цитата:

Цитата Valek271183
я понял почему не получилось перенести папки в корень флешки, это произошло потому что я уже создал там папки с такими же именами »

А зачем Вы это сделали? Понимаю так, что задача усложнилась: в корне флэшки могут содержаться те же по имени файлы, которые имеются в "левой" папке, откуда мы всё переносим в корень. И тут, как мне кажется, решение о том, что оставлять в корне, должны принимать Вы.
При условии, что батник на флэшке, вот вариант, который при необходимости перезаписать имеющийся файл, выдаст запрос.
Код:

@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%" Not Exist &GoTo :Eof

pushd "%Vol%\"
Attrib -S -H /S /D
popd

SetLocal EnableExtensions EnableDelayedExpansion

Echo Move /-Y "%Vol%\%Metka%\*.*" "%Vol%\"
Move /-Y "%Vol%\%Metka%\*.*" "%Vol%\" 2>nul

FOR /F "usebackq delims=" %%i IN (`Dir "%Vol%\%Metka%\*.*" /b /S /A:D 2^>nul`) DO (
        Set "TPath=%%i"
        Set "TPath=!TPath:\%Metka%=!"
        Md "!TPath!" 2>nul
        Echo Move /-Y "%%i\*.*" "!TPath!\" 
        Move /-Y "%%i\*.*" "!TPath!\" 2>nul 
)

For /F "Tokens=*" %%i In ('Dir "%Vol%\%Metka%\*.*" /B /S /A:D 2^>nul^|Sort /R') Do RD "%%i" 2>nul

rd "%Vol%\%Metka%" 2>nul 
If Exist "%Vol%\%Metka%" Echo ----- &Echo Папка "%Vol%\%Metka%" не пустая & Dir "%Vol%\%Metka%\*.*" /S /B /A:-D &Pause

После работы батника скрытых файлов на флэшке не будет. Из "левой" папки всё перенесётся в корень, кроме файлов, которые уже содержатся в корне флэшки и которые Вы не разрешили перезаписать. Если все файлы из "левой" папки будут перенесены, она будет удалена, в противном случае она останется и на экран будет выдан список неперенесённых файлов.


Время: 16:30.

Время: 16:30.
© OSzone.net 2001-