libpcap編程
① 怎樣捕捉icmp的報文
1.工具:Wireshark 跨平台軟體 windows 類unix的都有,可以方便抓包,抓包時設置過濾器為icmp就可以了。
2.編程:使用libpcap庫,編寫一個只獲取icmp的程序。也比較簡單,在過濾器時設置一下就可以了。
char bpf_filter_string[] = "icmp";
net_interface = pcap_lookupdev(error_content);
pcap_lookupnet(net_interface, &net_ip, &net_mask, error_content);
pcap_handle = pcap_open_live(net_interface, BUFSIZ, 1, 0, error_content);
pcap_compile(pcap_handle, &bpf_filter, bpf_filter_string, 0, net_ip);
pcap_setfilter(pcap_handle, &bpf_filter);
pcap_datalink(pcap_handle)
------
② netfilter和libpcap的作用是一樣的嗎
本質是一樣的,就是有些細節不一樣,
而且libpcap是開源的軟體,你可以用它來編程抓取底層的報文,這樣分析好
③ 想找一些關於winpcap編程的書籍,教程。
WinPcap用戶指南
模塊
定義
輸出函數
過濾串表達式的語法
使用WinPcap編程
--------------------------------------------------------------------------------
詳細描述
這節包含了有關wpcap.dll的用戶指南。wpcap.dll是一個包含了公共WinPcap API的動態鏈接庫,它輸出了一組依賴於系統的函數,用來捕獲和分析網路流量。這些函數的用途有:
獲取網路適配器列表
獲取網路適配器的不同信息,比如網卡描述和地址的列表
使用PC的一個網卡來捕獲數據包
向網路上發送數據
有效保存數據包到磁碟,並通過一個介面捕獲數據包,就如同從網卡捕獲數據一樣
使用高級語言創建一個數據包過濾器,並把它們應用到數據捕獲中去
wpcap.dll 與 libpcap 兼容,後者是Unix平台下知名的數據包捕獲庫。這個兼容性意味著你可以開發可移植的網路工具,這些工具既可以運行在Win32系列的操作系統,也可以運行在與Unix兼容的機器上。
這一章節的一些內容直接來自於tcpmp和libpcap的用戶手冊,它們由tcpmp.org的開發人員維護。因此,如果你想閱讀最新的文檔,你可以登錄 www.tcpmp.org.
注意
有些函數被標注為 deprecated 或 discouraged。這些標簽的意思是:
discouraged: 這個函數的功能已經被另一個函數所代替,不過這個函數仍然可以使用。
deprecated: 這些函數只是為了可移植性和向下兼容而存在,它應該被禁止使用,並且強烈建議你使用另一個等價的函數來代替它
④ Libpcap+QT混合編程
思路一片混亂,不明白你要做什麼,c語言訪問C++的成員?什麼時候也不行呀。
如果C語言函數都能很簡單的訪問C++,那public、private都沒有用了。C語言就沒有那些關鍵字。
另外就是不建議開很多線程弄那個pcap,效果很差。
如果就一個線程,用文件內的static的變數代替C++成員變數就可以了(其實多線程也沒問題),不過照你目前的這種情況估計要很久才能明白。
⑤ linux下c網路編程問題(不能使用第三方類庫,如libpcap等)
你這是發項目叫人做,不是出於學習求助目的;還真以為會有人幫你做,別腦殘了
⑥ libpcap 編程問題 很急!!
23行應為printf("Net Ip Address is :%s\n",net_ip_string);
26行應為printf("Network Mask Address is :%s\n",net_mask_string);
對於inet_ntoa的問題,加上以下三個頭文件試試
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
之前提到的
printf("Net Ip Address is :%s\n",net_ip_address);
修改成printf("Network Mask Address is :%s\n",net_mask_string); 有沒有改?
⑦ 新手求助,關於libpcap的c語言編程
#include<stdio.h>
int main(){
int a,b,c,d;
scanf("%d%d%d",&a,&b,&c);
c=c/100;
printf("%d %d %d",a+=30,b*=5,c%10);
return 0;
}
⑧ 如何基於libpcap/winpcap實現包捕獲
本質是一樣的,就是有些細節不一樣,而且libpcap是開源的軟體,你可以用它來編程抓取底層的報文,這樣分析好,另外一個一般是結合wireshark軟體來實現,沒有前一個靈活
⑨ 請問libpcap抓包程序中的pcap_t和pcap_pkthdr是什麼意思
struct pcap_pkthdr {
struct timeval ts; /* time stamp */時間戳
bpf_u_int32 caplen; /* length of portion present */在線抓到包的長度,無符號整形
bpf_u_int32 len; /* length this packet (off wire) */離線包長度
};
pcap_pkthdr是.pcap文件中包的頭部,typedef struct pcap pcap_t,pcap_t是定義的一個結構體的對象。你看看編程的環境配的對不對,Winpcap這種抓包和分析包必須裝好相應的驅動和配好include和lib文件,找Winpcap的函數和數據文檔看看,其中定義了好多數據類型和結構體,我也開始學,可以多看看這些,了解下編起來就游刃有餘了,你看我這樣回答行不行,如果不行咱們再交流。
⑩ winpcap是什麼軟體卸載了沒問題吧
winpcap(windows packet capture)是windows平台下一個免費,公共的網路訪問系統。開發winpcap這個項目的目的在於為win32應用程序提供訪問網路底層的能力。
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是當然的選擇。