2010-02-24 87 views
0

任何人可以建議我一個數據包攔截軟件?一個數據包攔截軟件

我的要求是阻止局域網內的數據包(互聯網不會進入畫面)。

假設CLIENT_A在同一網絡(LAN)中與CLIENT_B進行通信。

我想要一個CLIENT_C(在同一個網絡中)捕獲(我可以使用jpcap庫的嗅探器用於此目的)並阻止CLIENT_A發送到CLIENT_B的數據包。

我該如何阻止LAN上的數據包..?

預先感謝您。

問候, Veenit沙阿

回答

2

這種事情是使用一個單獨的防火牆(例如,在一個路由器或網關框)正常進行或者在一個或兩個客戶端機器上運行防火牆軟件。

這不是那種在Java中實現的明智之舉。

編輯 - 針對這一後續

我知道,這樣的事情是不是在Java..but最好還是生病必須實現it..so有沒有這樣做的手段..?

讓我們假設您正在討論在Linux機器上實現客戶端防火牆。我能想到的兩種方法:

  • 你可以使用Process.execute()和朋友到運行Linux iptables(8)管理工具,它操縱OS內核的網絡數據包過濾器。這是最簡單的基於Java的方法。但它要求您的Java應用程序運行爲root

  • 你可以逆向工程什麼iptables(8)正在做什麼來操縱數據包過濾器並編寫Java中的相同功能。這將是更多的編碼工作,包括通過JNI或JNA在C中實現部分功能。而你的應用需要運行爲root

但遠遠更簡單的方法是簡單地在命令行中運行iptables(8),也不能使用花哨的基於GUI的管理工具更改。

請注意,在上述情況下,防火牆本身並未在Java中實現。您所做的只是從Java應用程序管理防火牆。我想不出有什麼辦法可以在Java中實現過濾/阻塞,甚至是遠程實用的。

+0

我知道這種事情在Java中是不可取的,但仍然不得不實施它..所以有什麼辦法可以這麼做..? – veenit33 2010-02-24 15:58:28

0

如果您正在讀取客戶端C上網絡上的數據包,則客戶端B已收到該數據包,因此阻止它爲時已晚。如果您使用交換式以太網,則Client C甚至不會看到發送給B的數據包。

要做到這一點的唯一方法是讓A通過C與B通信,然後C可以決定是否應該發送數據包。這被稱爲防火牆。而不是寫一個,你可以在Linux上使用iptables來做到這一點。

但要利用這一點,你需要了解網絡的工作原理,我不確定你在這一點上根據你的問題做了什麼。所以你需要學習很多關於以太網(假設你使用以太網)和不同的網絡層。我不確定這是一個資源。

+0

它可能在Windows環境..? 一種中間人攻擊..? – veenit33 2010-02-25 17:36:34

+0

是的,它可以使用Windows。 – Jay 2010-03-02 01:24:02

1

您可能需要一些arp攻擊來將數據包從CLIENT-A重定向到Client-C而不是CLIent-B。

我不認爲這是一個好主意。