Поиск определенного хэша в большом количестве файлов (в пакете .rar)

#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>