Безопасность: Инспектор файлов на Delphi

В этой статье мы немного углубимся в дебри компьютерной безопасности. И на повестке дня повис вопрос, как вы уже догадались — «Инспектор файлов». Что это и для чего он нужен я расскажу по мере чтения вами этой статьи, но замечу сразу, что испокон веков компьютерной эры, с тех самых времен когда операционная система содрогнулась от вирусной эпидемии, на стражу ваших и системных файлов встал гроза контроля и целостности — «Инспектор». Прошу прощение за эпическое отступление ;).

Так вот, помимо установленных антивирусов и прочих специальных программ, которые выполняют кучу всяких полезностей, порой даже абсолютно не нужных в данный момент и только лишь отнимают наше драгоценное время. А мы то знаем, что время — деньги!

Что же меня побудило написать статью на эту тема? Во-первых я считаю, и вам даю на заметку, что пользоваться готовым софтом это утеха юзеров и прочих бездельников. Каждый уважающий себя программист должен иметь в своем арсенале собственноручно написанный инструментарий отвечающий его задачам и требованием, и не одной команды лишней. Да и кроме того вы сами знаете что делает ваша программа, и в любой момент можете вспороть ее и что то подправить, добавить или удалить, в отличие от чужих прграммулек. Во-вторых, зная, а кто не знал запомните, что ни один антивирус не может вас защитить на 100% от свеженькой вредоносной информационной субстанции, то бишь вирус и прочая нечисть, так как антивирусная индустрия всегда позади на шаг впереди идущих создателей этой дряни. Поэтому, вашу безопасность можете обеспечить только вы сами и одним из средств обеспечения в этом деле является «Инспектор файлов», который непоколебимо несет свою службу на полях информационного пространства и «своих» знает в «лицо».

После не долгих эпических отступлений, вы уж простите меня, без лишних слов приступаем к реализации нашего стражника «Инспектора». В первую очередь нам необходимо поставить задачу. Ей будет:

  • реализовать поиск файлов,
  • проверку файлов на наличие их в банке данных, по соответствующим признакам (путь к файлу, дата создания, изменения и контрольная сумма),
  • добавление в новых кандидатов на прописку в банк данных,
  • реализация интерфейса связывающего предыдущие описанные задачи и действия пользователя.

В целом, получается вот такое тех. задание. А теперь от слов к делу. Для начала определимся с дизайном формы. Здесь я полагаюсь на ваш вкус, но потребуется нам две кнопки и поле вывода информации (Memo или ListBox). Одну из кнопок определим под выбор папки — «Обзор», и для нее напишем следующий код:

А теперь опишем используемую функцию GetPath():

Итак, процедуру выбора каталога для проверки реализовано. Теперь приступим к реализации проверки файлов. Но сначала для второй кнопки опишем следующий код:

А теперь последовательно опишем используемые функции и первой будет процедура FindF(). Эта процедура осуществляет рекурсивный поиск файлов относительно выбранного корневого каталога, и добавляет их в список для проверки. Смотрим листинг:

Далее рассмотрим процедуру Scan_File(). Ее задача проверить каждый найденный файл на наличие в своей базе данных, сверить контрольную сумму, дату создания и дату последнего изменения файла. В случае если будут обнаружены какие-либо не соответствия, немедля бьет тревогу. Смотрим:

Далее опишем функции для работы с базой. И первая функция FindIB(). Она осуществляет проверку наличия интересующего файла в базе и сверку переданных параметров искомого файла с теми что соответствуют ему.

Теперь рассмотрим функцию WriteIB(). Которая заносит в базу путь к файлу, его контрольную сумму, дату создания и дату последнего изменения.

Далее надо объявить необходимые глобальные переменные:

Теперь необходимо для события onCreate написать следующее:

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: