2013-03-03 14 views
9

Ich versuche, eine anonyme FTP-Scanner Bulid, aber ich habe einen Fehler beim Aufruf der Funktion X, ich definierte X, um nur 1 Argument zu erhalten, die die IP ist Adresse, der gleiche Code funktioniert, wenn ich die Schleife nicht benutze und die IPs eins nach dem anderen sende.Python Fehler: X() nimmt genau 1 Argument (8 gegeben)

Der Fehler ist: X() nimmt genau 1 Argument (8 gegeben)

from ftplib import FTP 
import ipcalc 
from threading import Thread 


def X (ip): 
    try: 
     ftp = FTP(ip) 
     x = ftp.login() 
     if 'ogged' in str(x): 
      print '[+] Bingo ! we got a Anonymous FTP server IP: ' +ip 
    except: 
     return 


def main(): 
    global ip 
    for ip in ipcalc.Network('10.0.2.0/24'): 
     ip = str(ip) 
     t = Thread (target = X, args = ip) 
     t.start() 
main() 

Antwort

16

Wenn Thread Objekte konstruieren, args eine Folge von Argumenten sein sollte, aber Sie werden in einem String übergeben. Dies bewirkt, dass Python über die Zeichenfolge iteriert und jedes Zeichen als Argument behandelt.

können Sie ein Tupel verwenden ein Element enthält:

t = Thread (target = X, args = (ip,)) 

oder eine Liste:

t = Thread (target = X, args = [ip]) 
+0

Bingo dank einer Million – Hussam

+1

@Hussam - drücken Sie die Häkchen. – Malvolio

Verwandte Themen