Python veya C++ karşılaştırma

Merhabalar,
Bir dosya olsun bir virüs dosyası 1. harfi “h” - 2. harfi “a” - 2. satır 3. harfi “s” olsun.
bunu bir program ile karşılaştırıp virüs ise (eşleşiyo ise) kaldıran bir program yapmak
istiyorum fakat gerekli bilgi yok (dosya konumu olmalı) bana bunun için c++ veya python
kodu verebilir misiniz python daha iyi olur ama c++ varsa onu da verebilirsiniz.

Merhaba.

Bunun için hash algoritmaları kullanılır.

Anti-Virüs.py:

from hashlib import sha256


DB = \
[
    "18885f27b5af9012df19e496460f9294d5ab76128824c6f993787004f6d9a7db" # Python
]

def scan(file):
    with open(file, "rb") as f:
        if sha256(f.read()).hexdigest() in DB:
            return True

        else:
            return False

print(scan("Program.txt"))
print(scan("Virüs.txt"))

Program.txt:

python

Virüs.txt:

Python
1 Beğeni

Şimdi bu virüs txt deki kelimeleri mi tarıyor.
Değilse kullanımını açıklar mısınız.

Bu, belirtilen dosyanın içeriğini sha256 algoritmasına göre hesaplayıp, DB(yani zararlı yazılımların sha256 kodları) içerisinde bulunup bulunmadığına bakıyor.
Varsa True, yoksa False döndürüyor. Tabi bu epeyce basit bir örnek, normalde bu veritabanları 5 MB civarında olur.

DB “18885f27b5af9012df19e496460f9294d5ab76128824c6f993787004f6d9a7db” mi oluyor.

yani ben bunu

from os import system
from colorama import Fore
from hashlib import sha256
import colorama
import time
import sys
colorama.init()

def clear():
  system("clear")

print("welcome the py anti")
print("")
print(Fore.YELLOW)
print("""

|--------  |     |
|       |   |   |
|       |    | |
|--------     |
|             |    anti
|             |
|             |

""")
print(Fore.WHITE)
print("")
print("1 = scan a file")
print("")
print("2 = exit")
print("")
c1 = input(">>>")
if c1 == "2":
    sys.exit()
if c1 == "1":
    clear()
    print("file location: ")
    loc = input("")
    DB = \
    [
        "18885f27b5af9012df19e496460f9294d5ab76128824c6f993787004f6d9a7db" #   Python          
    ]

    def scan(file):
        with open(file, "rb") as f:
            if sha256(f.read()).hexdigest() in DB:
                return True

            else:
                return False

    print(scan(loc))

gibi bir komut satırında kullanıcam.

Şu şekilde biraz daha düzgün görünür:

from os import system
from colorama import Fore
from hashlib import sha256
import colorama
import time
import sys
import json
colorama.init()

def clear():
    system("clear")

def scan(file):
    with open(file, "rb") as f:
        if sha256(f.read()).hexdigest() in DB:
            return True

        else:
            return False

# DB = [
#     "18885f27b5af9012df19e496460f9294d5ab76128824c6f993787004f6d9a7db"
# ]

# Bu veritabanını bir dosyadan almak için #

with open("database.json") as f:
    DB = json.loads(f.read())

###########################################

print("welcome the py anti")
print("")
print(Fore.YELLOW)
print("""

|--------  |     |
|       |   |   |
|       |    | |
|--------     |
|             |    anti
|             |
|             |

""")
print(Fore.WHITE)
print("")
print("1 = scan a file")
print("")
print("2 = exit")
print("")
c1 = input(">>>")
if c1 == "2":
    sys.exit()
if c1 == "1":
    clear()
    loc = input("file location: ")
    if scan(loc):
        print(f"Virüs tespit edildi! konumu: '{loc}'")
    else:
        print("Dosya temiz.")

database.json:

["18885f27b5af9012df19e496460f9294d5ab76128824c6f993787004f6d9a7db"]

Haa bu arada, bu sadece bir algoritma örneği. Eğer gerçek bir Anti- Virüs programı yazmak istiyorsanız C/C++ kullanmanızı şiddetle tavsiye ediyorum. Python her ne kadar kolay bir dil olsada, bu kolaylığın maliyetinin performans kaybı olduğunu unutmayın.

1 Beğeni

“Her başarının bir cezası vardır.”

2 Beğeni

Katılmıyorum. Bu daha çok, aracılar arttıkça fiyatın yükselmesi gibi bir şey. Veya bir kılıcın uzunluğu arttıkça kontrolünün zorlaşması gibi.

Ben katılıyorum. Bir şeyi başarmak için fedakarlık etmen gerekir. Bunların en önemlisi ve her zaman kaybettiğimiz zamandır. Bir şeyi en performanslı şekilde yapmak için en başta projeyi, sonra da optimizasyonları yapmamız gerekir. Bunları yaparken zamanımızı kaybederiz. Ayrıca projede kullanacağımız bilgileri öğrenmek de ayrı bir zaman alıyor. Bu da grup çalışmasının önemini anlatıyor.

Matematikte de böyle değil mi zaten? Önce birleşip sonra yükselmek > Yükseldikten sonra birleşmek.

1 Beğeni

python veya c++ karşılaştıracağız diye girdik felsefe yapıyoruz :smile:

1 Beğeni

İlerideki hayatında ortaklık kurmak gerektiğinde, veya istediğinde dediklerim işine yarayacak. Bunları hayat bilgisi dersinde öğretmiyorlar.

Bu daha mantıklı. Az önceki cümle, tam olarak bunu ifade etmiyordu bence.
Neyse konu dağıldı gitti yine :slightly_smiling_face:. Son olarak konu sahibine “her iş için uygun programlama dilini kullan” deyip, saygılarımızı iletelim.

2 Beğeni