python实现linux下抓包并存库功能


Posted in Python onJuly 18, 2018

最近项目需要抓包功能,并且抓包后要对数据包进行存库并分析。抓包想使用tcpdump来完成,但是tcpdump抓包之后只能保存为文件,我需要将其保存到数据库。想来想去shell脚本似乎不太好实现,于是用了比较热门的python来实现。不得不说,python丰富的第三方库确实是很强大,下面是具体的功能代码。

from apscheduler.scheduler import Scheduler
import os
import sys
import time
import MySQLdb
import ConfigParser
import Logger

def main():

  logger = Logger.Logger(logname='flowstat.log', loglevel=1, logger='flowstat').getlog()

  try:
    cf = ConfigParser.ConfigParser()
    cf.read('./flowstat.conf')

    filterNet1 = cf.get('packet', 'filterNet1')
    filterNet2 = cf.get('packet', 'filterNet2')
    packetFile = cf.get('packet', 'packetFile')

    db_host = cf.get('db', 'host')
    db_user = cf.get('db', 'user')
    db_passwd = cf.get('db', 'passwd')
    db_dbname = cf.get('db', 'dbname')

    conn = MySQLdb.connect(host=db_host, user=db_user, passwd=db_passwd, db=db_dbname, port=3306)

    os.system('nohup ./capturePacket.sh ' + filterNet1 + ' ' + filterNet2 + ' ' + packetFile + ' &')
  except Exception, e:
    logger.error(e)
    sys.exit(1)


  sched = Scheduler(daemonic = False)
  @sched.cron_schedule(day_of_week='0-4', hour='*', minute='0-59', second='*/60')
  def packagestat_job():
    logger.debug('stat package' + ' ' + time.strftime("%Y-%m-%d %H:%M:%S"))
    try:
      fos = open(packetFile, 'r+')
      lines = fos.readlines()
      values = []
      for line in lines:
        arr = line.split(',')
        if len(arr) > 4:
          values.append((arr[0].strip(), arr[2].strip(), arr[3].strip(), arr[4].strip()))

      if len(values) > 0:
        cur = conn.cursor()
        cur.executemany('insert into tbpk_packet(TimesMacs, LengthIps, Seq, Ack) values(%s,%s,%s,%s)', values)
        conn.commit()
        cur.close()

      fos.truncate(0)
      fos.close()
    except Exception, e3:
      Logger.error(e3)


  sched.start()

  while 1:
    time.sleep(60)

  conn.close()

if __name__ == '__main__':
  main()

shell脚本
#!/bin/sh
tcpdump -i eth0 -l >> *.txt

上面的功能涉及到了文件操作,数据库操作,定时任务等几个功能点。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用实例解释Python中的继承和多态的概念
Apr 27 Python
Python实现文件内容批量追加的方法示例
Aug 29 Python
利用python 更新ssh 远程代码 操作远程服务器的实现代码
Feb 08 Python
Python基于jieba库进行简单分词及词云功能实现方法
Jun 16 Python
对Tensorflow中的变量初始化函数详解
Jul 27 Python
Python基于递归算法求最小公倍数和最大公约数示例
Jul 27 Python
python搜索包的路径的实现方法
Jul 19 Python
使用pyqt5 tablewidget 单元格设置正则表达式
Dec 13 Python
Python读取二进制文件代码方法解析
Jun 22 Python
python实现磁盘日志清理的示例
Nov 05 Python
使用BeautifulSoup4解析XML的方法小结
Dec 07 Python
opencv用VS2013调试时用Image Watch插件查看图片
Jul 26 Python
python调用tcpdump抓包过滤的方法
Jul 18 #Python
Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
Jul 18 #Python
解决Python3中的中文字符编码的问题
Jul 18 #Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
Jul 18 #Python
python 将print输出的内容保存到txt文件中
Jul 17 #Python
python 实现对数据集的归一化的方法(0-1之间)
Jul 17 #Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
Jul 17 #Python
You might like
PHP 用数组降低程序的时间复杂度
2009/12/04 PHP
PHP 开发环境配置(Zend Server安装)
2010/04/28 PHP
让PHP支持断点续传的源码
2010/05/16 PHP
CodeIgniter输出中文乱码的两种解决办法
2014/06/12 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
2014/06/29 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
2015/04/15 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
2016/02/27 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
JS中把字符转成ASCII值的函数示例代码
2013/11/21 Javascript
JS在可编辑的div中的光标位置插入内容的方法
2014/11/20 Javascript
coffeescript使用的方式汇总
2015/08/05 Javascript
Knockout自定义绑定创建方法
2015/12/26 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
全面解析JavaScript中“&&”和“||”操作符(总结篇)
2016/07/18 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
微信小程序之拖拽排序(代码分享)
2017/01/21 Javascript
JavaScript获取tr td 的三种方式全面总结(推荐)
2017/08/15 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
django_orm查询性能优化方法
2018/08/20 Python
python 字典操作提取key,value的方法
2019/06/26 Python
10款最好的Python开发编辑器
2019/07/03 Python
python列表每个元素同增同减和列表元素去空格的实例
2019/07/20 Python
Python的形参和实参使用方式
2019/12/24 Python
Python中qutip用法示例详解
2020/10/02 Python
HTML5 直播疯狂点赞动画实现代码 附源码
2020/04/14 HTML / CSS
Gloeilampgoedkoop荷兰:在线购买灯泡
2019/02/16 全球购物
巴基斯坦购物网站:Goto
2019/03/11 全球购物
西班牙香水和化妆品连锁店:Druni
2019/05/05 全球购物
大学生毕业自荐信
2013/10/10 职场文书
困难补助申请报告
2015/05/19 职场文书
测量JavaScript函数的性能各种方式对比
2021/04/27 Javascript
Nginx实现负载均衡的项目实践
2022/03/18 Servers
PostgreSQL之连接失败的问题及解决
2023/05/08 PostgreSQL