1. 程式人生 > >使用PYTHON解析Wireshark的PCAP檔案

使用PYTHON解析Wireshark的PCAP檔案

PYTHON首先要安裝scapy模組

PY3的安裝scapy-python3,使用PIP安裝就好了,注意,PY3無法使用pyinstaller打包檔案,PY2正常

PY2的安裝scapy,比較麻煩

from scapy.all import *
pcaps = rdpcap("file.pcap")


pcaps便是解析後的類似結構體的東西了

<pre name="code" class="python">packet=pcaps[0] #第1個數據包結構
packet.time#資料包時間戳
packet[Raw].load#PY3讀取節點資料方法,packet[IP].src;packet[IP].dst
packet['Raw'].load#PY2讀取節點資料方法,PY3也應該可以
lambda="lambda pcap:IP in pcap and UDP in pcap and pcap[IP].src=='192.168.1.1' and pcap[UDP].sport==80"
results=pcaps.filter(eval(lambda))#lambda是一種表示式,這裡使用字串,也可以不用eval,直接寫表示式,然後返回經過篩選的資料包

python解析資料包十分佔用記憶體,建議先用tshark命令列預處理篩選一遍資料包再進行PYTHON處理

cmd_filter="%s && ip.src==%s && ip.dst==%s && %s.srcport==%s && %s.port==%s"% \
                (Node['proto'].lower(),Node['src'],Node['dst'],Node['proto'].lower(),Node['sport'],Node['proto'].lower(),Node['dport'])
      
os.system('start /WAIT "" "%s\tshark" -r "%s" -R "%s" -w "%s"'%(Wireshark_path,pcap_filename,cmd_filter,Temp_pcap_File))

然後在處理Temp_pcap_File檔案就好了