0
      • 聊天消息
      • 系統(tǒng)消息
      • 評論與回復(fù)
      登錄后你可以
      • 下載海量資料
      • 學(xué)習(xí)在線課程
      • 觀看技術(shù)視頻
      • 寫文章/發(fā)帖/加入社區(qū)
      會員中心
      电子发烧友
      开通电子发烧友VIP会员 尊享10大特权
      海量资料免费下载
      精品直播免费看
      优质内容免费畅学
      课程9折专享价
      創(chuàng)作中心

      完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

      3天內(nèi)不再提示

      python解析netflow數(shù)據(jù)到csv的流程詳解

      網(wǎng)絡(luò)技術(shù)干貨圈 ? 來源:CSDN ? 2024-05-01 11:18 ? 次閱讀

      python解析netflow數(shù)據(jù)到csv

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

      使用linux自帶的tcpdump抓包

      在linux的shell下使用tcpdump包抓取指定端口下的數(shù)據(jù)包,netflow流量的端口默認(rèn)為9996端口。

      tcpdumpudpport9996-wnetflow_data.cap
      

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

      可以先使用

      tcpdumpudpport9996|grepxxx.xxx.xxx.xxx
      

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

      在linux下使用該命令可以查看對應(yīng)端口下的數(shù)據(jù)包,通過grep可以過濾出自己的想要查看的ip

      將抓好的包導(dǎo)入wireshark

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

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

      如下圖所示,隨便點擊一個數(shù)據(jù)包

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

      將數(shù)據(jù)導(dǎo)出為json文件

      在wireshark中導(dǎo)出數(shù)據(jù)到j(luò)son文件,以便于我們使用python對數(shù)據(jù)進(jìn)行解析。

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

      解析數(shù)據(jù)到csv

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

      #_*_coding:utf-8_*_
      
      importjson
      
      data_file='./data.json'#wireshark導(dǎo)出數(shù)據(jù)
      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
      

      解析結(jié)果

      最終運行結(jié)果如下圖所示:

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


      審核編輯:劉清
      聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
      • Linux
        +關(guān)注

        關(guān)注

        87

        文章

        11465

        瀏覽量

        212835
      • python
        +關(guān)注

        關(guān)注

        56

        文章

        4825

        瀏覽量

        86226
      • Shell
        +關(guān)注

        關(guān)注

        1

        文章

        372

        瀏覽量

        23997

      原文標(biāo)題:使用python腳本解析netflow抓包數(shù)據(jù)到csv

      文章出處:【微信號:網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號:網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

      收藏 人收藏

        評論

        相關(guān)推薦
        熱點推薦

        Labview采集的串口數(shù)據(jù)存儲在csv文件中

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

        Python存儲數(shù)據(jù)詳解

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

        csv文件中的數(shù)據(jù)

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

        有關(guān)Python解析

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

        python基礎(chǔ)語法及流程控制

        爬蟲復(fù)習(xí)1.python基礎(chǔ)python基礎(chǔ)語法 流程控制 函數(shù)封裝2.防爬措施整體防爬User-AgentrefererIP代理池Cookie代理池 各自防爬數(shù)據(jù)內(nèi)部動態(tài)加載網(wǎng)頁設(shè)置
        發(fā)表于 08-31 07:41

        MCU通過串口發(fā)送數(shù)據(jù)WIFI模塊上具體流程包括哪些

        、連接到MySQL數(shù)據(jù)庫,將接收到的數(shù)據(jù)寫入數(shù)據(jù)庫對應(yīng)表中六、Python利用flask框架搭建網(wǎng)頁七、Python連接對應(yīng)的MySQL
        發(fā)表于 12-08 07:18

        請問CH376S如何讀取CSV中的數(shù)據(jù),解析出來?

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

        完全自學(xué)指南Python爬蟲BeautifulSoup詳解

        完全自學(xué)指南Python爬蟲BeautifulSoup詳解
        發(fā)表于 09-07 08:55 ?39次下載
        完全自學(xué)指南<b class='flag-5'>Python</b>爬蟲BeautifulSoup<b class='flag-5'>詳解</b>

        Python3如何對CSV進(jìn)行寫入和讀寫

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

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

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

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

        BeautifulSoup是Python爬蟲應(yīng)用解析Html的利器,是Python三方模塊bs4中提供的進(jìn)行HTML解析的類,可以認(rèn)為是一個HTML
        的頭像 發(fā)表于 04-15 13:51 ?2267次閱讀

        python經(jīng)典實例詳解

        python經(jīng)典實例詳解說明。
        發(fā)表于 04-26 10:14 ?32次下載

        [源代碼]Python算法詳解

        [源代碼]Python算法詳解[源代碼]Python算法詳解
        發(fā)表于 06-06 17:50 ?8次下載

        虹科分享 | NetFlow數(shù)據(jù)能夠為網(wǎng)絡(luò)故障排除提供什么? | 網(wǎng)絡(luò)流量監(jiān)控

        虹科分享NetFlow數(shù)據(jù)能夠為網(wǎng)絡(luò)故障排除提供什么?NetFlow是網(wǎng)絡(luò)設(shè)備中標(biāo)準(zhǔn)化的功能,用于收集流量測量值并將其導(dǎo)出到另一個系統(tǒng)進(jìn)行分析。對該流數(shù)據(jù)的分析通知網(wǎng)絡(luò)管理器網(wǎng)絡(luò)是如何
        的頭像 發(fā)表于 04-20 09:26 ?840次閱讀
        虹科分享 | <b class='flag-5'>NetFlow</b><b class='flag-5'>數(shù)據(jù)</b>能夠為網(wǎng)絡(luò)故障排除提供什么? | 網(wǎng)絡(luò)流量監(jiān)控

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

        Rows 是一個專門用于操作表格的第三方Python模塊。 只要通過 Rows 讀取 csv 文件,她就能生成可以被計算的 Python 對象。 相比于 pandas 的 pd.read_cs
        的頭像 發(fā)表于 10-21 10:18 ?878次閱讀

        電子發(fā)燒友

        中國電子工程師最喜歡的網(wǎng)站

        • 2931785位工程師會員交流學(xué)習(xí)
        • 獲取您個性化的科技前沿技術(shù)信息
        • 參加活動獲取豐厚的禮品