python分析数据包_Python解析pcap数据包
Post Views:
29,789
零、前言
歷時數月,終于結束了考研初試,Blog也很長時間沒有更新了,期間還是有些小伙伴來Blog看文章很是感動。以后一定會堅持更新,盡量給大家推送一些干貨。這次發的是Python解析pcap數據包的腳本,其實用wireshark就能解決大部分的數據包分析問題了,但有時候會遇到分析大量數據包或從大量數據包中提取某個信息的需求,這時用wireshark一個一個的打開就不現實了,這時就要心中默念“Python大法好!”。
一、pcap數據包格式
注意,這里是要解析pcap數據包格式的文件,而現在wireshark都是默認保存pcapng類型的文件,pcapng下一代文件格式,是為了突破現有廣泛使用但是受限的PCAP格式的一個嘗試。我們使用的庫scapy,要是解析pcapng或其他類型的數據包文件可能會報錯。另外scapy是不自帶的,需要下載安裝,如果安裝不成功可以在kali下直接運行。
網絡模型大家應該有所了解,按不同的標準有七層和五層的分法,wireshark就是按不同層次解析數據
同理scapy也是如此。下面這段代碼打開數據包后是這樣的
def test(filepath):
pcaps = rdpcap(filepath)
for p in pcaps:
print p.show()
break
不過scapy主要是分為Ethernet、IP、TCP、Raw這四層,每一層都有每一層的關鍵字,可以利用鍵值對的方式直接讀取相應的內容。
二、Python代碼
代碼寫的比較糙,大家可以根據的自己的需要再改進
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from scapy.all import *
import os
import re
import shutil
import time
rootpath = "/root/pcap/"
def openfiles(path):
filelist = []
files = os.listdir(path)
for f in files:
filelist .append(f)
return filelist
def writefile(filename,stringlist):
f = open("/root/result/"+filename+".txt","w")
for i in stringlist:
f.write(i+"\n")
f.close()
shutil.copy(rootpath+filename,"/root/result/"+filename)
def search(filename):
filepath = rootpath+filename
stringlist = []
pcaps = rdpcap(filepath)
for p in pcaps:
for f in p.payload.payload.fields_desc:
fvalue = p.payload.getfieldval(f.name)
reprval = f.i2repr(p.payload,fvalue) #轉換成十進制字符串
if str(f.name)=="src" and reprval=="10.250.109.12": #指定特定的ip地址
for f2 in p.payload.payload.payload.payload.fields_desc: #payload向下解析一層
#print f2.name
if f2.name=="load"or f2.name=="data":
fvalue = p.payload.getfieldval(f2.name)
reprval = f2.i2repr(p.payload,fvalue)
refind = re.compile(r'[A-Fa-f0-9]{32}') #根據自己的需求設置正則
temp = refind.findall(reprval)
stringlist.extend(temp)
if len(stringlist)>0:
writefile(filename,stringlist) #將解析結果和對應的pcap包保存下來
if __name__=="__main__":
filelist = openfiles(rootpath)
for file in filelist:
print file
search(file)
print "DONE!"
總結
以上是生活随笔為你收集整理的python分析数据包_Python解析pcap数据包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机在工程设计的应用,计算机辅助软件和
- 下一篇: firefox浏览器批处理插件imacr