这是ARP请求PNG图像的有线捕获,我在ARP数据包内包含发送方MAC。接收站可以从以太网帧中得出MAC。这似乎是多余的。在ARP请求中单独包含发件人MAC地址也有什么特殊用途吗?
我有一个特定的问题,需要经验来回答:
为什么arp_ignore/arp_announce默认情况下不启用linux安装(例如debian)是否有特定原因?
从错误的网络接口接收arp回答的兴趣是什么?
谢谢你的帮助.
问候,
我已经尝试arp -a了很多,它列出了一些设备,但不是全部.ifconfig显示我的IP地址和mac地址以及一些其他有用的信息,但它不显示本地网络上的所有设备.是否有显示所有IP地址的命令?
我正在尝试使用 POX 控制器向交换机添加流条目,我的代码是:
fm = of.ofp_flow_mod()
fm.match.in_port = 1
fm.priority = 33001
fm.match.dl_type = 0x800
fm.match.nw_src = IPAddr("10.0.0.1")
fm.match.nw_dst = IPAddr("10.0.0.5")
fm.actions.append(of.ofp_action_output( port = 2 ) )
event.connection.send( fm )
Run Code Online (Sandbox Code Playgroud)
但是,当我从 10.0.0.1 ping 到 10.0.0.5 时,没有回复。可能是什么问题?(我还为 ICMP 回复添加了对称流)
谢谢
我使用以下行发送 arp 数据包广播:
send(ARP(op=ARP.who_has, psrc="192.168.5.51", pdst=the_ip))
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何查看响应(在本例中:远程 ip 的 mac)?我知道我能做到:
pkt = sniff(filter=arp , count=10)
print (pkt.summary())
Run Code Online (Sandbox Code Playgroud)
但我不想计算数据包,因为我不知道什么时候会打印它(可能在接下来的 10 个或 100 个数据包中)
有没有办法在嗅探时打印摘要,从而看到我正在寻找的 mac 地址?
编辑:我有一个想法,我可以嗅探10个数据包吗,如果数据包中有ip,则打印mac地址,否则再嗅探10个数据包...这项技术似乎不是一个好的技术...
我正在尝试在 python 上发出 ARP 请求。我的代码:
import socket
from struct import pack
from uuid import getnode as get_mac
def main():
dest_ip = [10, 7, 31, 99]
local_mac = [int(("%x" % get_mac())[i:i+2], 16) for i in range(0, 12, 2)]
local_ip = [int(x) for x in socket.gethostbyname(socket.gethostname()).split('.')]
sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.SOCK_RAW)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
sock.bind(('', 0))
ARP_FRAME = [
pack('!H', 0x0001), # HRD
pack('!H', 0x0800), # PRO
pack('!B', 0x06), # HLN
pack('!B', 0x04), # PLN
pack('!H', 0x0001), # OP …Run Code Online (Sandbox Code Playgroud) 我正在尝试学习ARP/TCP/HTTP的基础知识(以散射方式).举个例子,当我去google.com并进行搜索时会发生什么?
到目前为止我的理解:
对于我的机器与其他人(在这种情况下是网关)进行通信,它可能需要进行ARP广播(如果它还没有ARP缓存中的MAC地址)
然后需要解析google.com的IP地址.它通过联系DNS服务器来完成此操作.(我不完全确定它是如何知道DNS服务器的位置的?或者是知道的网关?)
这涉及通过TCP协议进行通信,因为HTTP建立在它上面(TCP握手:SYN,SYN/ACK,ACK,然后是内容请求,然后是RST,RST/ACK,ACK)
要实际加载网页,浏览器会获取index.html,解析它,然后根据需要发送更多请求?(图像等)
最后,为了进行实际的谷歌搜索,我不明白浏览器是如何沟通的"我在搜索框中键入内容然后按Enter键".
这看起来是对的吗?/我有什么不妥或遗漏任何关键的东西吗?
当我的用户提供本地和远程 IP:Port 对时,我需要提供一个组装 UDP 数据包的函数。我有一个以太网卡 API,它为我发送一个以太网帧,我是否必须填充一个包含 MAC 地址、IP 和 UDP的完整以太网帧。
问题:给定互联网上的一个IPV4地址,如何找出该IP对应的MAC地址,以便填入以太网帧头。我如何使用 C 从路由器的 ARP 表中查找它。我是否应该向我的路由器发送一个 ARP 数据包(我也不知道该怎么做)。
当我调用UDP sendto()时,以太网帧中的MAC地址是谁填写的?这是如何实现的?
Scapy 文档提供了以下 ARP 缓存中毒示例:
send(Ether(dst=clientMAC)/ARP(op="who-has", psrc=gateway, pdst=client))
Run Code Online (Sandbox Code Playgroud)
问题 1:
我的理解是,这是来自客户端的 ARP 请求的广播。攻击者是否应该执行 ARP 毒药响应:
send(Ether(dst=clientMAC)/ARP(op="is-at", psrc=gateway, pdst=client))
Run Code Online (Sandbox Code Playgroud)
问题 2:在关于 Scapy 的 stackoverflow 上的帖子中,OP 发布了:
这会向受害者发送一个 ARP 回复数据包,其中本地机器伪装成路由器:
send(ARP(op=ARP.is_at, psrc=router_ip, hwdst=victim_mac, pdst=victim_ip))
Run Code Online (Sandbox Code Playgroud)
这会向路由器发送一个 ARP 回复数据包,本地机器伪装成受害者:
send(ARP(op=ARP.is_at, psrc=victim_ip, hwdst=router_mac, pdst=router_ip))
Run Code Online (Sandbox Code Playgroud)
在这两个数据包中,hwsrc 字段默认填充本地机器的 MAC 地址。
但是 Scapy 文档没有提到需要 hwdst。我想知道为什么。
问题 3:在 Scapy 文档中:
send(Ether(dst=clientMAC)/ARP(op="who-has", psrc=gateway, pdst=client))
Run Code Online (Sandbox Code Playgroud)
但是在问题 2 的 OP 帖子中,没有提供 Ether(dst-clientMAC)。这是否意味着它不是必需的?
谢谢。