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字典键值对的添加和遍历方法
Sep 11 Python
Python实现拷贝多个文件到同一目录的方法
Sep 19 Python
Python使用Matplotlib实现雨点图动画效果的方法
Dec 23 Python
浅谈django rest jwt vue 跨域问题
Oct 26 Python
python实现电子产品商店
Feb 26 Python
python遍历文件目录、批量处理同类文件
Aug 31 Python
基于Python测试程序是否有错误
May 16 Python
pandas.DataFrame.drop_duplicates 用法介绍
Jul 06 Python
python基于tkinter制作下班倒计时工具
Apr 28 Python
教你用python实现一个无界面的小型图书管理系统
May 21 Python
Python爬虫基础之初次使用scrapy爬虫实例
Jun 26 Python
python利用while求100内的整数和方式
Nov 07 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使用DES进行加密与解密的方法详解
2013/06/06 PHP
解析CI的AJAX分页 另类实现方法
2013/06/27 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
Zend Framework校验器Zend_Validate用法详解
2016/12/09 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
2020/03/03 PHP
node.js实现逐行读取文件内容的代码
2014/06/27 Javascript
使用iojs的jsdom库实现同步系统时间
2015/04/20 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
2015/12/13 Javascript
js实现跨域的多种方法
2015/12/25 Javascript
JavaScript时间操作之年月日星期级联操作
2016/01/15 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
Element InputNumber 计数器的实现示例
2020/08/03 Javascript
python发送arp欺骗攻击代码分析
2014/01/16 Python
Python高级应用实例对比:高效计算大文件中的最长行的长度
2014/06/08 Python
Python转换HTML到Text纯文本的方法
2015/01/15 Python
Python fileinput模块使用实例
2015/05/28 Python
Python的dict字典结构操作方法学习笔记
2016/05/07 Python
Python闭包的两个注意事项(推荐)
2017/03/20 Python
Python机器学习之决策树算法实例详解
2017/12/06 Python
Python切片操作深入详解
2018/07/27 Python
使用Py2Exe for Python3创建自己的exe程序示例
2018/10/31 Python
对python读写文件去重、RE、set的使用详解
2018/12/11 Python
对python GUI实现完美进度条的示例详解
2018/12/13 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
2019/08/05 Python
python实现小世界网络生成
2019/11/21 Python
python删除某个目录文件夹的方法
2020/05/26 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
2020/06/02 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
css3新增颜色表示方式分享
2014/04/15 HTML / CSS
CSS3不透明度实例讲解
2016/04/26 HTML / CSS
澳大利亚拥有最佳跳伞降落点和最好服务的跳伞项目运营商:Skydive Australia
2018/03/05 全球购物
应届生法律求职信
2013/10/22 职场文书
竞选文艺委员演讲稿
2014/04/28 职场文书
关于对大人不礼貌的检讨书
2014/09/29 职场文书
有关朝花夕拾的读书笔记
2015/06/29 职场文书
Golang 遍历二叉树
2022/04/19 Golang