Wat gaan we maken?
Deze oefening maakt GEEN echte antivirus. Je bouwt een eenvoudige bestandscontrole die in één oefenmap naar bepaalde patronen zoekt. Gebruik alleen zelfgemaakte testbestanden. Het programma verwijdert of wijzigt niets.
Maak een educatieve scanner die testbestanden controleert op zelfgekozen herkenningsregels.

Deze oefening maakt GEEN echte antivirus. Je bouwt een eenvoudige bestandscontrole die in één oefenmap naar bepaalde patronen zoekt. Gebruik alleen zelfgemaakte testbestanden. Het programma verwijdert of wijzigt niets.
Maak in je PyCharm-project een map testbestanden. Voeg daar veilig zelfgemaakte tekstbestanden aan toe, bijvoorbeeld welkom.txt met "Hallo" en test.txt met de zin "DEMO_TEST_SIGNATURE". Dit is een onschadelijke oefentekst, geen echte malware.
De bibliotheek pathlib kan bestanden in een map vinden. De scanner blijft beperkt tot de map testbestanden.
from pathlib import Path
map = Path(__file__).parent / "testbestanden"
for bestand in map.iterdir():
if bestand.is_file():
print(bestand.name)We controleren een vaste demonstratietekst. Voor onleesbare of te grote bestanden tonen we een bericht. We openen alleen bestanden direct in onze eigen oefenmap.
from pathlib import Path
map = Path(__file__).parent / "testbestanden"
handtekening = b"DEMO_TEST_SIGNATURE"
if not map.is_dir():
print("Maak eerst de map testbestanden.")
else:
for bestand in sorted(map.iterdir()):
if not bestand.is_file() or bestand.is_symlink():
continue
if bestand.stat().st_size > 1024 * 1024:
print(f"{bestand.name}: overgeslagen (te groot)")
continue
try:
inhoud = bestand.read_bytes()
if handtekening in inhoud:
print(f"{bestand.name}: oefenpatroon gevonden")
else:
print(f"{bestand.name}: geen oefenpatroon gevonden")
except OSError:
print(f"{bestand.name}: niet leesbaar")Tel het aantal gecontroleerde bestanden en het aantal meldingen. Toon op het einde een overzicht. Schrijf in commentaar waarom echte antivirus veel meer nodig heeft dan één tekstpatroon.

Bewaar het project in PyCharm. Je kunt later nog verbeteringen toevoegen.
Andere tutorials