我试着用Scapy编写TCP,但是我的代码没有work.Please,帮助我解决问题。
from scapy.all import *
def poison(packet):
packet[TCP].flags='RST'
sendp(packet)
sniff(filter='tcp',prn=poison)我想flags出了点问题。有个错误:
回溯(最近一次调用): 文件"Univer.py",第6行,在sniff(filter='tcp',prn=poison)中 文件"/usr/lib/pymodules/python2.6/scapy/sendrecv.py",第559行,单位为sniff r= prn(p) 文件"Univer.py",第3行,在毒包TCP.Parks=‘RST’ 文件"/usr/lib/pymodules/python2.6/scapy/packet.py",第186行,在setattr self.setfieldval(attr,val)中 文件"/usr/lib/pymodules/python2.6/scapy/packet.py",第175行,在setfieldval val self.fieldsattr = any2i(self,val)中 文件"/usr/lib/pymodules/python2.6/scapy/fields.py",第785行,在any2i y |= 1 << self.names.index(i)中 ValueError:找不到子字符串
发布于 2016-06-05 10:50:44
在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 = ({})https://stackoverflow.com/questions/37639137
复制相似问题