构建故障分析平台采用python实现抓包分析数据包

简介:

前言:

        同事今天和我说,他现在的任务在做一个头疼的问题,说时尚了点,就是用自动化解脱心碎的运维杂事,他这边刚入职,貌似是带领一帮小弟解决别人搞不定的问题,但是有些业务部够单纯,把事直接抛给我同事这边。。。 很无敌吧。


所以计划做一个自动化平台,可以去问题端去抓数据,然后分析数据包,入库,邮件通知。   这个是自动化完成的。


我这里就说下,我的解决思路和开发思路:

工具:

pcap dpkt saltsatck mysql tornado tcpdump

pcap               是用来抓包

dpkt               是用来解析数据包的

celery              异步任务


实现两大功能,用户他自己抓包,然后上传到页面上,然后我后端解析后,返回结果。

用户在平台上提交问题服务器的ip,并选定测试类型,我这里会到服务端跑用python的pcap抓包并分析结果,把结果上报到平台。


更多内容,请关注下我的个人博客,blog.xiaorui.cc


关于自动抓包分析,以前和同事做过处理dns攻击的,方案流程和第三方的工具和我上述是一样的。

遇到攻击,会分析dns的攻击的特征,然后再黑洞系统注射特征码禁止。


需要注意的是,在抓数据的时候,可能会产生堵塞,尤其是pcap,dpkt这东西,需要在后台自己的玩。这个时候就需要用celery把抓包分析包的任务放在后台执行。 你要是觉得subprocess合理的话,也可以用用subprocess 的pipe的,但是个人觉得也是个办法 ,更简单的方法是用tcpdump -w 写到一个文件里面,然后用dpkt去解析,这样的话,也不用pcap去解析啦。




安装是相当的简单,不管是centos和ubuntu都已经有默认的源了,我这里用的是ubuntu的开发机跑测试:

1
2
3
4
apt- get  install python-libpcap
apt- get  install libpcap-dev
apt- get  install python-dpkt
pip install pypcap


原文:http://rfyiamcool.blog.51cto.com/1030776/1374484

下面是抓取http数据包的写法,大家可以慢慢取值,慢慢分拆数据。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#coding:utf- 8
import  pcap
import  dpkt
import  sys
aaa= 'a'
bbb= 'b'
pc=pcap.pcap()    #注,参数可为网卡名,如eth0
pc.setfilter( 'tcp port 80' )    #设置监听过滤器
for  ptime,pdata  in  pc:    #ptime为收到时间,pdata为收到数据
     p=dpkt.ethernet.Ethernet(pdata)
     if  p.data.__class__.__name__== 'IP' :
         ip= '%d.%d.%d.%d' %tuple(map(ord,list(p.data.dst)))
#        print ip
         if  p.data.data.__class__.__name__== 'TCP' :
             if  p.data.data.dport== 80 :
                 sStr1 = p.data.data.data
                 sStr2 =  'Host: '
                 sStr3 =  'Connection'
                 sStr4 =  'GET /'
                 sStr5 =  ' HTTP/1.1'
                 nPos = sStr1.find(sStr3)
                 nPosa = sStr1.find(sStr5)
                 for  in  range(sStr1.find(sStr2)+ 6 ,nPos- 1 ):
                     aaa=sStr1[sStr1.find(sStr2)+ 6 :n]
                 for  in  range(sStr1.find(sStr4)+ 4 ,nPosa+ 1 ):
                     bbb=sStr1[sStr1.find(sStr4)+ 4 :n]
                 ccc=aaa+bbb
                 print ccc



wKiom1MgdWTAQvUhAAZy0kZJ1mU315.jpg

用wireshark瞅瞅:

wKiom1MgfnejrxTcAAV6QvLVjJk276.jpg

原文:http://rfyiamcool.blog.51cto.com/1030776/1374484

我前两天在做lvs操作平台的时候,额外加了一个针对vrrp的分析数据模块,大家可以举一反三在改改!


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#coding:utf- 8
#xiaorui.cc
#http: //rfyiamcool.blog.51cto.com/
import  pcap
import  dpkt
import  binascii
import  struct
a=pcap.pcap()
a.setfilter( 'vrrp' )   # 可以是 'tcp'  'udp'  'port 80' 等过滤用的
for  i,j  in  a:
     tem=dpkt.ethernet.Ethernet(j)
     print ( "11111%s %x" ,i,tem)
     src= '%d.%d.%d.%d'  % tuple(map(ord,list(tem.data.src)))
     dst= '%d.%d.%d.%d'  % tuple(map(ord,list(tem.data.dst)))
     print tem.data.tos
     print tem.data.sum
     print tem.data.len
     print tem.data.ttl
     print tem.data.id
#    print tem.data.data
     print tem.data.data.priority
     print src
     print dst


wKioL1MgdvjS2-R1AAbu-kg218M276.jpg


wKioL1MgfbSBvvZqAAY17azTPjc454.jpg


通过获取的数据,可以得知对端的vrrp情况,比如tos src dst vrrp主信息 !



好了,就这样了,过段时间再看看同事进行的如何,要是有新发现,给分享给大家的。





 本文转自 rfyiamcool 51CTO博客,原文链接:http://blog.51cto.com/rfyiamcool/1374484,如需转载请自行联系原作者


目录
打赏
0
0
0
0
349
分享
相关文章
1688商品详情API实战:Python调用全流程与数据解析技巧
本文介绍了1688电商平台的商品详情API接口,助力电商从业者高效获取商品信息。接口可返回商品基础属性、价格体系、库存状态、图片描述及商家详情等多维度数据,支持全球化语言设置。通过Python示例代码展示了如何调用该接口,帮助用户快速上手,适用于选品分析、市场研究等场景。
1688平台开放接口实战:如何通过API获取店铺所有商品数据(Python示列)
本文介绍如何通过1688开放平台API接口获取店铺所有商品,涵盖准备工作、接口调用及Python代码实现,适用于商品同步与数据监控场景。
|
19天前
|
基于 Python 跳表算法的局域网网络监控软件动态数据索引优化策略研究
局域网网络监控软件需高效处理终端行为数据,跳表作为一种基于概率平衡的动态数据结构,具备高效的插入、删除与查询性能(平均时间复杂度为O(log n)),适用于高频数据写入和随机查询场景。本文深入解析跳表原理,探讨其在局域网监控中的适配性,并提供基于Python的完整实现方案,优化终端会话管理,提升系统响应性能。
41 4
|
1月前
|
分析参数顺序对Python requests库进行POST请求的影响。
最后,尽管理论上参数顺序对POST请求没影响,但编写代码时仍然建议遵循一定的顺序和规范,比如URL总是放在第一位,随后是data或json,最后是headers,这样可以提高代码的可读性和维护性。在处理复杂的请求时,一致的参数顺序有助于调试和团队协作。
103 9
分析http.client与requests在Python中的性能差异并优化。
合理地选择 `http.client`和 `requests`库以及在此基础上优化代码,可以帮助你的Python网络编程更加顺利,无论是在性能还是在易用性上。我们通常推荐使用 `requests`库,因为它的易用性。对于需要大量详细控制的任务,或者对性能有严格要求的情况,可以考虑使用 `http.client`库。同时,不断优化并管理员连接、设定合理超时和重试都是提高网络访问效率和稳定性的好方式。
91 19
在Python中对数据点进行标签化
本文介绍了如何在Python中使用Matplotlib和Seaborn对数据点进行标签化,提升数据可视化的信息量与可读性。通过散点图示例,展示了添加数据点标签的具体方法。标签化在标识数据点、分类数据可视化及趋势分析中具有重要作用。文章强调了根据需求选择合适工具,并保持图表清晰美观的重要性。
74 15

热门文章

最新文章

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等