Lambda与Scapy一起使用

2024-09-28 20:54:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,在Scapy中使用icmpping扫描时遇到了lambda函数的用法。我读了一些教程,但是我正在努力使我的头脑围绕着这个概念来正确地使用我的代码。在

我试图弄清楚lambda参数是如何引用Scapy给出的输出的;主要是“s”和“r”的功能,以及它们如何使用“%直接从IP字段中提取数据”IP.src%' ? 在

def icmp_ping(target_ip):
"Function for a classic ICMP Ping sweep."
    ans,unans=sr(IP(dst=target_ip)/ICMP(), timeout=3)
    ans.summary(lambda (s,r): r.sprintf("%IP.src% is alive") )
    ans.summary(lambda (s,r): r.sprintf("%IP.ttl% is the TTL value") )
    print(ans)

其输出:

^{pr2}$

希望这个问题有意义!在


Tags: lambda函数ip用法targetis教程summary
1条回答
网友
1楼 · 发布于 2024-09-28 20:54:04

ans具有包含发送和接收数据包的元组。Lambda拿走了这个元组。您正在访问接收包的IP标头并写入源地址。在python3中,你必须写下

 ans.summary(lambda p: p[1].sprintf("%IP.src% is alive"))

在python中,3个参数以元组的形式出现,您必须通过它的索引到达接收包

相关问题 更多 >