Virüs Tarama Uygulaması

Venom.20

Katılımcı Üye
11 Şub 2023
588
376
𝐋𝐢𝐧𝐮𝐱
Selamlar Dostlar Ben Venom.20
Bu Konumuzda Bir Virüs Tarama Uygulaması Yapacağız. Aracımızı Python ile Kodlayacağız.
Dipnot: Her Seferinde Söylediğim gibi Elbette ki geliştirilmeye açıktır, üzerine eklemeler yapılabilir.

Proje;

Kodların Bir Kısmı:

d9oadv8.JPG


Kodların Tamamı:


Python:
import hashlib
import os
import requests
import tkinter as tk
from tkinter import filedialog, messagebox

# Virustotal API anahtarınızı buraya girin
API_KEY = "8f3e875458abc5f07fdbfa35f6a18894049bb2f84dc431233c4cda7c70f4490c"


def browse_file():
    file_path = filedialog.askopenfilename()
    if file_path:
        scan_file(file_path)


def scan_file(file_path):
    status_label.config(text="Dosya taranıyor...")
    window.update()

    # Dosya özeti hesapla
    with open(file_path, "rb") as f:
        file_data = f.read()
        file_hash = hashlib.sha256(file_data).hexdigest()

    # API isteği gönder
    params = {"apikey": API_KEY, "resource": file_hash}
    response = requests.get("https://www.virustotal.com/vtapi/v2/file/report", params=params)

    # Yanıtı işle
    if response.status_code == 200:
        result = response.json()
        if result.get("response_code") == 1:
            positives = result.get("positives")
            if positives:
                message = f"\"{file_path}\" dosyasında {positives} adet virüs tespit edildi. Dosyayı silmek istiyor musunuz?"
                if messagebox.askyesno("Virüs Tespiti", message):
                    os.remove(file_path)
                    messagebox.showinfo("Dosya Silindi", f"\"{file_path}\" dosyası silindi.")
            else:
                messagebox.showinfo("Virüs Tespiti", f"\"{file_path}\" dosyası temiz.")
        else:
            messagebox.showerror("Hata", "Dosya Virustotal veritabanında bulunamadı.")
    else:
        messagebox.showerror("Hata", "Virustotal API'sinden yanıt alınamadı.")

    status_label.config(text="")
    window.update()


# Uygulama penceresi oluştur
window = tk.Tk()
window.title("Virüs Tarama Uygulaması")
window.geometry("400x200")
window.configure(bg="black")


# Dosya seçme düğmesi oluştur
select_button = tk.Button(window, text="Dosya Seç", command=browse_file, width=20, height=2)
select_button.pack(pady=20)

# Dosya silme düğmesi oluştur
delete_button = tk.Button(window, text="Dosya Sil", command=lambda: delete_file(status_label.cget("text")), width=20, height=2)
delete_button.pack(pady=10)



# Durum etiketi oluştur
status_label = tk.Label(window, text="", fg="white", bg="black")
status_label.pack()

# Dosyayı silme fonksiyonu
def delete_file(file_path):
    if file_path:
        if messagebox.askyesno("Dosya Sil", f"\"{file_path}\" dosyasını silmek istiyor musunuz?"):
            os.remove(file_path)
            messagebox.showinfo("Dosya Silindi", f"\"{file_path}\" dosyası silindi.")


# Uygulama penceresini aç
window.mainloop()



Programdan Görüntü:

pglesln.JPG


21db19x.JPG


Görüldüğü gibi Dosyayı Silme Şansımızda Vardır. Umarım Beğenirsiniz..


İyi Forumlar Dilerim...

307ycd6.gif
 

Enistein

Kıdemli Üye
16 Eyl 2012
2,234
1,273
Amsterdam
Selamlar Dostlar Ben Venom.20
Bu Konumuzda Bir Virüs Tarama Uygulaması Yapacağız. Aracımızı Python ile Kodlayacağız.
Dipnot: Her Seferinde Söylediğim gibi Elbette ki geliştirilmeye açıktır, üzerine eklemeler yapılabilir.

Proje;

Kodların Bir Kısmı:

d9oadv8.JPG


Kodların Tamamı:


Python:
import hashlib
import os
import requests
import tkinter as tk
from tkinter import filedialog, messagebox

# Virustotal API anahtarınızı buraya girin
API_KEY = "8f3e875458abc5f07fdbfa35f6a18894049bb2f84dc431233c4cda7c70f4490c"


def browse_file():
    file_path = filedialog.askopenfilename()
    if file_path:
        scan_file(file_path)


def scan_file(file_path):
    status_label.config(text="Dosya taranıyor...")
    window.update()

    # Dosya özeti hesapla
    with open(file_path, "rb") as f:
        file_data = f.read()
        file_hash = hashlib.sha256(file_data).hexdigest()

    # API isteği gönder
    params = {"apikey": API_KEY, "resource": file_hash}
    response = requests.get("https://www.virustotal.com/vtapi/v2/file/report", params=params)

    # Yanıtı işle
    if response.status_code == 200:
        result = response.json()
        if result.get("response_code") == 1:
            positives = result.get("positives")
            if positives:
                message = f"\"{file_path}\" dosyasında {positives} adet virüs tespit edildi. Dosyayı silmek istiyor musunuz?"
                if messagebox.askyesno("Virüs Tespiti", message):
                    os.remove(file_path)
                    messagebox.showinfo("Dosya Silindi", f"\"{file_path}\" dosyası silindi.")
            else:
                messagebox.showinfo("Virüs Tespiti", f"\"{file_path}\" dosyası temiz.")
        else:
            messagebox.showerror("Hata", "Dosya Virustotal veritabanında bulunamadı.")
    else:
        messagebox.showerror("Hata", "Virustotal API'sinden yanıt alınamadı.")

    status_label.config(text="")
    window.update()


# Uygulama penceresi oluştur
window = tk.Tk()
window.title("Virüs Tarama Uygulaması")
window.geometry("400x200")
window.configure(bg="black")


# Dosya seçme düğmesi oluştur
select_button = tk.Button(window, text="Dosya Seç", command=browse_file, width=20, height=2)
select_button.pack(pady=20)

# Dosya silme düğmesi oluştur
delete_button = tk.Button(window, text="Dosya Sil", command=lambda: delete_file(status_label.cget("text")), width=20, height=2)
delete_button.pack(pady=10)



# Durum etiketi oluştur
status_label = tk.Label(window, text="", fg="white", bg="black")
status_label.pack()

# Dosyayı silme fonksiyonu
def delete_file(file_path):
    if file_path:
        if messagebox.askyesno("Dosya Sil", f"\"{file_path}\" dosyasını silmek istiyor musunuz?"):
            os.remove(file_path)
            messagebox.showinfo("Dosya Silindi", f"\"{file_path}\" dosyası silindi.")


# Uygulama penceresini aç
window.mainloop()



Programdan Görüntü:

pglesln.JPG


21db19x.JPG


Görüldüğü gibi Dosyayı Silme Şansımızda Vardır. Umarım Beğenirsiniz..

İyi Forumlar Dilerim...


307ycd6.gif
Elinize sağlık, benimde bir kaç önerim olacak. Doğrudan VirusTotal'e bütün dosyaları upload etmek, Türkiye şartlarında interneti biraz fazla zorlayacak bir yöntem. Ayrıca yazılımın yavaş bir tarama yapmasına sebep olacaktır.

VirusTotal yerine kendi Virus Tarama Motorunuzu geliştirebilirsiniz. Bu yöntem zor ve karmaşık gelirse Python'da hali hazırda mevcut olan Virus Tarama Motorlarını sisteme entegre edebilirsiniz. Örneğin pyClamd fazlasıyla işinizi görecektir. Ayrıca Tkinter, PyQT5 gibi kütüphanelerde güzel arayüzler yapmak, ayrı bir meşakat isteyen işler. Bunlar yerine Flask tabanlı, web arayüzü olan güzel bir yapı kurgulayabilirsiniz.

Tekrardan elinize sağlık
 

Venom.20

Katılımcı Üye
11 Şub 2023
588
376
𝐋𝐢𝐧𝐮𝐱
Elinize sağlık, benimde bir kaç önerim olacak. Doğrudan VirusTotal'e bütün dosyaları upload etmek, Türkiye şartlarında interneti biraz fazla zorlayacak bir yöntem. Ayrıca yazılımın yavaş bir tarama yapmasına sebep olacaktır.

VirusTotal yerine kendi Virus Tarama Motorunuzu geliştirebilirsiniz. Bu yöntem zor ve karmaşık gelirse Python'da hali hazırda mevcut olan Virus Tarama Motorlarını sisteme entegre edebilirsiniz. Örneğin pyClamd fazlasıyla işinizi görecektir. Ayrıca Tkinter, PyQT5 gibi kütüphanelerde güzel arayüzler yapmak, ayrı bir meşakat isteyen işler. Bunlar yerine Flask tabanlı, web arayüzü olan güzel bir yapı kurgulayabilirsiniz.

Tekrardan elinize sağlık
Fikriniz için teşekkür ederim hocam 🙏

Yine de dosya boyutu sınırı vardır sanırım 🥺

Elinize sağlık.
Evet belirli bir boyut tan sonra program hata verebilmektedir.. Teşekkür ederim hocam

Teşekkür ederim
C# ile olanı gelirse mükemmel olur
C# da çok bilgim yok ama ilerleyen zamanlarda neden olmasın
 

Napcaz

Katılımcı Üye
28 Nis 2019
771
781
Cudi
Burda virustotel e dosya yüklemiyorsun sadece elindeki dosyanın hash ini alıp daha önce o dosyaya dair bir kayıt varsa bir cevap alabilirsin
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.