<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

python解析netflow數據到csv的流程詳解

網絡技術干貨圈 ? 來源:CSDN ? 2024-05-01 11:18 ? 次閱讀

python解析netflow數據到csv

本文主要講解了linux下通過tcpdump抓取netflow數據包,并將其導入到wireshark進行解析,然后通過wireshark導出數據為json文件,再通過python腳本將其解析為csv文件以便做數據分析。

使用linux自帶的tcpdump抓包

在linux的shell下使用tcpdump包抓取指定端口下的數據包,netflow流量的端口默認為9996端口。

tcpdumpudpport9996-wnetflow_data.cap

在shell打上該命令linux便會開始抓包,按Ctrl+C則會停止抓取并將數據寫入netflow_data.cap文件,由于netflow的數據量特別大,所以如果沒有過濾出指定ip的netflow流量,建議不要取太長時間(毫不夸張的說,一個大型企業的netflow流量10分鐘的netflow數據往往可以使這個文件達到好幾個G,解析成json文件后甚至達到幾十G,這已經遠遠超出了一般程序可以解析處理的范圍)。

可以先使用

tcpdumpudpport9996|grepxxx.xxx.xxx.xxx

測試檢查是否可以獲取對應的數據,如果長時間沒有響應,這表明數據數據包可能沒有到達本端,需要檢查設備配置或者防火墻策略。

在linux下使用該命令可以查看對應端口下的數據包,通過grep可以過濾出自己的想要查看的ip

將抓好的包導入wireshark

抓取下來的包直接用wireshark打開(windows版和Mac版都可以)。如下圖所示:

44331096-0226-11ef-a297-92fbcf53809c.png
443e49de-0226-11ef-a297-92fbcf53809c.png

如下圖所示,隨便點擊一個數據包

444b95e4-0226-11ef-a297-92fbcf53809c.jpg

將數據導出為json文件

在wireshark中導出數據到json文件,以便于我們使用python對數據進行解析。

44560830-0226-11ef-a297-92fbcf53809c.jpg

解析數據到csv

將導出好的json文件上傳到安裝了python環境的終端上(例如Linux或Mac),與如下腳本(腳本名稱netflow_to_csv.py)放置在同一目錄下

#_*_coding:utf-8_*_

importjson

data_file='./data.json'#wireshark導出數據
output_file='./netflow.csv'#解析后文件名

withopen(data_file,'r')asf:
data_list=json.loads(f.read())


defget_the_flow_list(data_item):
'''
["Flow1":{
"cflow.srcaddr":"xxx.xxx.xxx.xxx",
"cflow.dstaddr":"xxx.xxx.xxx.xxx",
"cflow.protocol":"2",
"cflow.srcport":"0",
"cflow.dstport":"17",
"cflow.inputint":"5",
"cflow.outputint":"0",
"cflow.octets":"36",
"cflow.packets":"1"
},
"Flow2":{
"cflow.srcaddr":"xxx.xxx.xxx.xxx",
"cflow.dstaddr":"xxx.xxx.xxx.xxx",
"cflow.protocol":"2",
"cflow.srcport":"0",
"cflow.dstport":"17",
"cflow.inputint":"5",
"cflow.outputint":"0",
"cflow.octets":"36",
"cflow.packets":"1"
}
]
'''
cflow=data_item.get('_source').get('layers').get('cflow')
flowSet_k=[kfork,vincflow.items()if'FlowSet'ink][0]
flow_data_list=[]
#flow_list=[{f:v}forf,vincflow.get(flowSet_k).items()if'Flow'inf]
fork,vincflow.get(flowSet_k).items():
if'Flow'notink:
continue
srcaddr=v.get("cflow.srcaddr")
dstaddr=v.get("cflow.dstaddr")
protocol=v.get("cflow.protocol")
srcport=v.get("cflow.srcport")
dstport=v.get("cflow.dstport")
inputint=v.get("cflow.inputint")
outputint=v.get("cflow.outputint")
octets=v.get("cflow.octets")
packets=v.get("cflow.packets")
flow_data_list.append((k,srcaddr,dstaddr,protocol,srcport,dstport,inputint,outputint,octets,packets))
returnflow_data_list


defdomain():
withopen(output_file,'w')asf:
title='No,Flow_id,srcaddr,dstaddr,protocol,srcport,dstport,inputint,outputint,octets,packets
'
f.write(title)
i=0
fordata_itemindata_list:
i=i+1
try:
flow_list=get_the_flow_list(data_item)
forflow_iteminflow_list:
line='%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s
'%(i,flow_item[0],flow_item[1],flow_item[2],flow_item[3],flow_item[4],flow_item[5],flow_item[6],flow_item[7],flow_item[8],flow_item[9])
f.write(line)
exceptExceptionase:
print'template'
printe
continue

if__name__=='__main__':
domain()

運行解析腳本

在shell下運行如下命令即可。

pythonnetflow_to_csv.py

解析結果

最終運行結果如下圖所示:

44655074-0226-11ef-a297-92fbcf53809c.png


審核編輯:劉清
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11022

    瀏覽量

    207047
  • python
    +關注

    關注

    52

    文章

    4698

    瀏覽量

    83610
  • Shell
    +關注

    關注

    1

    文章

    358

    瀏覽量

    22947

原文標題:使用python腳本解析netflow抓包數據到csv

文章出處:【微信號:網絡技術干貨圈,微信公眾號:網絡技術干貨圈】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Labview采集的串口數據存儲在csv文件中

    求教怎么將Labview采集的串口數據存儲csv文件中并已一定的格式保存?
    發表于 11-28 22:07

    Python存儲數據詳解

    人閱讀和編寫,同時也易于機器解析和生成,并有效地提升網絡傳輸效率。2. csv文件Python可以將數據存儲為CSV文件格式,我們可以用ex
    發表于 03-29 15:47

    csv文件中的數據

    我有一臺N9912 FieldFox,可以從設備中檢索csv文件。 csv文件未聲明重要參數,例如分辨率帶寬。有可能獲得完整的儀器狀態和數據作為我可以閱讀的文本文件嗎?我確實將儀器狀態和數據
    發表于 11-26 09:14

    TensorFlow csv文件讀取數據(代碼實現)詳解

    大多數人了解 Pandas 及其在處理大數據文件方面的實用性。TensorFlow 提供了讀取這種文件的方法。前面章節中,介紹了如何在 TensorFlow 中讀取文件,本節將重點介紹如何從 CSV
    發表于 07-28 14:40

    有關Python解析

    搜了很多歷年藍橋杯真題解答,大多都是Java,C++,C這些語言編寫的代碼解析。Python解析的幾乎,甚至可以說沒有。而當下Python又這么火熱,藍橋杯也出了
    發表于 07-29 08:39

    python基礎語法及流程控制

    爬蟲復習1.python基礎python基礎語法 流程控制 函數封裝2.防爬措施整體防爬User-AgentrefererIP代理池Cookie代理池 各自防爬數據內部動態加載網頁設置
    發表于 08-31 07:41

    MCU通過串口發送數據WIFI模塊上具體流程包括哪些

    、連接到MySQL數據庫,將接收到的數據寫入數據庫對應表中六、Python利用flask框架搭建網頁七、Python連接對應的MySQL
    發表于 12-08 07:18

    請問CH376S如何讀取CSV中的數據,解析出來?

    目前有一個新需求,客戶把一些設置好的數據存入在CSV文件中,需要通過單片機讀取這些數據,并逐個解析出來,更新后再寫入CSV文件,
    發表于 10-11 07:39

    csv大文件打開器_csv文件查看器綠色版

      csv文件怎么打開?PC6推薦你用這款小巧的CSVFileView來查看csv文件,用它瀏覽csv數據相當快捷、輕便。   一般我們都可以用excel打開
    發表于 09-13 17:45 ?0次下載

    Python3如何對CSV進行寫入和讀寫

    這里考慮把API、參數、以及預期結果預行在格式化的CSV里保存,利用csv組件從CSV里讀取URL、參數以及預期結果,Requests組件發起請求,將響應結果與預期結果進行比對,最后把比對結果寫到結果
    發表于 05-11 15:49 ?5495次閱讀
    <b class='flag-5'>Python</b>3如何對<b class='flag-5'>CSV</b>進行寫入和讀寫

    如何通過pandas讀取csv文件指定的前幾行?

    今天小編給大家分享一篇Python技術開發方面的文章,如何實現pandas讀取csv文件指定的前幾行,喜歡Python開發的小伙伴下面就隨小編一起來了解一下吧。
    發表于 09-19 17:43 ?16次下載

    Python中BeatifulSoap解析HTML的三個實用小技巧詳解

    BeautifulSoup是Python爬蟲應用解析Html的利器,是Python三方模塊bs4中提供的進行HTML解析的類,可以認為是一個HTML
    的頭像 發表于 04-15 13:51 ?1853次閱讀

    python經典實例詳解

    python經典實例詳解說明。
    發表于 04-26 10:14 ?32次下載

    [源代碼]Python算法詳解

    [源代碼]Python算法詳解[源代碼]Python算法詳解
    發表于 06-06 17:50 ?0次下載

    Python教你用 Rows 快速操作csv文件

    Rows 是一個專門用于操作表格的第三方Python模塊。 只要通過 Rows 讀取 csv 文件,她就能生成可以被計算的 Python 對象。 相比于 pandas 的 pd.read_cs
    的頭像 發表于 10-21 10:18 ?288次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>