DedSec Project

Αναζήτηση αρχείων χωρίς εκτέλεση — DedSec Project

Συνταγή: αναζήτηση αρχείων Python χωρίς αλλαγές Πότε χρησιμοποιείται και τι πρέπει να επιτύχει Σε τοπικό χώρο εργασίας εντόπισε κανονικά αρχεία .py κάτω από συγκεκριμένο κατάλογο χωρίς να…

Συνταγή: αναζήτηση αρχείων Python χωρίς αλλαγές

Πότε χρησιμοποιείται και τι πρέπει να επιτύχει

Σε τοπικό χώρο εργασίας εντόπισε κανονικά αρχεία .py κάτω από συγκεκριμένο κατάλογο χωρίς να τα αλλάξεις. Επέστρεψε σχετικές διαδρομές σε σταθερή ταξινομημένη σειρά, ώστε δύο σαρώσεις να συγκρίνονται εύκολα. Αν ο κατάλογος δεν υπάρχει, δήλωσε αποτυχία. Παράλειψε συμβολικούς συνδέσμους που αντιστοιχούν σε αρχεία, για να περιορίσεις ακούσια προσπέλαση σε άλλη θέση.

Πλήρες εκτελέσιμο παράδειγμα

Αποθήκευσε ως 07_Search_files.py και εκτέλεσε με Python 3. Χρησιμοποιούνται προσωρινά δεδομένα και δεν απαιτείται δίκτυο.

import tempfile
from pathlib import Path
def list_python(root):
    base = Path(root)
    if not base.is_dir():
        raise ValueError("root must be a directory")
    found = []
    for path in base.rglob("*.py"):
        if path.is_file() and not path.is_symlink():
            found.append(path.relative_to(base).as_posix())
    return sorted(found)
with tempfile.TemporaryDirectory() as folder:
    root = Path(folder)
    (root/"inner").mkdir()
    (root/"main.py").write_text("pass\n")
    (root/"inner"/"α.py").write_text("pass\n")
    (root/"ignore.txt").write_text("other\n")
    assert list_python(root) == ["inner/α.py", "main.py"]
    assert list_python(root/"inner") == ["α.py"]
    try: list_python(root/"missing")
    except ValueError: pass
    else: raise AssertionError("missing root accepted")
print("PASS read-only recursive Python search")

Εγγυήσεις και περιορισμοί

Η Path.rglob διασχίζει αναδρομικά καταλόγους, αλλά το σύστημα αρχείων μπορεί να αλλάζει την ίδια στιγμή. Οι έλεγχοι is_file και is_symlink εξετάζουν την τρέχουσα κατάσταση και δεν αποτελούν απόλυτη προστασία έναντι ταυτόχρονων κακόβουλων αλλαγών. Το μοτίβο *.py δεν περιλαμβάνει κατ' ανάγκη *.PY· επέλεξε σαφή πολιτική πεζών και κεφαλαίων. Η συνάρτηση δεν διαβάζει τον κώδικα των αρχείων και δεν εκτελεί ό,τι βρίσκει.

Εργαστήριο προσαρμογής

Πρόσθεσε αρχείο με κενά στο όνομα, ελληνικό υποκατάλογο και συμβολικό σύνδεσμο μέσα σε προσωρινό περιβάλλον. Παρατήρησε τι εντοπίζεται και τι παραλείπεται. Σύγκρινε τη σειρά δύο ίδιων σαρώσεων. Βάλε ανώτατο πλήθος αρχείων και καθαρή προειδοποίηση για τεράστιους καταλόγους. Για μη έμπιστα δέντρα χρειάζεται ισχυρότερος χειρισμός διαδρομών.

Αντιμετώπιση προβλημάτων

Αν λείπει ένα αρχείο, εξέτασε την κατάληξη, τον συμβολικό σύνδεσμο, τη σωστή αρχική διαδρομή και τα δικαιώματα. Όταν αποτυγχάνει η ανάγνωση υποκαταλόγου, μην παρουσιάζεις το ελλιπές αποτέλεσμα ως πλήρη κατάλογο. Σε Android η πρόσβαση σε κοινή αποθήκευση έχει διαφορετικούς περιορισμούς από τον προσωπικό φάκελο Termux.