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运算符重载用法实例
May 28 Python
python WindowsError的错误代码详解
Jul 23 Python
Python 装饰器使用详解
Jul 29 Python
pandas.dataframe按行索引表达式选取方法
Oct 30 Python
Python设计模式之模板方法模式实例详解
Jan 17 Python
Pandas库之DataFrame使用的学习笔记
Jun 21 Python
深入浅析python3中的unicode和bytes问题
Jul 03 Python
django之从html页面表单获取输入的数据实例
Mar 16 Python
django模板获取list中指定索引的值方式
May 14 Python
Python如何实现远程方法调用
Aug 07 Python
Python 如何操作 SQLite 数据库
Aug 17 Python
Python 数据可视化之Bokeh详解
Nov 02 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
打造计数器DIY三步曲(上)
2006/10/09 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
2013/06/21 PHP
php curl模拟post请求小实例
2013/11/13 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
2021/03/09 Servers
JQERY limittext 插件0.2版(长内容限制显示)
2010/08/27 Javascript
JS date对象的减法处理实现代码
2010/12/28 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
js中escape对应的C#解码函数 UrlDecode
2012/12/16 Javascript
选择器中含有空格在使用示例及注意事项
2013/07/31 Javascript
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
jQuery子属性过滤选择器用法分析
2015/02/10 Javascript
prototype.js常用函数详解
2016/06/18 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
JS图片预加载插件详解
2017/06/21 Javascript
nodejs实现大文件(在线视频)的读取
2020/10/16 NodeJs
VueJs监听window.resize方法示例
2018/01/17 Javascript
在微信小程序里使用watch和computed的方法
2018/08/02 Javascript
从组件封装看Vue的作用域插槽的实现
2019/02/12 Javascript
解决ele ui 表格表头太长问题的实现
2019/11/13 Javascript
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
解决Python中报错TypeError: must be str, not bytes问题
2020/04/07 Python
详解python的super()的作用和原理
2020/10/29 Python
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
英国体育器材进口商店:UK Sport Imports
2017/03/14 全球购物
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
教师对学生的寄语
2014/04/03 职场文书
大学学风建设方案
2014/05/04 职场文书
维稳承诺书
2015/01/20 职场文书
2015年六一儿童节活动方案
2015/05/05 职场文书
2016暑期社会实践心得体会范文
2016/01/14 职场文书
MySQL Router实现MySQL的读写分离的方法
2021/05/27 MySQL
python playwrigh框架入门安装使用
2022/07/23 Python