2013-03-03 10 views
9

Próbuję zbudować skaner anonimowego FTP, ale mam błąd dotyczący wywoływania funkcji X, zdefiniowałem X, aby otrzymać 1 argument, który jest ip adres, ten sam kod działa, jeśli nie używam pętli i wysyłam adresy IP jeden po drugim.Błąd w języku Python: X() przyjmuje dokładnie 1 argument (8 podanych)

Błąd jest: X() wykonuje dokładnie 1 argument (8 podano)

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() 

Odpowiedz

16

Przy konstruowaniu Thread obiektów args powinna być kolejność argumentów, ale są przechodzącą w ciąg. Powoduje to, że Python iteruje po ciągu znaków i traktuje każdy znak jako argument.

Można użyć krotki zawierający jeden element:

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

lub listę:

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

Bingo, dzięki milion – Hussam

+1

@Hussam - naciśnij check-mark. – Malvolio

Powiązane problemy