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

    文章

    11522

    浏览量

    214272
  • python
    +关注

    关注

    56

    文章

    4831

    浏览量

    87361
  • Shell
    +关注

    关注

    1

    文章

    372

    浏览量

    24272

原文标题:使用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

    有关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

    完全自学指南Python爬虫BeautifulSoup详解

    完全自学指南Python爬虫BeautifulSoup详解
    发表于 09-07 08:55 ?39次下载
    完全自学指南<b class='flag-5'>Python</b>爬虫BeautifulSoup<b class='flag-5'>详解</b>

    Python3如何对CSV进行写入和读写

    这里考虑把API、参数、以及预期结果预行在格式化的CSV里保存,利用csv组件从CSV里读取URL、参数以及预期结果,Requests组件发起请求,将响应结果与预期结果进行比对,最后把比对结果写到结果
    发表于 05-11 15:49 ?5933次阅读
    <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 ?2342次阅读

    python经典实例详解

    python经典实例详解说明。
    发表于 04-26 10:14 ?32次下载

    [源代码]Python算法详解

    [源代码]Python算法详解[源代码]Python算法详解
    发表于 06-06 17:50 ?8次下载

    虹科分享 | NetFlow数据能够为网络故障排除提供什么? | 网络流量监控

    虹科分享NetFlow数据能够为网络故障排除提供什么?NetFlow是网络设备中标准化的功能,用于收集流量测量值并将其导出到另一个系统进行分析。对该流数据的分析通知网络管理器网络是如何
    的头像 发表于 04-20 09:26 ?946次阅读
    虹科分享 | <b class='flag-5'>NetFlow</b><b class='flag-5'>数据</b>能够为网络故障排除提供什么? | 网络流量监控

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

    Rows 是一个专门用于操作表格的第三方Python模块。 只要通过 Rows 读取 csv 文件,她就能生成可以被计算的 Python 对象。 相比于 pandas 的 pd.read_cs
    的头像 发表于 10-21 10:18 ?1004次阅读