我正在使用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+"."
我想要隐藏所有报告并打印回复答案。我该怎么办?
答案 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")