C 網路抓包

2021-06-10 12:46:34 字數 2646 閱讀 2509

以前一直都是知道用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 和 ...