快速實現python抓包嗅探


1. 使用scapy ,但是這個在macos上安裝比較麻煩,沒有多試

2. 使用pypcap, 這個相對上手容易

 1 #coding:utf8
 2 __author__ = 'yeyong'
 3 import dpkt
 4 import pcap
 5 
 6 sniffer = pcap.pcap(name="en0")   #name parameter => interface name
 7 sniffer.setfilter("tcp")                         #filter sentence
 8 cur_timestamp = 0
 9 c=0
10 caplen = 0
11 for packet_time,packet_data in sniffer:
12     packet_time = int(packet_time)
13     if cur_timestamp == packet_time:
14         c +=1
15         caplen += len(packet_data)
16     else:
17         print cur_timestamp, c, caplen
18         cur_timestamp = packet_time
19         c=0
20         caplen = 0
# packet = dpkt.ethernet.Ethernet(packet_data)#二層數據報文嘛
# print "SRC IP:%d.%d.%d.%d"%tuple(map(ord,list(packet.data.src)))
# print "DST IP:%d.%d.%d.%d"%tuple(map(ord,list(packet.data.dst)))
# print "SRC PORT:%s"%packet.data.data.sport
# print "DST PORT:%s"%packet.data.data.dport

需要確認一下性能,因為實際場景上一秒可能有10MB的流量,不知道這個能否撐住

另外還需要解包拿到sip, dport等

 

3. packetbeat應該已經實現了並且性能不錯,但是我只需要很簡單的一部分功能,需要剝離相關代碼,需要花費時間,如果2不太好辦,可以試試

4. https://www.2cto.com/kf/201204/125809.html https://www.cnblogs.com/qiyeboy/p/9033707.html等也有方案,但是需要確認linux下如何監聽指定的端口


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM