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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介:

前言:

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


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


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

工具:

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,如需转载请自行联系原作者


相关文章
|
23天前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
1月前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
47 4
|
1月前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
1月前
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。
|
21天前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
22天前
|
Python 容器
[oeasy]python048_用变量赋值_连等赋值_解包赋值_unpack_assignment _
本文介绍了Python中变量赋值的不同方式,包括使用字面量和另一个变量进行赋值。通过`id()`函数展示了变量在内存中的唯一地址,并探讨了变量、模块、函数及类类型的地址特性。文章还讲解了连等赋值和解包赋值的概念,以及如何查看已声明的变量。最后总结了所有对象(如变量、模块、函数、类)都有其类型且在内存中有唯一的引用地址,构成了Python系统的基石。
28 5
|
21天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
54 3
|
28天前
|
数据采集 XML 存储
构建高效的Python网络爬虫:从入门到实践
本文旨在通过深入浅出的方式,引导读者从零开始构建一个高效的Python网络爬虫。我们将探索爬虫的基本原理、核心组件以及如何利用Python的强大库进行数据抓取和处理。文章不仅提供理论指导,还结合实战案例,让读者能够快速掌握爬虫技术,并应用于实际项目中。无论你是编程新手还是有一定基础的开发者,都能在这篇文章中找到有价值的内容。
|
1月前
|
Python
Python的模块和包
总之,模块和包是 Python 编程中非常重要的概念,掌握它们可以帮助我们更好地组织和管理代码,提高开发效率和代码质量
40 5
|
1月前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性