以前一直都是知道用winpcap的,現在網上搜了一下,有用c#封裝好了的,很好用
下面是其中的幾個用法
這個類庫作者的主頁:
pcapopen()有下面幾個方法
pcapopen()
pcapopen(bool promiscuous_mode)
pcapopen(bool promiscuous_mode, int read_timeout)
promiscuous_mode:在普通的抓取模式下,我們只抓取那些目的地為目標網路的包,而處於promiscuous_mode時,則抓取所有的包,包括**的包.通常我們都是開啟這種模式的
下面是示例:
//extract a device from the list
pcapdevice device = devices[i];
//register our handler function to the
//'packet arrival' event
device.pcaponpacketarrival +=
new sharppcap.packetarrivalevent(device_pcaponpacketarrival);
//open the device for capturing
//true -- means promiscuous mode
//1000 -- means a read wait of 1000ms
device.pcapopen(true, 1000);
console.writeline(
"-- listenning on , hit 'enter' to stop...",
device.pcapdescription);
//start the capturing process
device.pcapstartcapture();
//wait for 'enter' from the user.
console.readline();
//stop the capturing process
device.pcapstopcapture();
//close the pcap device
device.pcapclose();
pcapstartcapture()對應pcapstopcapture()
使用pcapcapture(int packetcount)時我們可以使用sharppcap.infinite,來達到持續抓包的功能
note:通常crc的資料是不在資料報的中的,因為通常錯誤的crc包會被自動丟棄.
上面的需要註冊乙個event handle,這在很多時候是不可行的,所以我們推薦使用下面這個方法pcapgetnextpacket()
//extract a device from the list
pcapdevice device = devices[i];
//open the device for capturing
//true -- means promiscuous mode
//1000 -- means a read wait of 1000ms
device.pcapopen(true, 1000);
console.writeline();
console.writeline("-- listenning on ...",
device.pcapdescription);
packet packet = null;
//keep capture packets using pcapgetnextpacket()
while( (packet=device.pcapgetnextpacket()) != null )
::, len=",
time.hour, time.minute, time.second,
time.millisecond, len);
}//close the pcap device
device.pcapclose();
console.writeline("-- capture stopped, device closed.");
pcapsetfilter() 設定過濾條件
string filter = "ip and tcp";
device.pcapsetfilter( filter );
下面這個例子通過抓取tcp包,輸出他們的時間,長度,源ip,源埠,目的ip,目的埠
///
/// prints the time, length, src ip,
/// src port, dst ip and dst port
/// for each tcp/ip packet received on the network
///
private static void device_pcaponpacketarrival(
object sender, packet packet)
::, len= : -> :",
time.hour, time.minute, time.second,
time.millisecond, len, srcip, srcport,
dstip, dstport);}}
OTT 網路抓包
有些時候,我們為了更好分析ott盒子的網路行為,我們需要對其進行抓包。一般情況下有兩種狀況。該盒子我們有root許可權,可以通過adb登陸到盒子中 該盒子我們無法登入 在這兩種情況下,我們可以分別用不同的方式來完成網路抓包 這種情況下,我們一般是通過盒子的內部命令tcpdump進行抓包分析 cd m...
Linux 網路抓包
除錯網路程式時,通常需要抓包分析。linux下的tcpdump就很好。ubuntu下預設已經安裝。下面先舉個實際的例子.比如我有乙個c 程式監聽本地埠8889,另乙個newlisp程式通過tcp和其通訊。首先可以檢查一下有幾個網路介面。root dean ga ma790xt ud4p tcpdum...
linux 網路抓包
方案 1 使用linux中的tcpdump抓包 2 wireshark分析 tcpdump tcp i eth1 t s 0 c 100 and dst port 22 and src net 192.168.1.0 24 w target.cap 1 tcp ip icmp arp rarp 和 ...