有人知道这两种方法有什么区别吗? 他们都发送一个数据包,并从发送数据包的 IP 获取答案。
另外,我不太明白这些参数的含义: promisc、iface、nofilter
提前致谢。
在 Python Scapy 库的上下文中,
sr()
和 sr1()
都是用于发送和接收网络数据包的函数,通常用于网络侦察、数据包制作和分析。它们之间的主要区别在于它们如何处理响应和返回值。
sr()
(发送和接收):
sr()
用于发送数据包和接收响应。示例:
answered, unanswered = sr(IP(dst="192.168.1.1")/ICMP())
在此示例中,它将 ICMP 数据包发送到 IP 地址 192.168.1.1 并捕获已应答和未应答的数据包。
sr1()
(发送和接收一个):
sr1()
用于发送数据包并接收单个响应。示例:
response = sr1(IP(dst="192.168.1.1")/ICMP())
在此示例中,它向 IP 地址 192.168.1.1 发送 ICMP 数据包并捕获第一个响应数据包。
总而言之,主要区别在于
sr()
返回发送和接收的数据包列表,而sr1()
返回第一个接收到的数据包。它们之间的选择取决于您的具体用例以及您是否对多个响应或仅一个响应感兴趣。