Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] md5 всех файлов в папке с подпапками

Ответить
Настройки темы
CMD/BAT - [решено] md5 всех файлов в папке с подпапками

Пользователь


Сообщения: 81
Благодарности: 4

Профиль | Отправить PM | Цитировать


В общем есть флешка с кучей bios для разных материнских плат(знаю не лучший вариант), нужно два батника первый это который создаст md5 суммы всех файлов, а если уже есть то пропустит, в каталоге bios и второй это проверка этих сумм, результат не пройденных запишется в файл. Не когда не пробовал такое проделывать, вот и думаю может кто здесь такое уже делал?

Отправлено: 20:53, 15-06-2017

 

Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Не самым лучшим вариантом в данном случае выступает скорее md5: достаточно много написано на тему коллизий оного, что даже сам его автор (вроде бы Ривест, если не ошибаюсь) рекомендовал пользоваться более продвинутыми алгоритмами. Но если оставить вопросы безопасности в стороне, получим другие грабли, а именно отсутствие штатных средств вичисления хэшей в Windows < 6.0; там придется либо использовать сторонние утилиты вроде sigcheck или openssl, либо взять C(#|\+\+)? компилятор и нарисовать чекер хэшей самостоятельно (ничего сложного в том нет). В случае в Vista и выше можно использовать certutil, позволяющий прочекать md[4|5], sha[1|256|384|512]. Так что для начала советую определиться с:
1) кругом ОС, на которых подобная задача должна решаться
2) действительно ли желаете использовать md5
В общем, думайте.

Отправлено: 09:17, 16-06-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 81
Благодарности: 4

Профиль | Отправить PM | Цитировать


greg zakharov, использовать буду преимущественно на win 7 на 10, md5 не обязательна, главная задача проверка целостности файлов bios, чтобы не прошить случайно битый, т.к. на флешке очень большой шанс, что файлы повредятся. Думаю использовать fciv.exe у нее вроде как есть функция для создания хеш сумм множества файлов и записи сумм в файл для последующей сверки.

Отправлено: 16:06, 17-06-2017 | #3


Пользователь


Сообщения: 81
Благодарности: 4

Профиль | Отправить PM | Цитировать


Пока накидал вот такой черновик, вроде все работает.
Запуск fciv
Код: Выделить весь код
@Echo off
 
:m0
CLS
Echo.
Echo Выберите команду:
Echo.
	Echo 1 - Создать хеш файлов
	Echo 2 - Проверить хеш файлов
	Echo 0 - Выход
echo.
 
Set /p choice="Ваш выбор: "
	if not defined choice goto m0
	if "%choice%"=="1" goto m1
	if "%choice%"=="2" goto m2
	if "%choice%"=="0" goto end
Echo.
goto m0

:m1
CLS
Echo Удаление старого хеш файла
del /F /S /Q /A hashes.xml
Echo Создание хеша... Подождите...
fciv -add ..\ -r -exc exceptions.txt -xml hashes.xml > log.txt
Echo Открытие лог файла
log.txt
Exit

:m2
CLS
Echo Проверка хеша файлов... Ждите...
fciv -v -xml hashes.xml > log.txt
Echo Готово. Открытие лог файла.
log.txt
Exit




Echo.
Echo.
Echo.
goto m0

:end
Exit
Единственное, что если не удалять старый файл хешей, то программа не сверяет с ним, а добавляет в него данные, из за чего в этом файле создается куча дубликатов, решил так, чтобы добавить новый хеш, то лучше удалить и создать новый файл.
Результат сверки хеша лог
//
// File Checksum Integrity Verifier version 2.05.
//
Could not create the registry key.
Starting checksums verification : 06/17/2017 at 17h17'16



List of modified files:

-----------------------

..\fciv\hashes.xml

Hash is : 178173a8b825058e2edd6d5d6137f280

It should be : 67bf8a87d456112e07d3ec642c2d3c28




End Verification : 06/17/2017 at 17h21'06

Отправлено: 17:23, 17-06-2017 | #4


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Voron-orel, если Win >= 7, то лучше все же остановиться на certutil: во-первых, вещь штатная, во-вторых, fciv - шлак, какой еще нужно поискать. В первом случае пример решения может выглядеть так:
Код: Выделить весь код
@echo off
  setlocal
    call:sha256sum source.bin sum
    call:verify source.bin %sum%
  endlocal
exit /b

:sha256sum
  for /f "delims=" %%i in (
    'certutil -hashfile "%~1" SHA256^
     ^| findstr /virc:"certutil"'
  ) do set "raw=%%i"
  set "%2=%raw: =%"
exit /b

:verify
  for /f "tokens=1" %%i in (
    'findstr /irc:"\*%~1$" sig.txt'
  ) do (
    if /i "%%i" equ "%2" (
      echo:SUCCESS: %1 has not been corrupt.
    )
  )
exit /b
где sig.txt представляет из себя:
Код: Выделить весь код
d4d8cc319e85c8d523aa1ec6fa7f069673b8301e09bbc792b03dada89ce25f03 *source.bin
e817cc319e85c8f523aa1ec6fa7f06967238301e09bbc792b03dada89ce25f03 *source1.bin
...
При доработке напильником можно получить вполне неплохой чекер, а вообще лучше использовать PowerShell, ибо он штатный начиная с Win7, да и чекать\сверять хэши в нем проще.
Что касается сторонних утилит. Есть порты UNIX'овых утилит под винду для сверки хэшей, но в данном случае, наверное, лучше взять gpg: подписать бинарники, а после чекать подписи.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:34, 17-06-2017 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] md5 всех файлов в папке с подпапками

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Объединение всех файлов в папке AlexVong Скриптовые языки администрирования Windows 5 24-06-2015 23:34
текстовый файл с именами всех файлов в папке socap AutoIt 19 19-02-2012 16:42
CMD/BAT - Закрытие всех открытых файлов в одной расшаренной папке sea707 Скриптовые языки администрирования Windows 0 10-02-2012 02:20
[решено] Импорт всех reg-файлов в папке? s127d Автоматическая установка Windows 2000/XP/2003 2 24-05-2008 05:11
php как вывести список всех файлов в папке E-mail Вебмастеру 6 12-02-2005 17:33




 
Переход