任何人可以建議我一個數據包攔截軟件?一個數據包攔截軟件
我的要求是阻止局域網內的數據包(互聯網不會進入畫面)。
假設CLIENT_A在同一網絡(LAN)中與CLIENT_B進行通信。
我想要一個CLIENT_C(在同一個網絡中)捕獲(我可以使用jpcap庫的嗅探器用於此目的)並阻止CLIENT_A發送到CLIENT_B的數據包。
我該如何阻止LAN上的數據包..?
預先感謝您。
問候, Veenit沙阿
任何人可以建議我一個數據包攔截軟件?一個數據包攔截軟件
我的要求是阻止局域網內的數據包(互聯網不會進入畫面)。
假設CLIENT_A在同一網絡(LAN)中與CLIENT_B進行通信。
我想要一個CLIENT_C(在同一個網絡中)捕獲(我可以使用jpcap庫的嗅探器用於此目的)並阻止CLIENT_A發送到CLIENT_B的數據包。
我該如何阻止LAN上的數據包..?
預先感謝您。
問候, Veenit沙阿
這種事情是使用一個單獨的防火牆(例如,在一個路由器或網關框)正常進行或者在一個或兩個客戶端機器上運行防火牆軟件。
這不是那種在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中實現過濾/阻塞,甚至是遠程實用的。
如果您正在讀取客戶端C上網絡上的數據包,則客戶端B已收到該數據包,因此阻止它爲時已晚。如果您使用交換式以太網,則Client C甚至不會看到發送給B的數據包。
要做到這一點的唯一方法是讓A通過C與B通信,然後C可以決定是否應該發送數據包。這被稱爲防火牆。而不是寫一個,你可以在Linux上使用iptables來做到這一點。
但要利用這一點,你需要了解網絡的工作原理,我不確定你在這一點上根據你的問題做了什麼。所以你需要學習很多關於以太網(假設你使用以太網)和不同的網絡層。我不確定這是一個資源。
您可能需要一些arp攻擊來將數據包從CLIENT-A重定向到Client-C而不是CLIent-B。
我不認爲這是一個好主意。
我知道這種事情在Java中是不可取的,但仍然不得不實施它..所以有什麼辦法可以這麼做..? – veenit33 2010-02-24 15:58:28