PPPOE資料報轉換及SharpPcap應用

2021-09-06 14:20:23 字數 1104 閱讀 7767

在最近寫的乙個程式中需要用到sniffer功能,但由於通過.net自身的socket做出來的sniffer不能達到實際應用的要求(如不能監聽wifi資料報)所以找到了winpcap的.net庫sharppcap(

)說下我遇到的問題,由於我自己用的是通過路由器上網,所以做出來的東西所有功能都可以用,但把程式發到一些朋友那裡就遇到問題了,關於sniffer的所有功能都不能用,起先還以為是程式功能問題,不停的在做修改,慢慢的才意識到原來是由於pppoe撥號的原因,通過網上找了相關pppoe的資料才知道,他將原來的資料報加上了乙個pppoe的協議包頭,為了使程式支援pppoe的協議只能把資料報轉換成一般的tcp/ip包,pppoe的協議有8位元組組成,之後就是原有的tcp/ip協議包,一般的adsl撥號都不會加密,因此可以不考慮加密的因素通過pcap來做包轉換主要有這幾個過程,

1.獲取pppoe的原始以太包

2.將原始以太包頭寫入新以太包做為頭部

3.移去原始以太包頭部後的8個位元組

4.將處理後的以太包資料塊寫入新包中

具體的pcap應用實現**:

1 //

資料報接收事件

2device.pcaponpacketarrival 

+=new

pcap.packetarrivalevent(pcaponpacketarrival);3//

設定過濾條件,"以太協議為0x8864(即pppoe協議)或tcp協議"

4device.pcapsetfilter(

"ether[12:2]=0x8864 or tcp");

5//開始截包

6pcapcapture(-1

);789

10//

截包事件

11void

pcaponpacketarrival(

object

sender, packet packet)

19else

20//

當為以太包時,則嘗試轉換成tcp資料報

21if

(packet 

isethernetpacket)

2238

catch

39tmpms.dispose();40}

4142}

資料報過濾及分析例項 tshark tcpdump

平時需要對資料報進行分析和統計,儘管使用python scapy庫來開發很方便,但若是熟悉tshark wireshark的命令列 tcpdump 等工具,含editcap,mergecap 等,寫個簡單的shell分析指令碼,那會更加方便 tcpdump tshark 過濾出 src.pcap 中...

TCP協議資料報及攻擊分析

urg urget pointer is valid 緊急指標字段值有效 syn 表示建立連線 fin 表示關閉連線 ack 表示響應 psh 表示有 data資料傳輸 rst 表示連線重置。1 syn 一段tcp對話開始時的資料報,收到的主機將以syn ack回應,並進入半連線狀態,將此鏈結存入佇...

Python選擇網絡卡發包及接收資料報

當一台計算機上有多個網絡卡時,需要選擇對應ip位址的網絡卡進行傳送資料報或者接受資料報。1 選擇網絡卡發包 應用scapy plface conf.route.route 0 為對應網絡卡網路中存在裝置的ip位址。不能是需要傳送資料報的網絡卡的ip位址 會報 result too large pkt...