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将MongoDB里的ObjectId转换为时间戳的方法
Mar 13 Python
Python的迭代器和生成器
Jul 29 Python
Python实现聊天机器人的示例代码
Jul 09 Python
selenium+python自动化测试之鼠标和键盘事件
Jan 23 Python
对Python3 pyc 文件的使用详解
Feb 16 Python
python文件读写代码实例
Oct 21 Python
Python利用全连接神经网络求解MNIST问题详解
Jan 14 Python
jupyter notebook实现显示行号
Apr 13 Python
解决numpy矩阵相减出现的负值自动转正值的问题
Jun 03 Python
Keras实现DenseNet结构操作
Jul 06 Python
python中翻译功能translate模块实现方法
Dec 17 Python
PyCharm常用配置和常用插件(小结)
Feb 06 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的宝库目录--PEAR
2006/10/09 PHP
PHP动态柱状图实现方法
2015/03/30 PHP
PHP合并discuz用户脚本的方法
2015/08/04 PHP
PHP设计模式之工厂方法设计模式实例分析
2018/04/25 PHP
在html页面中包含共享页面的方法
2008/10/24 Javascript
JavaScript 放大镜 放大倍率和视窗尺寸
2011/05/09 Javascript
面向对象的Javascript之三(封装和信息隐藏)
2012/01/27 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
基于JQuery的类似新浪微博展示信息效果的代码
2012/07/23 Javascript
Jquery下EasyUI组件中的DataGrid结果集清空方法
2014/01/06 Javascript
jquery实现弹出层遮罩效果的简单实例
2014/03/03 Javascript
js字符串日期yyyy-MM-dd转化为date示例代码
2014/03/06 Javascript
JS生成随机字符串的多种方法
2014/06/10 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
BootStrap与validator 使用笔记(JAVA SpringMVC实现)
2016/09/21 Javascript
ES6概念 ymbol.for()方法
2016/12/25 Javascript
详解vue2路由vue-router配置(懒加载)
2017/04/08 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
AngularJS实现的省市二级联动功能示例【可对选项实现增删】
2017/10/26 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
2017/12/25 Javascript
vue-lazyload使用总结(推荐)
2018/11/01 Javascript
Python translator使用实例
2008/09/06 Python
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
2016/06/18 Python
Python性能提升之延迟初始化
2016/12/04 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
2017/05/16 Python
深入理解Python中的内置常量
2017/05/20 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
2018/09/02 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
Python实现桌面翻译工具【新手必学】
2020/02/12 Python
python多线程和多进程关系详解
2020/12/14 Python
美国时尚女装在线:Missguided
2016/12/03 全球购物
电子商务专业学生的自我鉴定
2013/11/28 职场文书
网页美工求职信范文
2014/04/17 职场文书
学生会自荐信
2019/05/16 职场文书