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 22 Python
python查看微信好友是否删除自己
Dec 19 Python
python开发利器之ulipad的使用实践
Mar 16 Python
浅谈django model postgres的json字段编码问题
Jan 05 Python
wxPython实现窗口用图片做背景
Apr 25 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
May 30 Python
修改默认的pip版本为对应python2.7的方法
Nov 06 Python
用python代码将tiff图片存储到jpg的方法
Dec 04 Python
ipad上运行python的方法步骤
Oct 12 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
Jan 16 Python
django 多数据库及分库实现方式
Apr 01 Python
numpy的Fancy Indexing和array比较详解
Jun 11 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的ob_start();控制您的浏览器cache!
2006/11/25 PHP
全新的PDO数据库操作类php版(仅适用Mysql)
2012/07/22 PHP
使用php+swoole对client数据实时更新(一)
2016/01/07 PHP
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
php实现微信支付之现金红包
2018/05/30 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
2019/04/15 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
jQuery 连续列表实现代码
2009/12/21 Javascript
js动态创建、删除表格示例代码
2013/08/07 Javascript
jquery 合并内容相同的单元格(示例代码)
2013/12/13 Javascript
jquery序列化表单去除指定元素示例代码
2014/04/10 Javascript
简单的jquery左侧导航栏和页面选中效果
2014/08/21 Javascript
在JavaScript中模拟类(class)及类的继承关系
2016/05/20 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
2016/06/21 Javascript
Bootstrap table使用方法记录
2017/08/23 Javascript
nodejs对express中next函数的一些理解
2017/09/08 NodeJs
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
2018/01/25 jQuery
React Form组件的实现封装杂谈
2018/05/07 Javascript
在iFrame子页面里实现模态框的方法
2018/08/17 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
2018/09/14 Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
2019/11/20 Javascript
JS实现简易留言板(节点操作)
2020/03/16 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
跟老齐学Python之折腾一下目录
2014/10/24 Python
pyinstaller打包单个exe后无法执行错误的解决方法
2019/06/21 Python
Python pexpect模块及shell脚本except原理解析
2020/08/03 Python
Python txt文件常用读写操作代码实例
2020/08/03 Python
吉尔德利巧克力公司:Ghirardelli Chocolate Company
2019/03/27 全球购物
家具促销活动方案
2014/02/16 职场文书
合同意向书范本
2014/07/30 职场文书
2015新学期开学寄语
2015/02/26 职场文书
冰雪公主观后感
2015/06/16 职场文书
师德培训心得体会2016
2016/01/09 职场文书
详解Node.js如何处理ES6模块
2021/05/15 Javascript