我有一個問題涉及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