我有一个问题涉及Perl中的一个非常基本的东西,但我无法找到一个有效的解决方案。如何修改数据包中的目标MAC地址?
这里先介绍一下上下文。我使用Net::Pcap等,当我在我的函数处理数据包(由pcap_loop
使用)时,我得到一个包含我的整个数据包(以太网头+ IP头+ tcp/udp头+有效载荷)的$packet
标量。
我想要做的是改变前6个字节这个$packet
(以太网目的),以获得$packet
,我可以使用pcap_sendpacket
发送,使用用户定义的目的MAC地址(例如,作为传递命令行参数等),如00:11:22:33:44:55
。因此,我可以拆分用户定义的地址(例如使用split
)来获取目标MAC地址的每6个部分,并使用hex
函数将其转换为十六进制,但现在我想修改数据包的第一个字节以替换它们与这些hex
ed字节。我应该如何继续?
我想过使用一些连接(。),但我认为这个解决方案很脏。一旦我得到了我的“u_char packet[]
”,我只需要做一个memcpy
我的用户提供的以太网(我以前在C中做过,但我希望这在Perl中完成),我只需要做memcpy
我的用户提供的以太网地址到我的packet[]
的6个第一个字节,它工作。
您还可以使用pack将东西转换为字节。 – Eric 2009-07-24 08:37:49