使用 python 在 scapy 中创建协议和 src、dst IP 列表
create list of protocols and src,dst IP in scapy using python
我想创建和访问从 pcap 文件解析的 3 维值列表,这样每行包含 3 个值:
第 1 行 = [协议][源 IP][目标 IP].
我正在使用 scapy,这是我目前使用的代码。它是 obv 不工作,spittin gout 只有单行结果:
pkts=rdpcap("conf.pcap")
def parsePcap():
IPList = []
count=0
for pkt in pkts:
#print pkt.summary()
if pkt.haslayer(IP):
proto = pkt.getlayer(IP).proto
x = pkt.getlayer(IP).src
y = pkt.getlayer(IP).dst
IPList[count].append((proto,x,y))
count+=1
return IPList[count]
parsePcap()
可能是因为您在循环内 returning IPList
,所以一旦它附加了一行,它就 returns 了,没有机会检查对于更多行,您可能希望 return 仅在函数末尾 for
循环之外的列表。
例子-
def parsePcap():
IPList = []
count=0
for pkt in pkts:
#print pkt.summary()
if pkt.haslayer(IP):
proto = pkt.getlayer(IP).proto
x = pkt.getlayer(IP).src
y = pkt.getlayer(IP).dst
IPList[count].append((proto,x,y))
count+=1
return IPList[count]
此外,您的缩进似乎不正确,但我希望这只是一个复制粘贴问题。
我想创建和访问从 pcap 文件解析的 3 维值列表,这样每行包含 3 个值: 第 1 行 = [协议][源 IP][目标 IP].
我正在使用 scapy,这是我目前使用的代码。它是 obv 不工作,spittin gout 只有单行结果:
pkts=rdpcap("conf.pcap")
def parsePcap():
IPList = []
count=0
for pkt in pkts:
#print pkt.summary()
if pkt.haslayer(IP):
proto = pkt.getlayer(IP).proto
x = pkt.getlayer(IP).src
y = pkt.getlayer(IP).dst
IPList[count].append((proto,x,y))
count+=1
return IPList[count]
parsePcap()
可能是因为您在循环内 returning IPList
,所以一旦它附加了一行,它就 returns 了,没有机会检查对于更多行,您可能希望 return 仅在函数末尾 for
循环之外的列表。
例子-
def parsePcap():
IPList = []
count=0
for pkt in pkts:
#print pkt.summary()
if pkt.haslayer(IP):
proto = pkt.getlayer(IP).proto
x = pkt.getlayer(IP).src
y = pkt.getlayer(IP).dst
IPList[count].append((proto,x,y))
count+=1
return IPList[count]
此外,您的缩进似乎不正确,但我希望这只是一个复制粘贴问题。