Anonymous FTP prüfen

Im dritten Teil zum Thema Überprüfung von Ports mit Python geht es um Anonymous FTP. Bei Anonymous FTP werden ebenfalls Dateien von und zu einem FTP-Server übertragen. Allerdings wird in diesem Fall zur Authentifizierung kein Benutzername und kein Passwort benötigt.

Um die Verfügbarkeit eines solchen Dienstes zu prüfen, kann man ftplib verwenden. Die Methode login() fordert die Übergabe eines Benutzernamens und eines Kennworts. Dies ist in diesem Fall aber nicht erforderlich, weswegen im folgenden Beispiel einfach die Platzhalter „anonymous“ und „me@your.com“ verwendet werden.

import ftplib

class Scanner():
    def __init__(self, host: str):
        self.host = host

    def anonymous_login(self):
        try:
            ftp = ftplib.FTP(self.host)
            ftp.login('anonymous', 'me@your.com')
            print(f"\n[*] {self.host} Anonymous Login Succeeded.")
            ftp.quit()
        except Exception as e:
            print("\n[-] {0}".format(str(e)))

if __name__ == '__main__':
    host = '192.168.170.2'
    scanner = Scanner(host)
    scanner.anonymous_login()

Da auf meinem Server Anonymous FTP deaktiviert ist, führt dies zu folgender Ausgabe:

python3 anonymous_ftp.py
[-] 530 Permission denied.

Die IP-Adresse ist hier hart-codiert. Damit ist man mit diesem Skript nicht sonderlich flexibel. Unter Verwendung von input() ließe sich dies ändern:

host = input('Enter the ip address: ')

In meinem zweiten Forensik-Port-Beispiel könnt Ihr ebenfalls sehen, wie input() zur Abfrage von IP-Adresse und Port zum Einsatz kommt.

Weiterführende Links