Scapy - 如何隐藏sendp \ sr1的报告并获得最终结果?

时间:2016-07-21 13:23:56

标签: 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数据包。 当我执行此命令时,它给我下一个答案:

  

警告:找不到IPv6目标的路由::(没有默认路由?)   开始排放:   *完成发送1包。

     

收到1个数据包,得到1个答案,剩下0个数据包

     

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+"."

我想要隐藏所有报告并打印回复答案。我该怎么办?

1 个答案:

答案 0 :(得分:2)

这里的部分输出来自一个警告,由于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")