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根据日期返回星期几的方法
Jul 06 Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
Jan 11 Python
Python使用matplotlib实现基础绘图功能示例
Jul 03 Python
Python3.5 处理文本txt,删除不需要的行方法
Dec 10 Python
Django 多环境配置详解
May 14 Python
利用pyecharts实现地图可视化的例子
Aug 12 Python
Python实现串口通信(pyserial)过程解析
Sep 25 Python
Pandas-Cookbook 时间戳处理方式
Dec 07 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
Feb 20 Python
Python新手如何进行闭包时绑定变量操作
May 29 Python
Python filter()及reduce()函数使用方法解析
Sep 05 Python
利用python 读写csv文件
Sep 10 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
全国FM电台频率大全 - 19 广东省
2020/03/11 无线电
PHP 第二节 数据类型之转换
2012/04/28 PHP
php表单敏感字符过滤类
2014/12/08 PHP
PHP实现加强版加密解密类实例
2015/07/29 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
javascript 特性检测并非浏览器检测
2010/01/15 Javascript
!DOCTYPE声明对JavaScript的影响分析
2010/04/12 Javascript
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
JS清空多文本框、文本域示例代码
2014/02/24 Javascript
Node.js中使用Buffer编码、解码二进制数据详解
2014/08/16 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
JavaScript语言精粹经典实例(整理篇)
2016/06/07 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
2016/07/05 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
2016/07/20 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
原生js实现放大镜效果
2017/01/11 Javascript
nodejs中全局变量的实例解析
2017/03/07 NodeJs
vue组件中的数据传递方法
2018/05/14 Javascript
Vue中jsx不完全应用指南小结
2019/11/01 Javascript
vue项目中定义全局变量、函数的几种方法
2019/11/08 Javascript
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
Python多图片合并PDF的方法
2019/01/03 Python
使用matplotlib中scatter方法画散点图
2019/03/19 Python
python代理工具mitmproxy使用指南
2019/07/04 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
2020/01/03 Python
django model object序列化实例
2020/03/13 Python
独特的礼品和创新的科技产品:The Grommet
2018/02/24 全球购物
购买中国最好的电子产品:Geekbuying
2018/03/13 全球购物
特色蛋糕店创业计划书
2014/01/28 职场文书
护理专科毕业生自荐书范文
2014/02/19 职场文书
中国入世承诺
2014/04/01 职场文书
2014年大学教师工作总结
2014/12/02 职场文书
幼儿园教师求职信
2015/03/20 职场文书
jackson json序列化实现首字母大写,第二个字母需小写
2021/06/29 Java/Android
利用JavaScript写一个简单计算器
2021/11/27 Javascript