Фишки для Windows

Командные файлы для работы дисками

При работе с флэшками (USB-накопителями) в Windows, зачастую они становятся жертвами вирусных атак.

Симптом первый:

На флэшке была информация. Вставили ее где-то в зараженный компьютер, попользовались, извлекли. Дома втыкаем ее в компьютер - наш антивирус «радостно» кричит, что на флэшке обнаружены вирусы, предлагает их вылечить. Мы, естественно, соглашаемся. Антивирус сообщает, что успешно всё вылечил. Открываем флэшку, а на ней ничего нет!!! Хотя если посмотреть свойства диска (флэшки), видно, что место чем-то занято. Скорее всего вирус сделал все файлы и папки скрытыми, а вместо них подставил свои, зараженные файлы. Эти файлы антивирус «убил», но файлы и папки так и остались скрытыми. Можно вручную сделать их опять видимыми, но когда их очень много - это занимает много ненужного времени.

Приведу здесь несколько командных файлов, которые «открывают» или «прячут» файлы на флэшке.

Этот скрипт делает все скрытые папки и файлы видимыми, он так и называется:

:!: Работа проверена в Windows XP и выше.

_ПоказатьВсе.cmd
@ECHO OFF
SET COUNTER=0
SET CNTOTAL=0
REM Следующий параметр запрещает изменение заголовка окна DOS.
REM Некоторые антивирусы принимают это за вирусные действия.
SET NOTITLECHANGE=1
cd \
ECHO.
Echo ищем "спрятанное" ...
ECHO.
IF EXIST AUTORUN.INF ATTRIB  -R -H -S AUTORUN.INF
REM dir /b /ah /s && GOTO OKK
FOR /F "usebackq delims=/" %%j IN (`dir/b/ah/s`) do CALL :CALCROUTINE "%%j"
IF EXIST AUTORUN.INF ATTRIB  +R +H +S AUTORUN.INF
IF -%CNTOTAL%- == -0- GOTO NOTFOUND
ECHO Всего найдено %CNTOTAL% скрытых объектов.
GOTO OKK
:NOTFOUND
ECHO.
ECHO ... "спрятанного" не обнаруженно...
ECHO.
GOTO vse 
:OKK
ECHO.
ECHO ----- конец списка спрятанных файлов и папок -----
ECHO.
ECHO будем продолжать обработку? (для отказа закройте окошко мышкой)
ECHO  (или жмите Ctrl+C, затем Y)
pause
ECHO.
IF EXIST vaccine\unvaccine_USBFAT.cmd CALL vaccine\unvaccine_USBFAT.cmd YES >NUL
@ECHO OFF
ECHO ... выполняется обработка файлов, подождите...
FOR /F "usebackq delims=/" %%i IN (`dir/b/ah/s`) do CALL :ATTROUTINE "%%i"
ECHO ... все файлы обработаны (всего %COUNTER%) ...
ECHO.
IF EXIST vaccine\unvaccine_USBFAT.cmd CALL vaccine\vaccine_USBFAT.cmd YES >NUL
@ECHO OFF
 
:vse
@ECHO OFF
IF NOT -%NOTITLECHANGE%- == -1- TITLE Обработка завершена.
 
pause
GOTO :EOF
 
:ATTROUTINE
attrib -R -H -S %1
SET /A COUNTER+=1
IF NOT -%NOTITLECHANGE%- == -1- TITLE Обрабатывается (%COUNTER%): %1
@ECHO стал видим (%COUNTER%):%1
GOTO :EOF
 
:CALCROUTINE
SET /A CNTOTAL+=1
IF NOT -%NOTITLECHANGE%- == -1- TITLE Ищем скрытые объекты (%CNTOTAL%) : %1
@ECHO (%CNTOTAL%):%1
GOTO :EOF
REM Autor Maslyaev A.V. mailto: cheshirskycat@inbox.ru

Скрипт, который «прячет» файлы и папки на флэшке:

_СпрятатьВсе.cmd
@ECHO OFF
REM Следующий параметр запрещает изменение заголовка окна DOS.
REM Некоторые антивирусы принимают это за вирусные действия.
SET NOTITLECHANGE=1
CALL :DISKLETTER %CD%
ECHO ╔═══════════════════════════════════════════════════════╗
ECHO ║ ВНИМАНИЕ!!! БУДУТ СПРЯТАНЫ ВСЕ ФАЙЛЫ НА ДИСКЕ %DISK%ECHO ║                                               ~~      ║
ECHO ╟───────────────────────────────────────────────────────╢
ECHO ║ Для отказа, закройте текущее окно с помощью мышки.    ║
ECHO(или жмите Ctrl+C, затем Y)ECHO ║                     ~~~~~~        ~                   ║
ECHO ║     При нажатии любой другой клавиши на клавиатуре    ║
ECHO ║     будет "спрятано" все на диске %DISK%ECHO ╚═══════════════════════════════════════════════════════╝
pause
SET COUNTER=0
cd \
IF EXIST vaccine\unvaccine_USBFAT.cmd CALL vaccine\unvaccine_USBFAT.cmd YES >NUL
ECHO.
ECHO ... выполняется обработка файлов и папок, подождите...
FOR /F "usebackq delims=/" %%i IN (`dir/b/a-h/s`) do CALL :ATTROUTINE "%%i"
ECHO ... все файлы и папки обработаны (всего:%COUNTER%) ...
ECHO.
IF EXIST vaccine\vaccine_USBFAT.cmd CALL vaccine\vaccine_USBFAT.cmd YES >NUL
attrib -R -H -S _СпрятатьВсе.cmd
attrib -R -H -S _ПоказатьВсе.cmd
attrib -R -H -S _СпрятатьТолькоПапки.cmd
IF NOT -%NOTITLECHANGE%- == -1- TITLE Обработка завершена.
pause
GOTO :EOF
 
:ATTROUTINE
attrib +R +H +S %1
SET /A COUNTER+=1
@ECHO спрятан (%COUNTER%):%1
IF NOT -%NOTITLECHANGE%- == -1- TITLE Обрабатывается: %1
GOTO :EOF

REM -- далее подпрограммка определения буквы диска
:DISKLETTER
SET DISK=%~D1
GOTO :EOF

REM Autor Maslyaev A.V. mailto: cheshirskycat@inbox.ru

И, наконец, скрипт, скрывающий только папки

_СпрятатьТолькоПапки.cmd
@ECHO OFF
REM Следующий параметр запрещает изменение заголовка окна DOS.
REM Некоторые антивирусы принимают это за вирусные действия.
SET NOTITLECHANGE=1
CALL :DISKLETTER %CD%
ECHO ╔═══════════════════════════════════════════════════════╗
ECHO ║ ВНИМАНИЕ!!! БУДУТ СПРЯТАНЫ ВСЕ ПАПКИ НА ДИСКЕ %DISK%ECHO ║                                               ~~      ║
ECHO ╟───────────────────────────────────────────────────────╢
ECHO ║ Для отказа, закройте текущее окно с помощью мышки.    ║
ECHO(или жмите Ctrl+C, затем Y)ECHO ║                     ~~~~~~        ~                   ║
ECHO ║     При нажатии любой другой клавиши на клавиатуре    ║
ECHO ║     будет "спрятано" все на диске %DISK%ECHO ╚═══════════════════════════════════════════════════════╝
pause
SET COUNTER=0
cd \
IF EXIST vaccine\unvaccine_USBFAT.cmd CALL vaccine\unvaccine_USBFAT.cmd YES >NUL
ECHO.
ECHO ... выполняется обработка папок, подождите...
FOR /F "usebackq delims=/" %%i IN (`dir/b/ad/s`) do CALL :ATTROUTINE "%%i"
ECHO ... все папки обработаны (всего:%COUNTER%)...
ECHO.
IF EXIST vaccine\vaccine_USBFAT.cmd CALL vaccine\vaccine_USBFAT.cmd YES >NUL
attrib -R -H -S _СпрятатьВсе.cmd
attrib -R -H -S _ПоказатьВсе.cmd
attrib -R -H -S _СпрятатьТолькоПапки.cmd
IF NOT -%NOTITLECHANGE%- == -1- TITLE Обработка завершена.
pause
GOTO :EOF

REM -- подпрограмма присваивания аттрибутов "скрытый","системный","только чтение" для файла/папки
:ATTROUTINE
attrib +R +H +S %1
SET /A COUNTER+=1
@ECHO спрятан (%COUNTER%):%1
IF NOT -%NOTITLECHANGE%- == -1- TITLE Обрабатывается: %1
GOTO :EOF

REM -- далее подпрограммка определения буквы диска
:DISKLETTER
SET DISK=%~D1
GOTO :EOF

REM Autor Maslyaev A.V. mailto: cheshirskycat@inbox.ru

Во всех скриптах есть обработка специальной папки vaccine В этой папке лежит пара скриптов, которые создают на флэшке специальную директорию с именем AUTORUN.INF которую нельзя удалить стандартными средствами windows. Это предотвращает создание файла autorun.inf который используют многие вирусы распространяющиеся через флэшки.

:!: ВАЖНО!!! скрипты в папке vaccine работают только на флэшке с файловой системой FAT

Вот текст этих скриптов:

vaccine_USBFAT.cmd
@ECHO OFF
REM ECHO SET DISK=%%~D1>dsklett.cmd
SET CURRP=%CD%
SET DISK=
ECHO "Вакцинация" флэшки
ECHO. 
CALL :DISKLETTER %CURRP%
REM CALL dsklett.cmd %CURRP%
IF --%1-- == --YES-- GOTO NOPROMT
ECHO Файл должен быть запущен с защищаемой флэшки
ECHO Вы уверены что ваша флэшка подключена как диск %DISK%
ECHO (если набрать yes и нажать Enter, на диск %DISK% будет произведена запись)
ECHO.
SET /P OTVET="Ваш ответ: "
IF NOT --%OTVET%-- == --yes-- GOTO OTKAZ
:NOPROMT
DIR /AD /B %DISK%\AUTORUN.INF 1>NUL 2>NUL && GOTO ALREADY
 
IF EXIST %DISK%\AUTORUN.INF GOTO DELFILE
GOTO CREAVAC
 
:ALREADY
ECHO каталог %DISK%\AUTORUN.INF уже существует!!!
GOTO MKDOTT
 
:DELFILE
ATTRIB -R -H -S "%DISK%\AUTORUN.INF"
DEL "%DISK%\AUTORUN.INF"
 
:CREAVAC
MKDIR "\\?\%DISK%\AUTORUN.INF"
:MKDOTT
MKDIR "\\?\%DISK%\AUTORUN.INF\.."
ATTRIB +R +H +S "%DISK%\AUTORUN.INF"
 
GOTO ALLISDONE
 
:OTKAZ
ECHO Отказались от модификации диска %DISK%
 
:ALLISDONE
IF EXIST dsklett.cmd del dsklett.cmd
IF NOT --%1-- == --YES-- ECHO ALL IS DONE
GOTO :EOF

REM -- далее подпрограммка определения буквы диска
:DISKLETTER
SET DISK=%~D1
GOTO :EOF

REM Autor Maslyaev A.V. mailto: cheshirskycat@inbox.ru
unvaccine_USBFAT.cmd
@ECHO OFF
SET CURRP=%CD%
SET DISK=
ECHO "ДЕВакцинация" флэшки
ECHO. 
CALL :DISKLETTER %CURRP%
IF --%1-- == --YES-- GOTO NOPROMT
ECHO Файл должен быть запущен с защищаемой флэшки
ECHO Вы уверены что ваша флэшка подключена как диск %DISK%
ECHO (если набрать yes и нажать Enter, на диск %DISK% будет произведена запись)
ECHO.
SET /P OTVET="Ваш ответ: "
IF NOT --%OTVET%-- == --yes-- GOTO OTKAZ
:NOPROMT
DIR /AD /B %DISK%\AUTORUN.INF 1>NUL 2>NUL && GOTO CREAVAC
ECHO Каталог %DISK%\AUTORUN.INF не обнаружен
GOTO ALLISDONE
 
IF EXIST %DISK%\AUTORUN.INF GOTO DELFILE
GOTO CREAVAC
 
:DELFILE
ATTRIB -R -H -S "%DISK%\AUTORUN.INF"
DEL "%DISK%\AUTORUN.INF"
 
:CREAVAC
ATTRIB -R -H -S "%DISK%\AUTORUN.INF"
RMDIR "\\?\%DISK%\AUTORUN.INF\.."
RMDIR "\\?\%DISK%\AUTORUN.INF"
 
GOTO ALLISDONE
 
:OTKAZ
ECHO Отказались от модификации диска %DISK%
 
:ALLISDONE
IF EXIST dsklett.cmd del dsklett.cmd
IF NOT --%1-- == --YES-- ECHO ALL IS DONE
GOTO :EOF

REM -- далее подпрограммка определения буквы диска
:DISKLETTER
SET DISK=%~D1
GOTO :EOF

REM Autor Maslyaev A.V. mailto: cheshirskycat@inbox.ru

Использование Яндекс.Диска как сетевой папки.

Яндекс.Диск можно подсоединить без использования его клиента. см. подсказку здесь: https://yandex.ru/support/disk/webdav/webdav-win.xml#vista

Поигрался тут в командной строке Windows. Пример командных файлов для подключения

yas.cmd
yadisktoS.cmd <passphrase.txt
yadisktoS.cmd
@SET /P PASSTR=Password: 
@net use S: \\webdav.yandex.ru@SSL\DavWWWRoot /USER:youmailname@yandex.ru %PASSTR%

Здесь скрипт yas.cmd служит для запуска основного файла yadisktoS.cmd с передачей ему потока (парольной фразы) из файла passphrase.txt

В скрипте yadisktoS.cmd пароль заносится в переменную среды PASSTR, которая затем подставляется в строку подключения сетевого диска.
Почему-то строка такого вида:

net use S: \\webdav.yandex.ru@SSL\DavWWWRoot /USER:youmanilname@yandex.ru <passphrase.txt

в командном файле не срабатывает…

хотя непосредственно при ручном наборе идет…
Если командный файл лежит в файловой системе NTFS пожно файл passphrase.txt прицепить прямо к скрипту отдельным потоком.
Например в редакторе открыть на редактирование файл yadisktoS.cmd:passphrase.txt
Тогда строка запуска в файле yas.cmd будет выглядеть так:

yadisktoS.cmd <yadisktoS.cmd:passphrase.txt
  • /var/www/wiki.avmas.ru/data/pages/windows/cmdfiles.txt
  • Последнее изменение: 2020/02/27 14:08
  • alex