#windows #linux #scripting #antivirus #hard-drive
#Windows #linux #сценарии #антивирус #жесткий диск
Вопрос:
Существуют ли какие-либо программы, которые будут сканировать жесткий диск в поисках определенного MD5-хэша? Я специально ищу хэши, которые могут быть расположены в файлах .zip или .rar.
Я пробовал писать скрипты на Python для этого, но у него возникли проблемы с некоторыми неанглоязычными именами файлов.
Итак … что-то подобное уже существует? Надеюсь, бесплатно и с открытым исходным кодом?
Ответ №1:
Я не уверен, что понимаю: вы хотите найти файл с определенной заданной суммой MD5 или вы хотите найти строки MD5 (то есть 32 шестнадцатеричных цифры) на вашем диске?
Если вы хотите найти файл с заданной суммой MD5 (давайте представим, что это 01234a4d035addca808644a0163abcdef
здесь), я бы попытался запустить (но это займет время) что-нибудь для вычисления MD5 каждого файла с помощью, например
find -type f -exec md5sum '{}' ; > /tmp/allmd5sum.txt
а затем найдите ( fgrep 01234a4d035addca808644a0163abcdef /tmp/allmd5sum.txt
например, с помощью) конкретную заданную сумму MD5 внутри.
Конечно, будьте осторожны при запуске find (поэтому прочитайте его документацию), в частности, чтобы избежать файловых деревьев, таких как /proc
или даже /tmp
Комментарии:
1. Это кажется действительно близким! За исключением того, что мне нужны рекурсивные суммы md5 всех файлов во ВСЕХ моих файлах .rar и .zip (потому что там может быть больше папок или сжатых файлов). Есть идеи, как мы можем изменить команду для этого?
2. Вы можете разархивировать или разархивировать файл во временном каталоге и повторно запустить скрипт внутри него.
3. Однако мне нужно просмотреть сотни, если не тысячи файлов .rar и .zip…
4. И что? Сначала поэкспериментируйте с вашими сценариями на подмножестве из них. И то, что вы просите, — это интенсивная обработка, поэтому это займет некоторое время. Ваш скрипт может удалить временный каталог, в который он извлек ZIP- или rar-файл после завершения.
5. Хорошо, так что это в основном то, что я придумал из того, что вы мне дали. Я использую sed, чтобы я мог создавать временные каталоги для извлечения, сохраняя при этом базовую файловую структуру, чтобы я знал, где физически находится каждый файл. <code><pre>для foo in
find . -name "*.rar"
; выполните экспорт temp=/tmp/echo $foo | sed 's:.:^:g' | sed 's:/:=:g'
amp;amp; mkdir $temp amp;amp; unrar x $foo $temp amp;amp; find $temp -введите f -exec md5sum ‘{}’ ; >> /tmp/allmd5sum.txt amp;amp; rm -rf $temp; готово;</pre></code>