1

嗨,我需要帮助来尝试访问 scapy 返回的元组中的元素。代码如下。

ans,unans=sr(IP(dst="www.google.com",ttl=5)/ICMP(),verbose=0)
ans.summary(lambda (s,r): r.sprintf("%IP.src%") )

如果我输入 Scapy 并手动输入这两个命令,它将返回一个 IP 地址。但是我从 Python 脚本中运行它,并且需要将该 IP 地址存储为变量。这可能是一个愚蠢的问题,我只是在学习 Scapy,但是如何使用 scapy 将此 IP 地址存储为变量?我想要实现类似下面的目标。

#!/usr/bin/python
from scapy.all import *
ans,unans=sr(IP(dst="www.google.com",ttl=5)/ICMP(),verbose=0)
SourceIP = ans.summary(lambda (s,r): r.sprintf("%IP.src%") )
4

1 回答 1

3

如果您需要图层的值,请使用 getlayer 方法。所以只需将内容更改为:

ans = sr1(IP(dst="www.google.com",ttl=5)/ICMP(),verbose=0)
address = ans.getlayer(IP).src

还有另一种方法来判断是否存在返回 true 或 false 的层。这是一个例子。

if ans.haslayer(IP):
    print "Packet has the layer IP"
于 2012-04-29T18:34:02.460 回答