python - Scapy - 我怎样才能隐藏 sendp\sr1 的报告并只得到最终的报告?

标签 python scapy packets

我正在使用 scapy,并开始学习如何构建数据包(如果有人在互联网上有一个很好的示例可以从中学习 - 那就太好了!谢谢。)。

我在 scapy 中有下一个命令:

srp(Ether(dst='ff:ff:ff:ff:ff:ff')/ARP(pdst=ip)/Padding(load='\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00'),timeout=2)

在第 2 层发送 arp 数据包。 当我执行此命令时,它给出了下一个答案:

WARNING: No route found for IPv6 destination :: (no default route?) Begin emission: *Finished to send 1 packets.

Received 1 packets, got 1 answers, remaining 0 packets

00:50:56:e9:b8:b1

对于下一个代码:

def Arp_Req(ip):
        packet = srp(Ether(dst='ff:ff:ff:ff:ff:ff')/ARP(pdst=ip)/Padding(load='\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00'),timeout=2)
        try:
                packet[0][0]
                return packet[0][0][1].hwsrc
        except IndexError:
                return "(E2)CANT FIND AN ANSWER FOR "+ip+"."

我想隐藏所有报告并仅打印返回答案。我该怎么做?

最佳答案

这里的部分输出来自于 IPv6 的警告,您可以通过禁用 IPv6 支持(来自 scapy)来避免警告,但您也可以通过函数 srp() 本身生成输出,并且对于您需要设置verbose参数:

from scapy.config import conf  
conf.ipv6_enabled = False
from scapy.all import *

def Arp_Req(ip):
    packet = srp(Ether(dst='ff:ff:ff:ff:ff:ff')/ARP(pdst=ip)/Padding(load='\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00'),timeout=2, verbose=0)
    try:
        packet[0][0]
        return packet[0][0][1].hwsrc
    except IndexError:
        return "(E2)CANT FIND AN ANSWER FOR "+ip+"."

# example
print Arp_Req("192.168.0.254")

关于python - Scapy - 我怎样才能隐藏 sendp\sr1 的报告并只得到最终的报告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38505507/

相关文章:

python - Django Rest Framework 在不丢失 filter_backends 功能的情况下覆盖 View 集 list() 方法

python - 自定义 OpenVPN 客户端不接收 TLS ServerHello

python - 模拟 __call__ 属性不会模拟该函数

python - 搜索目录名具有特定模式的文件

python - 使用 Python 从 Scapy 获取变量

c# - 发送 IP 数据包

java - Java 在网络方面有什么更好的地方? UDP 还是 TCP?

c++ - 新的没有分配足够的内存?

python - 在输出python中寻找字符串?

python - Scapy 无法过滤某些数据包