2011-06-16 55 views
0

我正在使用libpcap庫。我使用pcap.h製作了一個數據包嗅探器C程序。現在我想阻止通過eth0設備在我的計算機上的端口23上發送數據包。我嘗試了pcap_filter函數,但它對阻塞沒有用處。 請向我解釋如何使用c程序對此功能進行編碼。如何在我的計算機上阻止端口23上的數據包?

+2

防火牆有什麼問題? – Mikaveli 2011-06-16 08:25:13

+0

我在問libpcap庫是否有阻塞包的功能? – mitesh 2011-06-16 08:32:44

+0

有多個端口23.您需要具體說明傳輸協議。 – 2016-09-19 23:53:13

回答

3

Libpcap僅用於數據包捕獲,即使數據包可用於其他程序。它不執行任何網絡設置,例如阻塞,打開端口。在這個意義上,pcap是一個純粹被動的監控工具。

我不確定你想要做什麼。據我看到它,有兩種可能性:

  1. 你真的想阻止數據包,讓你的電腦將不以任何方式處理它們。你應該使用防火牆來阻止這個端口。任何體面的防火牆應該能夠做到這一點相當容易。但是你應該知道,這也意味着沒有人能夠進入你的系統。所以如果你在遠程系統上這樣做,你已經有效地鎖定了你自己。

  2. 您仍然希望其他程序(sshd)在端口23上偵聽,但所有這些流量都會讓您在應用程序中感到煩惱。 Libpcap有一個過濾功能,這是相當強大的。使用此功能,您可以將小腳本傳遞給libpcap,並讓它只報告合適的數據包。在pcap文檔中查找過濾以獲取更多信息。然而,這將不會「阻止交通」,只是停止pcap捕捉它。

2

實際上使用pcap你無法構建防火牆。這是因爲你的嗅探器(使用pcap構建)中看到的數據包只是網絡堆棧消耗的數據包的副本(有或沒有嗅探器)。換句話說:在pcap中使用過濾器會導致你看不到原始數據包的拷貝(就我所知,pcap編譯過濾器並將它們添加到內核中,以便在內核級拷貝不會被完成);無論如何,原始數據包無論如何都會進入網絡堆棧。

您的問題最有可能的解決方案可以通過netfilter完成。您可以在NF_IP_PRE_ROUTING鉤子中註冊,並決定放棄或允許給定的流量。

相關問題