2012-06-17 71 views
0

我使用Ruby packetfu庫來構造和發送原始數據包。 我可以得到它的工作,但有一些我認爲我做錯了。 (順便說一句,紅寶石+ packetfu真正得到整個原始數據包操作簡便..)使用ruby packetfu發送原始TCP數據包 - 需要目標MAC地址?

這裏是我的代碼: (該MAC地址被屏蔽的位)

  packet.eth_saddr = "XX:XX:88:XX:03:BD" 
      packet.eth_daddr = "XX:6D:57:AD:XX:A3" 

      packet.ip_header.ip_saddr="192.168.0.16" 
      packet.ip_header.ip_daddr="192.168.0.13" 

,當我打電話packet.to_w ('eth0'),它被交付。 ,因爲你可以看到它是導致我撓頭的MAC地址。 每次需要發送數據包時必須找出目的MAC地址真的很不方便... 我測試過源MAC地址不是那麼重要,它仍然可以在沒有它的情況下工作。 但目標MAC地址是必須的(如果沒有它,數據包不會熄滅)。

並且我不記得必須在C中使用原始套接字... 並且如果在將數據包放在網絡上之前需要執行ARP,會更糟糕,而且更糟糕的是,請執行DNS查詢或者,如果我發送數據包到互聯網的東西....

我想我在這裏的東西,像一個班輪我需要調用..但閱讀後,我無法弄清楚通過packetfu的代碼和文檔....

任何人?

回答

1

PacketFu不維護狀態表或類似的東西。因此,確定目標地址將需要一些類似arp的功能,您需要在適當的位置實施自己的功能。 PacketFu::Utils.arp("192.168.0.13")通常就足夠了。

如果你回答你見過一個包,另一種方法是簡單地複製出該數據包的MAC地址。

最後,如果你肯定知道你的目標是超越了本地網絡,以及最喜歡的網絡,你有一個網關,你可以用你的網關的MAC地址。 PacketFu::Utils.whoami?可以幫助您獲取該信息。

+0

這正是我所需要的。 :)謝謝託德。 – user1461479

相關問題