Python kullanarak dosya bütünlüğü izleme ajanı oluşturmak, sistem güvenliğini artırmak ve değişiklikleri hızlı tespit etmek açısından oldukça faydalı olabilir. Bu tip bir araç, özellikle kritik konfigürasyon dosyalarında veya sistem dosyalarında beklenmedik değişiklikleri tespit etmek amacıyla kullanılır. İşte temel prensipler ve uygulama detayları:
Üzerinde çalışılacak klasör veya dosyaları belirlemek ilk adımdır. Bu noktada, izleme yapılacak dosyaların hash değerlerini hesaplamak ve sürekli karşılaştırmak gerekir. MD5, SHA-1 veya daha güvenli olan SHA-256 algoritmaları tercih edilebilir. Ancak, güvenlik açısından SHA-256 kullanımı önerilir. Bu işlemi düzenli aralıklarla otomatik hale getirmek için zamanlayıcı (cron veya Windows Task Scheduler) kullanılabilir.
İlk kurulumda, sistemdeki tüm ilgili dosyaların hash değerleri hesaplanıp, bir veri tabanına veya JSON gibi yapılandırılmış bir dosyaya kaydedilir. Herhangi bir değişiklik tespit edildiğinde, script bu hashleri yeniden hesaplar ve karşılaştırır. Değişiklik tespit edilirse, sistem yöneticisine e-posta veya başka bir iletişim yöntemiyle uyarı gönderilir.
Örnek temel kod yapısı şu şekilde olabilir:
12345678910111213141516171819202122232425262728293031323334353637383940414243
import hashlib
import json
import os
def hash_file(filepath):
sha256 = hashlib.sha256()
with open(filepath, 'rb') as f:
while chunk := f.read(8192):
sha256.update(chunk)
return sha256.hexdigest()
def load_hashes(file):
if os.path.exists(file):
with open(file, 'r') as f:
return json.load(f)
return {}
def save_hashes(hashes, file):
with open(file, 'w') as f:
json.dump(hashes, f, indent=4)
def monitor_files(file_list, hash_record_file):
hashes = load_hashes(hash_record_file)
changes_detected = False
for filepath in file_list:
current_hash = hash_file(filepath)
if filepath in hashes:
if hashes[filepath] != current_hash:
print(f"Değişiklik tespit edildi: {filepath}")
changes_detected = True
else:
print(f"Yeni dosya izlendi: {filepath}")
hashes[filepath] = current_hash
save_hashes(hashes, hash_record_file)
if changes_detected:
# Burada uyarı veya bildirim kodu eklenebilir
pass
[b]Kullanım örneği[/b]
files_to_monitor = [r'C:\path\to\file1', r'C:\path\to\file2']
record_file = 'hashes.json'
monitor_files(files_to_monitor, record_file)
Güvenlik ve performans açısından, hash hesaplama esnasında büyük dosyalarda bellek kullanımı ve işlem süresi göz önünde bulundurulmalı. Ayrıca, dosya erişim izinleri ve güvenlik protokolleriyle korunmalı. Bu temel yapıyı, sistemin ihtiyaçlarına göre özelleştirilmiş bildirim sistemleri veya detaylı raporlama modülleriyle genişletebilirsiniz.
Sizler bu tarz bir sistemi kurarken hangi yöntemleri veya ek güvenlik önlemlerini kullanıyorsunuz? İyi uygulama örnekleriniz veya karşılaştığınız sorunlar nelerdir?