pcap內核過濾包長
① winpcap捕獲數據包要用多線程嗎
:libpcap和winpcap最大的不同就是 內核緩沖區,用戶緩沖區等都不能設置,沒有提供這樣的函數,要編譯libpcap源碼。
② 有沒有什麼類似Winpcap的數據包攔截的庫
捕獲包的話。。除了Winpcap這個庫外好像還沒有第二種。
Nt內核之後的WinSock不支持自己封裝MAC幀的RawSocket了。
所以如果有能力就寫NDIS驅動吧。
③ 如何基於WinPcap網路數據包捕獲程序來設計完成數據包捕獲程序
看看
④ 採用winpcap過濾從MAC地址A到MAC地址B的乙太網數據包的過濾語句怎麼寫
⑤ WinPcap能不能阻斷數據包
確實不能阻斷數據包,他是用來抓包的。
WinPcap產生的目的,就是為應用程序提供這種訪問方式; WinPcap提供了以下功能 :
捕獲原始數據包,無論它是發往某台機器的,還是在其他設備(共享媒介)上進行交換的
在數據包發送給某應用程序前,根據用戶指定的規則過濾數據包
將原始數據包通過網路發送出去
收集並統計網路流量信息
所以你只能用WINPCAP進行收發數據包,對你接收到的數據包進行過濾,或者統計你收到的數據包流量。所以你不能阻斷數據包的傳輸,而且他確實是個提取分析用。所以那個人說的很對。就算你篩選了你要收到的數據包,但是那也只是你所編輯的程序只提取你需要的數據包,實際上你相應的網卡上仍然收到了所有的數據包。你可以用WIRESHARK 軟體看到。winpcap抓包所能實現的功能基本,都在WIRESHARK上面體現了。都是winpcap還能發送數據包。
當然,如果你是網路高手,你可以根據不同傳輸協議,搞些MAC或IP欺騙,攔截一些不屬於你的數據包,但是這個就不是很容易辦到了。
你上面問道如何來丟棄數據包。。是丟棄你要發的數據包?還是丟棄你接收的數據包?
如果是丟棄接收的數據包的話,那就是篩選了過濾了,要用到 pcap_compile() 和 pcap_setfilter() 函數了。
如果是丟棄你要發送的數據包,數據包發送出去後就不收你控制了,你無法丟棄。如果你要編程,你可以進我的網路空間觀摩下。
⑥ winpcap 能不能只捕獲網卡收到的數據包,而不捕獲網卡自己發送的數據包啊
可以..設置filter為的目標主機為自己就可以了。或者忽略掉自己發出去的數據包
⑦ 簡述基於winpcap體系結構的捕獲網路數據包的過程
Winpcap是針對Win32平台上的抓包和網路分析的一個架構。它包括一個核心態的包過濾器,一個底層的動態鏈接庫(packet.dll)和一個高層的不依賴於系統的庫(wpcap.dll)。
抓包是NPF最重要的操作。在抓包的時候,驅動使用一個網路介面監視著數據包,並將這些數據包完整無缺地投遞給用戶級應用程序。
抓包過程依賴於兩個主要組件:
一個數據包過濾器,它決定著是否接收進來的數據包並把數據包拷貝給監聽程序。數據包過濾器是一個有布爾輸出的函數。如果函數值是true,抓包驅動拷貝數據包給應用程序;如果是false,數據包將被丟棄。NPF數據包過濾器更復雜一些,因為它不僅決定數據包是否應該被保存,而且還得決定要保存的位元組數。被NPF驅動採用的過濾系統來源於BSD Packet Filter(BPF),一個虛擬處理器可以執行偽匯編書寫的用戶級過濾程序。應用程序採用用戶定義的過濾器並使用wpcap.dll將它們編譯進BPF程序。然後,應用程序使用BIOCSETF IOCTL寫入核心態的過濾器。這樣,對於每一個到來的數據包該程序都將被執行,而滿足條件的數據包將被接收。與傳統解決方案不同,NPF不解釋(interpret)過濾器,而是執行(execute)它。由於性能的原因,在使用過濾器前,NPF提供一個JIT編譯器將它轉化成本地的80x86函數。當一個數據包被捕獲,NPF調用這個本地函數而不是調用過濾器解釋器,這使得處理過程相當快。
一個循環緩沖區,用來保存數據包並且避免丟失。一個保存在緩沖區中的數據包有一個頭,它包含了一些主要的信息,例如時間戳和數據包的大小,但它不是協議頭。此外,以隊列插入的方式來保存數據包可以提高數據的存儲效率。可以以組的方式將數據包從NPF緩沖區拷貝到應用程序。這樣就提高了性能,因為它降低了讀的次數。如果一個數據包到來的時候緩沖區已經滿了,那麼該數據包將被丟棄,因此就發生了丟包。
⑧ libpcap 怎麼攔截數據包
誰說這個東西能攔截了?
等你收到數據的時候,數據報已經發出去了
⑨ linux下使用libpcap進行數據捕獲,能夠將捕獲到的數據包保存為pcap文件
libpcap和winpcap最大的不來同就是 內核緩沖區自,用戶緩沖區等都不能設置,沒有提供這樣的函數,要編譯libpcap源碼。
另外,linux Fedora 下使用libpcap時,找不到pcap.h,查找發現安裝了libpcap的庫但是沒有頭文件。解決辦法是:
1.如何查看是否安裝libpcap? #rpm -aq libpcap
2.查找libpcap源,yum search pcap
3.安裝libpcap, yum install libpcap-devel.i386
⑩ libpcap抓的一個數據包長度為什麼為0
一般包頭都有顯示數據長度251,你要看下是明文還是加密的,破解了以後,改成253就可以了。修改數據包要具體問題具體分析。修改接收包也不一定有用。多試一試就ok了!