pcap open )(網上資料)

2021-07-09 03:08:52 字數 1915 閱讀 5435

我們主要使用的函式是pcap_open(),這個函式的功能是開啟乙個抓取裝置。

pcap_t *pcap_open(

const

char * source,

int snaplen,

int flags,

int read_timeout,

struct pcap_rmtauth * auth,

char * errbuf

)

pcap_open()能夠替代所有的pcap_open_***()函式,隱藏了不同的pcap_open_***()之間的差異。

source:是包含要開啟的源名稱的以』\0』結尾的字串。源名稱需要包含新的源規範語法(source specification syntax),並且它不能為null。

對於源語法:(1)pcap_findalldevs_ex()返回的介面卡(網絡卡)可以直接被pcap_open()使用;(2)萬一使用者想傳遞他自己的源字串給pcap_open(),pcap_createsrcstr()可以建立正確的源標識。

snaplen:需要保留的資料報的長度。對每乙個過濾器接收到的資料報,第乙個『snaplen』位元組的內容將被儲存到緩衝區,並且傳遞給使用者程式。例如,snaplen等於100,那麼僅僅每乙個資料報的第乙個100位元組的內容被儲存。底層驅動可以通過配置只抓取資料報的開始部分:這樣就減少了拷貝給應用程式的資料量,提高抓取效率。如果使用65536這個比我們所能遇到的最大的mtu還大的數字。這樣我們就能確保我們的程式可以抓到整個資料報。

flags:儲存一些由於抓包需要的標誌。winpcap定義了三種標誌:

pcap_openflag_promiscuous:1,它定義了介面卡(網絡卡)是否進入混雜模式(promiscuous mode)。在正常狀況下,乙個介面卡僅僅抓取網路中目的地是它自己的資料報;因此其他主機交換的資料報都被忽略。當介面卡處在混雜模式下的時候它就會抓取所有的資料報而不管是不是發給它的。這就意味著在共享**(如非交換的乙太網)上,winpcap將能夠抓取其他主機的資料報。混雜模式是大部分抓取程式的預設模式

pcap_openflag_datatx_udp:2,它定義了資料傳輸(假如是遠端抓包)是否用udp協議來處理。

pcap_openflag_nocapture_rpcap:4,它定義了遠端探測器是否捕獲它自己產生的資料報。

read_timeout:以毫秒為單位。read timeout被用來設定在遇到乙個資料報的時候讀操作不必立即返回,而是等待一段時間,讓更多的資料報到來後從os核心一次讀多個資料報。並非所有的平台都支援read timeout;在不支援read timeout的平台上它將被忽略。

auth:乙個指向』struct pcap_rmtauth』的指標,儲存當乙個使用者登入到某個遠端機器上時的必要資訊。假如不是遠端抓包,該指標被設定為null。

errbuf:乙個指向使用者申請的緩衝區的指標,存放當該函式出錯時的錯誤資訊。

返回值:是乙個』pcap_t』指標,它可以作為下一步呼叫(例如pcap_compile()等)的引數,並且指定了乙個已經開啟的winpcap會話。在遇到問題的情況下,它返回null並且』errbuf』變數儲存了錯誤資訊。

to_ms以毫秒為單位指定了讀取操作的超時界限。在介面卡上乙個讀取操作(比如,pcap_dispatch() 或者 pcap_next_ex())將總是在to_ms豪秒後返回,即使網路中沒有資料報可供抓取。如果介面卡工作在統計模式,to_ms還定義了統計報告之間的間隔。把tm_ms設定為0意味著沒有時間限制,如果沒有資料報到達介面卡,讀取操作將永遠不會返回。反過來,把tm_ms設定為-1將使讀取操作總是立即返回。

(即前文read_timeout)

網上資料目錄

關於網上相關優秀內容的儲存蒐藏 不斷更新 二 計算機專業 三 比賽方面 四 教育方面 五 學校方面 六 考證方面 七 軟體使用 八 研究生 考研總結 李賢平版 概率論基礎 第三版知乎筆記目錄 mooc網課位址 系統性 b站網課位址 更加符合教材 信計就業 如何入門cs 知乎答案 pycharm上手 ...

網上看的學習資料

string 字串常量 stringbuffer字串變數 執行緒安全,速度慢 stringbuilder 字串變數 非執行緒安全,速度快 1.速度上 stringbuilder stringbuffer string 2.使用 對stringbuffer stringbuilder進行操作,是在原來...

開源portal網上資料了解

開源portal網上資料了解 lightportal 啟用記憶體資料庫,原始碼可以匯入eclipse。但是問題是發布portlet要比較複雜的配置,本身沒有豐富的portlet支援。jqueryportal jquery頁面效果的擴充套件。真的只有客戶端的 通過js來layout頁面的html布局。...