Python ile Dosya İşlemleri
Bir Python programının dosya okuması, yazması ve bu bilgiyi güvenlik amaçlı nasıl kullanabileceği.
Gerçek dünyadaki birçok güvenlik görevi, bir şekilde DOSYALARLA çalışmayı gerektirir — bir log dosyasını incelemek, bir sonuç listesini kaydetmek, bir kelime listesini (wordlist) okumak gibi. Bu makalede Python'da temel dosya işlemlerini öğreniyoruz.
Bir Dosyayı Okuma
Python'da bir dosyayı okumanın en temel yolu open() fonksiyonudur:
dosya = open("hedefler.txt", "r") # "r" = read (okuma modu)
içerik = dosya.read()
print(içerik)
dosya.close() # dosyayı kapatmayı unutma!
Ancak dosyayı close() ile kapatmayı unutmak, yaygın bir hatadır ve kaynak sızıntısına (resource leak) yol açabilir. Bu yüzden Python'da daha güvenli ve önerilen yöntem with ifadesidir:
with open("hedefler.txt", "r") as dosya:
içerik = dosya.read()
print(içerik)
# dosya, bu blok bittiğinde OTOMATİK olarak kapanır
with kullanmak, dosyanın işin bitince otomatik kapanmasını garanti eder — bunu her zaman tercih etmelisin.
Dosyayı Satır Satır Okuma
Büyük bir dosyayı (örneğin binlerce IP adresi içeren bir liste) tek seferde tüm içeriğini belleğe yüklemek yerine, SATIR SATIR işlemek genelde daha pratiktir:
with open("hedefler.txt", "r") as dosya:
for satir in dosya:
satir = satir.strip() # satır sonundaki görünmez boşluk/yeni satır karakterini temizler
print(f"Hedef bulundu: {satir}")
strip() fonksiyonu önemlidir çünkü bir dosyadaki her satırın sonunda genelde görünmeyen bir "yeni satır" karakteri bulunur — bunu temizlemezsen, karşılaştırma yaparken (örneğin bir IP'nin listede olup olmadığını kontrol ederken) beklenmedik hatalarla karşılaşabilirsin.
Bir Dosyaya Yazma
Bir tarama veya analiz sonucunu kaydetmek istediğinde, dosyaya YAZMA moduna ihtiyacın olur:
with open("sonuclar.txt", "w") as dosya: # "w" = write (yazma modu)
dosya.write("Port 443: açık\n")
dosya.write("Port 22: açık\n")
Dikkat: "w" modu, eğer dosya zaten varsa, İÇERİĞİNİ TAMAMEN SİLİP baştan yazar. Eğer mevcut bir dosyanın SONUNA yeni satırlar EKLEMEK istiyorsan (silmeden), "a" (append - ekleme) modunu kullanmalısın:
with open("sonuclar.txt", "a") as dosya:
dosya.write("Port 3389: kapalı\n") # mevcut içeriğin SONUNA eklenir
Pratik Bir Örnek: Basit Bir Log Analizörü
Bir önceki makalelerde öğrendiklerimizi (döngüler, koşullar, dosya okuma) birleştirerek, basit ama gerçek bir işe yarayan bir örnek yazalım — bir log dosyasında "başarısız giriş" kaydı arayan bir script:
basarisiz_giris_sayisi = 0
with open("giris_loglari.txt", "r") as dosya:
for satir in dosya:
if "BAŞARISIZ" in satir:
basarisiz_giris_sayisi += 1
print(f"Şüpheli kayıt: {satir.strip()}")
print(f"\nToplam başarısız giriş denemesi: {basarisiz_giris_sayisi}")
if basarisiz_giris_sayisi > 10:
print("UYARI: Çok sayıda başarısız giriş denemesi tespit edildi!")
Bu küçük script, Adli Bilişim kütüphanemizdeki "Log Analizi" makalesinde bahsettiğimiz profesyonel araçların (Plaso gibi) yaptığı işin, çok küçük ve basitleştirilmiş bir versiyonunu gösteriyor — büyük, karmaşık araçlar da temelde bu tür basit mantıkların (dosyayı oku, belirli bir örüntüyü ara, say, uyar) üzerine inşa edilir.
Bu makale, Python'da dosya işlemlerine giriş niteliğinde, başlangıç seviyeli bir özetidir; SiberCrew ekibi tarafından hazırlanmış özgün içeriktir.