A. winpcap是什麼可以刪除嗎
winpcap是windows平台下一個免費,公共的網路訪問系統。開發winpcap這個項目的目的在於為win32應用程序提供訪問網路底層的能力。電腦里的winpcap是微軟自帶的軟體封裝工具,對於不是編寫軟體的程序員們可以刪除卸載了,刪除卸載後不影響電腦的正常使用。
方法/步驟:
1、開始——控制面板,打開控制面板。
B. linux 應用 pcap文件怎麼打開
如果你是一個測試入侵偵測系統或一些網路訪問控制策略的網路管理員,那麼你經常需要抓取數據包並在離線狀態下分析這些文件。當需要保存捕獲的數據包時,我們一般會存儲為 libpcap 的數據包格式 pcap,這是一種被許多開源的嗅探工具以及捕包程序廣泛使用的格式。如果 pcap 文件被用於入侵測試或離線分析的話,那麼在將他們注入網路之前通常要先對 pcap 文件進行一些操作。
在這篇文章中,我將介紹一些操作 pcap 文件的工具,以及如何使用它們 。
Editcap 與 Mergecap
Wireshark,是最受歡迎的 GUI 嗅探工具,實際上它帶了一套非常有用的命令行工具集。其中包括 editcap 與 mergecap。editcap 是一個萬能的 pcap 編輯器,它可以過濾並且能以多種方式來分割 pcap 文件。mergecap 可以將多個 pcap 文件合並為一個。 這篇文章就是基於這些 Wireshark 命令行工具的。
C. winpcap是什麼
winpcap(windows packet capture)是windows平台下一個免費,公共的網路訪問系統。開發winpcap這個項目的目的在於為win32應用程序提供訪問網路底層的能力。
1> 捕獲原始數據包,包括在共享網路上各主機發送/接收的以及相互之間交換的數據 winpcap結構
包;
2> 在數據包發往應用程序之前,按照自定義的規則將某些特殊的數據包過濾掉;
3> 在網路上發送原始的數據包;
4> 收集網路通信過程中的統計信息。
如果要裝網路探嗅器,前提是機器上必須要裝winpcap!
D. WinPcap是什麼
Winpcap(windows packet capture)是Windows平台下一個免費、公共的網路訪問系統,它為win32應用程序提供訪問網路底層的能力。,Winpcap不能阻塞、過濾或控制其他應用程序數據報的發收,它僅僅只是監聽共享網路上傳送的數據報。
它提供了以下的各項功能,這些功能均有助於乙太網數據流監視軟體功能的實現:
(1) 捕獲原始數據報,包括在共享網路上各主機發送/接收的以及相互之間交換的數據報;
(2)在數據報發往應用程序之前,按照自定義的規則將某些特殊的數據報過濾掉;
(3)在網路上發送原始的數據報;
(4)收集網路通信過程中的統計信息。
E. winpcap有什麼用,可以卸載嗎
winpcap 驅動各項功能
1. 捕獲原始數據包,包括在共享網路上各主機發送/接收的以及相互之間交換的數據
winpcap結構包;
2. 在數據包發往應用程序之前,按照自定義的規則將某些特殊的數據包過濾掉;
3. 在網路上發送原始的數據包;
4.收集網路通信過程中的統計信息。
winpcap卸載不幹凈的解決方法
[1][2]winpcap卸載不幹凈的的時候,在windows下刪除一些文件即可,刪除下面的文件即可:c:\windows\system32\Packet.dll
c:\windows\system32\drivers/npf.sys
c:\windows\system32\WanPacket.dll
c:\windows\system32\wpcap.dll
c:\windows\system32\pthreadVC.dll
F. Winpcap抓獲的包能不能自己來存儲然後讀出來分析
可以,如果你有WINPCAP捉包的例子,其實包的內容是放在他的緩沖區裡面,只有把裡面的內容復制出來就可以進行分析了~
G. winpcap 為什麼能收到所有數據包
WinPcap產生的目的,就是為Win32應用程序提供這種訪問方式; WinPcap提供了以下功能 :
捕獲原始數據包,無論它是發往某台機器的,還是在其他設備(共享媒介)上進行交換的
在數據包發送給某應用程序前,根據用戶指定的規則過濾數據包
將原始數據包通過網路發送出去
收集並統計網路流量信息
所以你只能用WINPCAP進行收發數據包,對你接收到的數據包進行過濾,或者統計你收到的數據包流量。所以你不能阻斷數據包的傳輸,而且他確實是個提取分析用。所以那個人說的很對。就算你篩選了你要收到的數據包,但是那也只是你所編輯的程序只提取你需要的數據包,實際上你相應的網卡上仍然收到了所有的數據包。你可以用WIRESHARK 軟體看到。winpcap抓包所能實現的功能基本,都在WIRESHARK上面體現了。都是winpcap還能發送數據包。
H. vc中關聯WinPcap後,怎麼開始具體的抓包啊請高手指點
1. 獲取網路介面列表
通常, 一個基於WinPcap的應用程序所要做的第一件事, 就是獲得適合的網路介面的列表. Libpcap中的pcap_findalldevs()函數就是干這活的: 這個函數然回一個pcap_if結構的列表, 每個元素都記錄了一個介面的信息. 其中, name和description以人類可以閱讀的形式, 記錄了設備的信息.
下面的源代碼輸出可用的網路介面的列表, 並且在沒有找到任何借口的情況下輸出錯誤信息:
代碼
#include "pcap.h"
main()
{
pcap_if_t *alldevs;
pcap_if_t *d;
int i=0;
char errbuf[PCAP_ERRBUF_SIZE];
/* 取得列表 */
if (pcap_findalldevs(&alldevs, errbuf) == -1)
{
fprintf(stderr,"Error in pcap_findalldevs: %s\n", errbuf);
exit(1);
}
/* 輸出列表 */
for(d=alldevs;d;d=d->next)
{
printf("%d. %s", ++i, d->name);
if (d->description)
printf(" (%s)\n", d->description);
else
/* Y- 沒有有效的描述 */
printf(" (No description available)\n");
}
if(i==0)
{
/* Y- 沒有有效的介面, 可能是因為沒有安裝WinPcap */
printf("\nNo interfaces found! Make sure WinPcap is installed.\n");
return;
}
/* 我們不再需要列表了, 釋放 */
pcap_freealldevs(alldevs);
}
我們來看看這段代碼.
首先, 和其他的libpcap函數一樣, pcap_findalldevs(), 有一個錯誤緩沖區(errbuf)參數. 這個參數是一個字元串指針, 一旦發生錯誤,libpcap將會在這里填入錯誤描述. 然後, 請注意, pcap_findalldev系統下的s()函數同時也被UNIX下的libpcap所支持, 但是並不是所有的操作系統都支持"網路介面描述"(description)這一項. 所以, 如果我們想寫一個可以移植的的應用程序,那麼我們必須要為描述為"空"(null)的情況做好准備:遇到這種情況我們就輸出一個"沒有有效的描述"的消息.
最後我們通過pcap_freealldevs()函數來釋放介面列表.
現在讓我們編譯並運行我們的第一個WinPcap程序. 如果你使用UNIX或者Cgywin的話, 你只需要以下命令:
gcc -o testaprog testprog.c -lpcap
在Windows環境中(Y - 如果你使用Microsoft Visual C++), 你需要建立一個工程, 按照"Using WinPcap in your programs " 一節中說明來做.
不過, 我仍然建議你參照Winpcap開發者包(WinPcap developer's pack)中的例子, 那些例子包括了所以配置完善的工程, 以及全部你所需要的庫和包含文件.
(Y - 你可以在本章最後找到Microsoft Visual C++ 的配置方法)
假設現在你已經成功編譯了程序, 我們就來運行它. 在我的WinXP工作站上, 輸出結果是:
1. {4E273621-5161-46C8-895A-48D0E52A0B83} (Realtek RTL8029(AS) Ethernet Adapter)
2. {5D24AE04-C486-4A96-83FB-8B5EC6C7F430} (3Com EtherLink PCI)
就如你所看到的, 網路介面的名稱(當打開這個介面時, 需要傳遞這個名稱給libpcap庫)在windows環境下幾乎是沒有辦法讀懂的(Y-嚴重同意), 所以輸出一個描述對於你的用戶來說是非常有幫助的.
附註: Microsoft Visual C++ 工程的設置
1. 下載並安裝 WinPcap, 推薦的版本是3.0
2. 從 http://winpcap.polito.it 下載 WinPcap Developer's Pack 並解壓縮
3. 用 Microsoft Visual C++ 建立一個空工程 (empty project)
4. 復制源代碼
5. 把 Winpcap Developer's Pack 中的 Includes 目錄添加為新的包含文件目錄
6. 添加庫 wpcap.lib 和 wsock32.lib
2. 獲取設備的高級信息
上一課我們介紹了如何獲取一個設備的基本信息(比如設備名稱和設備描述). 實際上, WinPcap 也可以為我們提供關於介面的更多信息. 由 pcap_findalldevs() 函數返回的 pcap_if 結構也包含了一個 pcap_addr 結構的列表, 它記錄了以下信息:
1. 介面的地址列表
2. 介面的掩碼列表 (與地址列表一一對應)
3. 介面的廣播地址列表 (與地址列表一一對應)
4. 目標地址列表 (與地址列表一一對應)
下面例子中的 ifprint() 函數將會輸出 pcap_if 結構的全部內容. 它包括了 pcap_findalldevs() 函數所返回的所有元素. ( Y- 全部有效介面)
代碼
#include "pcap.h"
#ifndef WIN32
#include
#include
#else
#endif
void ifprint(pcap_if_t *d);
char *iptos(u_long in);
int main()
{
pcap_if_t *alldevs;
pcap_if_t *d;
char errbuf[PCAP_ERRBUF_SIZE+1];
/* 獲得設備列表 */
if (pcap_findalldevs(&alldevs, errbuf) == -1)
{
fprintf(stderr,"Error in pcap_findalldevs: %s\n",errbuf);
exit(1);
}
/* 遍歷所有元素 */
for(d=alldevs;d;d=d->next)
{
ifprint(d);
}
return 1;
}
/* Print all the available information on the given interface */
void ifprint(pcap_if_t *d)
{
pcap_addr_t *a;
/* 名稱 */
printf("%s\n",d->name);
/* 描述 */
if (d->description)
printf("\tDescription: %s\n",d->description);
/* 回環地址 */
printf("\tLoopback: %s\n",(d->flags & PCAP_IF_LOOPBACK)?"yes":"no");
/* IP 地址 */
for(a=d->addresses;a;a=a->next) {
printf("\tAddress Family: #%d\n",a->addr->sa_family);
switch(a->addr->sa_family)
{
case AF_INET:
printf("\tAddress Family Name: AF_INET\n");
if (a->addr)
/* Y- IP 地址 */
printf("\tAddress: %s\n",iptos(((struct sockaddr_in *)a->addr)->sin_addr.s_addr));
if (a->netmask)
/* Y- 掩碼 */
printf("\tNetmask: %s\n",iptos(((struct sockaddr_in *)a->netmask)->sin_addr.s_addr));
if (a->broadaddr)
/* Y- 廣播地址 */
printf("\tBroadcast Address: %s\n",iptos(((struct sockaddr_in *)a->broadaddr)->sin_addr.s_addr));
if (a->dstaddr)
/* Y - 目標地址 */
printf("\tDestination Address: %s\n",iptos(((struct sockaddr_in *)a->dstaddr)->sin_addr.s_addr));
break;
default:
/* 未知 */
printf("\tAddress Family Name: Unknown\n");
break;
}
}
printf("\n");
}
/* 來自 tcptracert, 把數字IP地址轉換為點格式 */
#define IPTOSBUFFERS 12
char *iptos(u_long in)
{
static char output[IPTOSBUFFERS][3*4+3+1];
static short which;
u_char *p;
p = (u_char *)∈
which = (which + 1 == IPTOSBUFFERS ? 0 : which + 1);
sprintf(output[which], "%d.%d.%d.%d", p[0], p[1], p[2], p[3]);
return output[which];
}
3. 打開一個介面並捕捉流量
現在我們已經知道如何獲取一個介面的有關信息了, 我們可以來點真傢伙了 -- 打開一個介面並捕捉流量. 在這一課里, 我們會編譯一個程序, 它將捕捉網路中所有的數據包並輸出他們的一些相關信息。我們使用函數 pcap_open_live() 來打開一個捕捉設備. 這里, 我們需要解釋一下 snaplen, promisc 和 to_ms 參數.
( Y- 函數原型: pcap_t * pcap_open_live (char *device, int snaplen, int promisc, int to_ms, char *ebuf) )
"snaplen" 參數指定了要捕捉的數據包的部分. 在某些操作系統中 (如 xBSD 和 Win32), 驅動程序提供了只捕捉每個數據包其中一部分的可能性: 這樣就降低了要處理的數據的量, 從而提高了捕捉程序的效率. 在例子中, 我們使用一個高出 MTU 最大值的值 (65536) 以確保可以捕捉到成個數據包.
"promisc" 表明介面將會被設置為混雜模式. 一般情況下, 介面只處理目標地址為自己的數據; 到其他主機的數據包將會被忽略. 然而當一個介面處於混雜模式時, 它將會處理全部的流量: 也就是說, 在共享媒介 ( Y- 才疏學淺, 不知道怎麼翻譯好 ), 例如非交換型乙太網 ( Y- 比如基於集線器的網路 )中, WinPcap 可以捕捉到所有主機的數據包. 混在模式是多數捕捉程序的默認模式, 所以我們在例子中也採用這種模式.
"to_ms" 用以設置超時, 單位是毫秒. 一個從介面讀取 ( Y- 捕捉) 的操作, (例如 pcap_dispatch() 或者 pcap_next_ex()), 如果沒有捕捉到數據包, 那麼在超過指定的時間以後就會返回. 進一步說, 如果介面處在靜態模式中, to_ms 也定義了靜態報告的間隔時間 (參閱 "Gathering Statistics on the network traffic " 以獲取更多信息). 設置 to_ms 為 0, 則說明永遠不會超時, 如果沒有數據包到達, 那麼捕捉操作將會永遠不會返回, 而將其值設置為 -1 則會立刻返回.
代碼
#include "pcap.h"
/* 數據包處理函數聲明 */
void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data);
main()
{
pcap_if_t *alldevs;
pcap_if_t *d;
int inum;
int i=0;
pcap_t *adhandle;
char errbuf[PCAP_ERRBUF_SIZE];
/* 獲取設備列表 */
if (pcap_findalldevs(&alldevs, errbuf) == -1)
{
fprintf(stderr,"Error in pcap_findalldevs: %s\n", errbuf);
exit(1);
}
/* 數據列表 */
for(d=alldevs; d; d=d->next)
{
printf("%d. %s", ++i, d->name);
if (d->description)
printf(" (%s)\n", d->description);
else
printf(" (No description available)\n");
}
if(i==0)
{
printf("\nNo interfaces found! Make sure WinPcap is installed.\n");
return -1;
}
printf("Enter the interface number (1-%d):",i);
scanf("%d", &inum);
if(inum < 1 || inum > i)
{
printf("\nInterface number out of range.\n");
/* 釋放設備列表 */
pcap_freealldevs(alldevs);
return -1;
}
/* 轉到選擇的設備 */
for(d=alldevs, i=0; i< inum-1;d=d->next, i++);
/* 打開設備 */
if ( (adhandle= pcap_open_live(d->name, //設備名
65536, // 捕捉完整的數據包
1, // 混在模式
1000, // 讀入超時
errbuf // 錯誤緩沖
) ) == NULL)
{
/* Y- 打開失敗*/
fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n");
/* 釋放列表 */
pcap_freealldevs(alldevs);
return -1;
}
printf("\nlistening on %s...\n", d->description);
/* 我們已經不需要設備列表了, 釋放它 */
pcap_freealldevs(alldevs);
/* 開始捕捉 */
pcap_loop(adhandle, 0, packet_handler, NULL);
return 0;
}
/* 處理數據包的回調函數*/
void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data)
{
struct tm *ltime;
char timestr[16];
/* 轉換時間戳為可以閱讀的格式 */
ltime=localtime(&header->ts.tv_sec);
strftime( timestr, sizeof timestr, "%H:%M:%S", ltime);
printf("%s,%.6d len:%d\n", timestr, header->ts.tv_usec, header->len);
}
一旦介面被打開, pcap_dispatch() 或者 pcap_loop() 函數將會開始捕捉. 這兩個函數非常相似, pcap_dispatch() 將會在超時後直接返回, 而 pcap_loop() 則一定要等到一定數量的數據包被處理了以後才會返回 (Y- 第二個參數指定了要處理的數據包的數量, 0 為無限, 在這里, 我們設置的超時對 pcap_loop() 不起作用.) 在本例中, pcap_loop() 已經足夠我們使用了, 而 pcap_dispatch() 一般應用在更復雜的程序里.
這兩個函數都有一個回調參數, 只想一個處理數據包的函數, 如本例中的 packet_handler. 每當有新的數據包到來的時候, libpcap將會調用這個函數來處理數據包, libpcap也會提供這個數據包的一些信息: 一個首部, 包含了時間戳和長度信息 (Y-header 參數); 真實數據包 (Y- pkt_data參數), 包括各種協議首部. 請注意, MAC CRC一般不會出現, 因為當設備(網卡)進行幀確認操作時, 它就已經被移除了. 同時, 大部分網卡將會丟棄錯誤的 CRC, 所以 WinPcap 基本上也不能捕捉他們.
上面的例子只輸出每個數據包時間戳以及長度 (來自 pcap_pkthdr header).
I. WinPcap是做啥用的
winpcap(windows packet capture)是windows平台下一個免費,公共的網路訪問系統。開發winpcap這個項目的目的在於為win32應用程序提供訪問網路底層的能力。
目錄
winpcap 驅動各項功能
Winpcap的內部結構
Winpcap程序實例
winpcap卸載不幹凈的解決方法
編輯本段
winpcap 驅動各項功能
1> 捕獲原始數據包,包括在共享網路上各主機發送/接收的以及相互之間交換的數據 winpcap結構包;
2> 在數據包發往應用程序之前,按照自定義的規則將某些特殊的數據包過濾掉;
3> 在網路上發送原始的數據包;
4> 收集網路通信過程中的統計信息。
winpcap的主要功能在於獨立於主機協議(如TCP-IP)而發送和接收原始數據包。也就是說,winpcap不能阻塞,過濾或控制其他應用程序數據包的發收,它僅僅只是監聽共享網路上傳送的數據包。因此,它不能用於QoS調度程序或個人防火牆。目前,winpcap開發的主要對象是windows NT/2000/XP,這主要是因為在使用winpcap的用戶中只有一小部分是僅使用windows 95/98/Me,並且MS也已經放棄了對win9x的開發。因此本文相關的程序T-ARP也是面向NT/2000/XP用戶的。其實winpcap中的面向9x系統的概念和NT系統的非常相似,只是在某些實現上有點差異,比如說9x只支持ANSI編碼,而NT系統則提倡使用Unicode編碼。有個軟體叫sniffer pro.可以作網管軟體用,有很多功能,可監視網路運行情況,每台網內機器的數據流量,實時反映每台機器所訪問IP以及它們之間的數據流通情況,可以抓包,可對過濾器進行設置,以便只抓取想要的包,比如POP3包,smtp包,ftp包等,並可從中找到郵箱用戶名和密碼,還有ftp用戶名和密碼。它還可以在使用交換機的網路上監聽,不過要在交換機上裝它的一個軟體。還有一個簡單的監聽軟體叫Passwordsniffer,可截獲郵箱用戶名和密碼,還有ftp用戶名和密碼,它只能用在HUB網路上。著名軟體tcpmp及ids snort都是基於libpcap編寫的,此外Nmap掃描器也是基於libpcap來捕獲目標主機返回的數據包的。
winpcap提供給用戶兩個不同級別的編程介面:一個基於libpcap的wpcap.dll,另一個是較底層的packet.dll。對於一般的要與unix平台上libpcap兼容的開發來說,使用wpcap.dll是當然的選擇。
請採納答案,支持我一下。
J. winpcap是什麼,有什麼作用
網路上這么說的Winpcap是UNIX下的libpcap移植到windows下的產物,他是一個free and open source的項目。Winpcap工作於驅動(Driver)層,所以能以很高的效率進行網路操作。
Winpcap提供了以下強大的功能:
1.捕獲原始的數據包
2.設置filter,只捕獲自己敢興趣的數據包
3.方便的把捕獲的數據包輸出到文件和從文件輸入
4.發送原始的數據包
5.統計網路流量
6.…..(其它還有很多,我不知道了)
但是我用的本地連接,就是打開連接客戶端的,可以打開很多的應用程序