我正在使用 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/