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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 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,如需转载请自行联系原作者


相关文章
|
4天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
7天前
|
数据采集 缓存 定位技术
网络延迟对Python爬虫速度的影响分析
网络延迟对Python爬虫速度的影响分析
|
8天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
利用Python和TensorFlow构建简单神经网络进行图像分类
利用Python和TensorFlow构建简单神经网络进行图像分类
28 3
|
8天前
|
开发框架 前端开发 JavaScript
利用Python和Flask构建轻量级Web应用的实战指南
利用Python和Flask构建轻量级Web应用的实战指南
26 2
|
8天前
|
机器学习/深度学习 JSON API
Python编程实战:构建一个简单的天气预报应用
Python编程实战:构建一个简单的天气预报应用
20 1
|
8天前
|
机器学习/深度学习 数据采集 搜索推荐
利用Python和机器学习构建电影推荐系统
利用Python和机器学习构建电影推荐系统
23 1
|
9天前
|
数据采集 存储 JSON
Python爬虫开发中的分析与方案制定
Python爬虫开发中的分析与方案制定
|
11天前
|
存储 机器学习/深度学习 搜索推荐
Python编程入门:从零开始构建你的第一个程序
【10月更文挑战第32天】本文旨在通过浅显易懂的方式引导编程新手进入Python的世界。我们将一起探索Python的基础语法,并通过实例学习如何构建一个简单的程序。文章将不直接展示代码,而是鼓励读者在阅读过程中自行尝试编写,以加深理解和记忆。无论你是编程初学者还是希望巩固基础知识的开发者,这篇文章都将是你的良师益友。让我们开始吧!
|
4天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
4天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!