Merhabalar bugün sizlere hatırlarsanız daha önce YARA Tool 'ü hakkında uzaktan argüman kullanımıyla dosyalarda virüs tarama işlemi yapmıştık şimdi ise ClamAV adlı antivirüsün bize sunmuş olduğu geniş & kapsamlı argüman kullanımı ile bir script kodlayacağız. İlk önce kurulumu yapmamız lazım zira antivirüsü kurmak diğerlerine göre biraz zahmetli...
Windows işletim sistemine göre bahsedeceğim. İlk önce adrese(ClamAVNet) gidelim ve son sürümünü indirip masaüstüne çıkartalım;
İçerisinde yer alan Example Yazısını silip kaydedip çıkıyoruz.
Kodlama kısmına geçelim...
Başlamadan önce gerekli kütüphane;
Imports System.IO5 Adet Label koyalım bunlar;
Label1 Taranacak klasör yolumuz,
Label2 GUI tasarımında öge yeri göstermesi için yaptım. Şahsen içerisine [ PARAMETRE ] yazdım.
Label3 Text içerisinde argüman çalıştırmak için tırnak ' " ' işareti kodunu yazdım.
Label4 ClamAV yolunu burada text içerisinde göstermesini sağladım.
Label5 GUI tasarımında öge yeri göstermesi için yaptım. Şahsen içerisine [ SONUÇ ] yazdım.
2 Adet Textbox koyalım. Bu da komut isteminden gelen çıktıyı Textbox ögesi içerisine yansıtıyor. MultiLine özelliği aktif olsun & ScrollBars özelliği Both olsun. Diğeri ise tarama parametresini gireceğimiz Textbox.
1 Adet Listbox koyalım. Bu da tarama sonunda şüpheli veya temizse Listbox' a ekleyecek.
1 Adet FolderBrowserDialog koyalım. Bu taranacak klasörleri seçmemizi sağlayacak.
3 Adet Buton koyalım. Bunlar;
Buton1 Klasör Seç yani taranacak olan klasörün seçilmesini sağlayacak.
Buton2 ClamAV 'nin yer aldığı klasör içerisinde clamdscan.exe ögesinin seçilmesini sağlayacak.
Buton3 Tara yani istenen parametreyi girerek komut istemini uzaktan çalıştırıp tarama yapmasını sağlayacak.
Klasör Seç Buton Kodu
C#:
FolderBrowserDialog1.ShowDialog()
If DialogResult.OK Then
Label1.Text = FolderBrowserDialog1.SelectedPath
End If
ClamAV dizini içerisinde yer alan hızlı tarama yapan clamdscan.exe ögesini seç butonu kodu
C#:
Using openFileDialog As New OpenFileDialog() 'Burada Dialog nesnesi forma yerleştirilemeden bir nesne türetip kodunu veriyoruz
openFileDialog.Filter = "Dosyayı Seçin (clamdscan.exe)|clamdscan.exe" ' Sadece ClamAV dosyamızın uzantısını seç
If openFileDialog.ShowDialog() = DialogResult.OK Then ' Eğer ClamAV dosyamızı seçmiş isek
Dim exePath As String = openFileDialog.FileName ' ClamAV dosyamız seçildikten sonra dizinini değişkene bağlıyoruz
Label4.Text = exePath ' dizini değişkene verdik
End If
End Using
Tara Butonu Kodu
C#:
' ProcessStartInfo nesnesini oluştur ve ayarla
Dim psi As New ProcessStartInfo()
psi.FileName = "cmd.exe"
psi.Verb = "runas" 'yönetici olarak çalıştır
psi.Arguments = "/c " + Label4.Text + " " + TextBox2.Text + " " + Label3.Text + FolderBrowserDialog1.SelectedPath + Label3.Text ' /c, komutu çalıştırıp cmd'yi kapatır
psi.RedirectStandardOutput = True
psi.UseShellExecute = False
psi.CreateNoWindow = True
' Process'i başlat ve çıktıyı oku
Dim process As New Process()
process.StartInfo = psi
process.Start()
Dim output As String = process.StandardOutput.ReadToEnd()
process.WaitForExit()
TextBox1.Text = output
Call ara()
ara ögesi oluşturduk burada komut isteminden gelen çıktıyı textbox1 içerisine yansıttıktan sonra sonuçlara bakacağız ona göre listbox1'e aktaracağız.
C#:
Sub ara()
Dim a As String
Dim b As String
Dim c As String
Dim d As String
a = "Infected files: 0"
b = InStr(TextBox1.Text, a)
c = "OK"
d = InStr(TextBox1.Text, c)
If b Then
TextBox1.Focus()
ListBox1.Items.Add("Klasör Temiz: " + Label1.Text)
ElseIf d Then
TextBox1.Focus()
ListBox1.Items.Add("Klasör Temiz: " + Label1.Text)
Else
ListBox1.Items.Add("Şüpheli Hareket Tespit Edildi:")
End If
End Sub
ClamAV Tarafından Kullanılan Yaygın Parametreler
Kod:
Recursive (Özyinelemeli) Tarama:
clamdscan --recursive C:\TaranacakDizin
Sadece Enfekte Dosyaları Gösterme:
clamdscan --infected C:\TaranacakDizin
Detaylı Çıktı:
clamdscan --verbose C:\TaranacakDizin
Tarama Sonuçlarını Dosyaya Kaydetme:
clamdscan C:\TaranacakDizin --log=C:\sonuclar.log
Virüs Veritabanı Sürümünü Kontrol Etme:
clamdscan --version
Demo Form Tasarımım
( Görüldüğü üzere nesnelerimi GUI tasarımını şık göstermesi için sakladım. Tabi burası size kalmış... )
~ S0N ~
( Görüldüğü üzere nesnelerimi GUI tasarımını şık göstermesi için sakladım. Tabi burası size kalmış... )
~ S0N ~
Son düzenleme:



